鱼C论坛

 找回密码
 立即注册
查看: 1934|回复: 8

[已解决]《极客Python之效率革命》,openpyxl模块问题

[复制链接]
发表于 2019-10-26 23:58:42 | 显示全部楼层 |阅读模式
30鱼币
大佬们,我现在这里有两个excel文件:Bundles.xslx,  Inventory.xslx
我现在想把两个文件合并到一起,并且保留两个excel的所有数据,就像这样
055641tftm91z2zttm92c7.png
我之前用了openpyxl模块,但是不管怎么复制,其中一个excel文件都会覆盖掉另外一个,以下是代码
  1. import openpyxl
  2. wb = openpyxl.load_workbook('/Users/shenshuaichen/Desktop/Bundles.xlsx')
  3. wb1 = openpyxl.load_workbook('/Users/shenshuaichen/Desktop/Inventory (1).xlsx')

  4. ws = wb['KitComponentResults']
  5. ws1 = wb1['DailyInventoryReportResults']

  6. for i, row in enumerate(ws.iter_rows()):
  7.     for j, cell in enumerate(row):
  8.         ws1.cell(row = i + 1, column=j+1, value = cell.value)
  9. wb1.save('/Users/shenshuaichen/Desktop/Inventory.xlsx')
复制代码

最佳答案
2019-10-26 23:58:43
本帖最后由 XiaoPaiShen 于 2019-10-28 08:33 编辑

假设两个原始的Excel文件中,都是只有一个表单‘Sheet’
  1. import openpyxl

  2. def create_sheet(sheet_name, workbook):
  3.     # 创建表单
  4.     if sheet_name in workbook.sheetnames:
  5.         del workbook[sheet_name]

  6.     ws_sheet = workbook.create_sheet(title = sheet_name)
  7.     return ws_sheet

  8. def write_content(ws_source, ws_target):
  9.     content = []
  10.     for row in ws_source.iter_rows():
  11.         row_con = [row[i].value for i in range(len(row))]
  12.         content.append(row_con)

  13.     for row in content:
  14.         ws_target.append(row)                  

  15. def main(file_name):
  16.     bundles_file_name = 'Bundles.xlsx'
  17.     inventory_file_name = 'Inventory.xlsx'

  18.     wb_bun = openpyxl.load_workbook(bundles_file_name)
  19.     ws_bun = wb_bun['Sheet']

  20.     wb_inv = openpyxl.load_workbook(inventory_file_name)
  21.     ws_inv = wb_inv['Sheet']

  22.     wb_target = openpyxl.Workbook()
  23.     ws_bundles = create_sheet('Bundles', wb_target)
  24.     ws_inventory = create_sheet('Inventory', wb_target)

  25.     write_content(ws_bun, ws_bundles)
  26.     write_content(ws_inv, ws_inventory)

  27.     wb_target.save(file_name)


  28. if __name__ == '__main__':
  29.     file_name = 'mergedfile.xlsx'
  30.     main(file_name)
复制代码

最佳答案

查看完整内容

假设两个原始的Excel文件中,都是只有一个表单‘Sheet’
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-26 23:58:43 | 显示全部楼层    本楼为最佳答案   
本帖最后由 XiaoPaiShen 于 2019-10-28 08:33 编辑

假设两个原始的Excel文件中,都是只有一个表单‘Sheet’
  1. import openpyxl

  2. def create_sheet(sheet_name, workbook):
  3.     # 创建表单
  4.     if sheet_name in workbook.sheetnames:
  5.         del workbook[sheet_name]

  6.     ws_sheet = workbook.create_sheet(title = sheet_name)
  7.     return ws_sheet

  8. def write_content(ws_source, ws_target):
  9.     content = []
  10.     for row in ws_source.iter_rows():
  11.         row_con = [row[i].value for i in range(len(row))]
  12.         content.append(row_con)

  13.     for row in content:
  14.         ws_target.append(row)                  

  15. def main(file_name):
  16.     bundles_file_name = 'Bundles.xlsx'
  17.     inventory_file_name = 'Inventory.xlsx'

  18.     wb_bun = openpyxl.load_workbook(bundles_file_name)
  19.     ws_bun = wb_bun['Sheet']

  20.     wb_inv = openpyxl.load_workbook(inventory_file_name)
  21.     ws_inv = wb_inv['Sheet']

  22.     wb_target = openpyxl.Workbook()
  23.     ws_bundles = create_sheet('Bundles', wb_target)
  24.     ws_inventory = create_sheet('Inventory', wb_target)

  25.     write_content(ws_bun, ws_bundles)
  26.     write_content(ws_inv, ws_inventory)

  27.     wb_target.save(file_name)


  28. if __name__ == '__main__':
  29.     file_name = 'mergedfile.xlsx'
  30.     main(file_name)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-27 00:58:15 | 显示全部楼层
应该将两个文件写到一个新建的工作簿里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-10-27 01:02:15 | 显示全部楼层
jay_jiang 发表于 2019-10-27 00:58
应该将两个文件写到一个新建的工作簿里

应该怎么写呀?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-27 14:07:55 | 显示全部楼层
厉害,我要是也会就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-27 15:12:02 | 显示全部楼层
https://www.cnblogs.com/zlhuan/p/8011304.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-28 15:46:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-28 17:36:59 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-10-29 01:25:12 | 显示全部楼层
谢谢大佬们
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-3 22:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表