最菜的小白鸟 2021-06-25 14:37 采纳率: 100%
浏览 80
已采纳

请问如何用Python将字典“值”写入与键名相同的sheet工作表指定区域,

import openpyxl as op


#  设置路径
path_1 = (r'E:\Python\shiyunxing\生产模板.xlsx')  #模板路径
path_2 = (r'E:\Python\shiyunxing\门窗表.xlsx')  #门窗表路径
path_3 = (r'E:\Python\shiyunxing\分析表.xlsx')  #保存路径


#以下代码用于获取“模板”数量并生产列表
list_mb_sheet = []
wb_1 = op.load_workbook(path_1)  #打开模板工作簿
mb_sheet = wb_1.worksheets
for i in mb_sheet:
    list_mb_sheet.append(i.title)
print(list_mb_sheet)


#生成门窗表列表
wb_2 = op.load_workbook(path_2)
ws = wb_2['门窗表']  #打开工作表
list_mcb = list(ws.values)
print(list_mcb)
#将列表转换成字典
dice_1 = {i[2]:i for i in list_mcb}
print(dice_1)


#生成分析表并保存
for i in list_mcb:  #遍历门窗表
    if i[1] in list_mb_sheet:  #如果门窗表中系列在模板中有
        sheet_name = i[2]      #工作表名字为门窗编号并提前设为一个变量
        fxb = wb_1.copy_worksheet(wb_1[i[1]])   #在模板中复制一个对应模板
        fxb.title = sheet_name  #将复制的模板命名为变量名
        wb_1.save(path_3)  #另存


#下面为删除模板
wb_3 = op.load_workbook(path_3)         #打开新生成的模板文件
wb_3_sheet = wb_3.worksheets            #获取工作表名称
for i in wb_3_sheet:                    #循环
    if i.title in list_mb_sheet:        #如果工作表名称在模板中包含
        del_sheet = wb_3[i.title]       #为包含的工作表名称设置变量
        wb_3.remove(del_sheet)          #根据变量删除对应工作表
wb_3.save(path_3)                       #按原路径保存


#如果字典中键名与sheet工作表名相同,将值写入sheet工作表指定行区域[A2:H2]

 

  • 写回答

2条回答 默认 最新

  • soar3033 2021-06-25 15:17
    关注
    for i in dice_1:
    	for j in mb_sheet:
    		if i==j.tilte:
    			for k in range(8):
    				j[2][k]=dice_1[i][k]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效