【问题标题】:Load sheet in an excel file and save it to another different excel file在 excel 文件中加载工作表并将其保存到另一个不同的 excel 文件
【发布时间】:2019-08-20 01:46:41
【问题描述】:

使用 python 3,我正在尝试将现有 excel 文件中的工作表附加到另一个 excel 文件。

我在这个 excel 文件中有条件格式,所以我不能只使用 pandas。

from openpyxl import load_workbook

final_wb = load_workbook("my_final_workbook_with_lots_of_sheets.xlsx")
new_wb = load_workbook("workbook_with_one_sheet.xlsx")

worksheet_new = new_wb['Sheet1']
final_wb.create_sheet(worksheet_new)

final_wb.save("my_final_workbook_with_lots_of_sheets.xlsx")

此代码不起作用,因为 .create_sheet 方法只会创建一个新的空白工作表,我想将从其他文件加载的 worksheet_new 插入到 final_wb

【问题讨论】:

  • 你做不到。工作表包含特定于工作簿的信息,这意味着它们不能在工作簿之间复制或移动。

标签: python openpyxl excel-automation


【解决方案1】:

在 openpyxl 上查看这个问题,讨论这个相同的功能:https://bitbucket.org/openpyxl/openpyxl/issues/171/

它目前不是 openpyxl 的内置函数,但该线程有一些可用的解决方法可能适合您的需求。

编辑:还在这里发现了一个可能重复的问题:Copy worksheet from one workbook to another one using Openpyxl

【讨论】:

    【解决方案2】:

    我找到了一个使用pandas.ExcelWriter的解决方案,它也在后台使用了xlrd和openpyxl:

    我创建了两个示例 excel 文件:

    • test1.xlsx
    • test2.xlsx

    并将test1.xlsx 的第一张表附加到test2.xlsx

    In [1]: import pandas as pd                                                                              
    
    In [2]: from pandas import ExcelWriter                                                                   
    
    In [3]: with ExcelWriter("test2.xlsx", mode="a") as writer: 
       ...:     df1 = pd.read_excel("test1.xlsx", sheet_name=0) 
       ...:     df1.to_excel(writer, sheet_name="New sheet name") 
    

    重要的是mode="a",它切换附加模式。

    【讨论】:

    • 对不起,我开玩笑地将熊猫称为真正的熊。像动物一样。在我的评论bear == pandas
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 2014-08-06
    • 2014-08-25
    • 2010-09-18
    相关资源
    最近更新 更多