数据丢失,使用熊猫在具有多个工作表的.xlsx文件中更改格式,同时在现有的.xlsx文件中添加新工作表时使用openpyxl

时间:2018-08-29 10:05:07

标签: python excel python-3.x pandas openpyxl

我有一个Final.xlsx,其中包含多个工作表-shee1, sheet2 ,sheet3,每个工作表都有一些图形和数据。我还有另一个文件file5.xlsx,我想在选项卡的Final.xlsx中添加。以下代码可以正常工作,但是Final.xlsx现有工作表数据已丢失(内容,格式,grpahs等)。需要帮助解决此问题。

    import pandas
    from openpyxl import load_workbook

    book = load_workbook('foo.xlsx')
    writer = pandas.ExcelWriter('foo.xlsx', engine='openpyxl') 
    writer.book = book
    writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
    df1=pd.read_excel('file5.xlsx')
    df1.to_excel(writer, "new",index=False)

    writer.save()

1 个答案:

答案 0 :(得分:1)

内部,Pandas使用xlrd库读取xlsx文件。这个库很快,但是,因为它本质上是固定在对BIFF格式的支持上,所以对OOXML的支持是有限的。看到Pandas对图表一无所知,反正无法保留它们。

openpyxl在openpyxl.utils.dataframe中提供了实用程序,用于在XLSX的行和Pandas Dataframe之间进行切换,从而使您在工作时可以完全控制,同时几乎将所有其他内容保留在文件中。但是,就您而言,您甚至不需要熊猫,因为您可以简单地循环“ file5.xlsx”中的单元格并将它们复制到其他文件中。