首页 > 解决方案 > Excel错误可能是由熊猫写作或大数据引起的?需要建议

问题描述

我正在读取多个 xml 文件,提取一些数据,然后用我的数据形成一个熊猫数据框。这些是我做的主要步骤:

  1. 打开一个xml文件
  2. 提取一些元素
  3. 使用提取的元素创建一个熊猫数据框
  4. 将结果附加到名为“output.xlsx”的excel文件中(在python中使用下面的代码)

对我拥有的所有 xml 文件重复我的步骤(15gb 的初始数据,通常有 100MB 的有价值的文本数据)

这是我在输出 excel 文件中附加数据帧的 python 代码:

book = load_workbook('output.xlsx')
writer = pd.ExcelWriter('output.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = {ws.title: ws for ws in book.worksheets}
startrow = writer.sheets['Sheet1'].max_row
output.to_excel(writer, startrow=startrow,index = False, header = False)
writer.save()

当我在 Excel 中打开“output.xlsx”时,我收到一条提示消息“我们发现“output.xlsx”中的某些内容存在问题。您希望我们尽量恢复吗?有或没有的答案

这是excel生成的日志文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> 
<logFileName>error001280_01.xml</logFileName><summary>Errors were detected in 
 file 'D:\JUPYWORKDIR\2009Results\output.xlsx'</summary><repairedRecords> 
<repairedRecord>Repaired Records: String properties from /xl/worksheets/sheet1.xml part
</repairedRecord></repairedRecords></recoveryLog>

我担心将结果保存为 excel 格式会损坏我的数据,我以后会用 pandas 读取“output.xlsx”以便进行一些数据分析,这个问题会影响我以后的分析吗?我想知道为什么会产生这个问题,我应该将我的数据保存在 CSV 中吗?有什么建议么?

附言。使用python代码检查“output.xlsx”的最后一行,当我在pandas Dataframe中导入excel文件时,行数相同,最后检查Microsoft excel的“恢复文件”的最后一行我仍然发现相同行数,所以我认为这是 Microsoft excel 的一般错误,因为数据很大,但我不确定

标签: pythonexcelxmlpandasdataframe

解决方案


我也遇到了同样的问题,至少花了一个小时搜索来修复它,只有 1 处更改并得到修复,而不是使用 writer.save(),尝试使用 writer.close(),它应该可以解决问题。

修改了上面提到的代码:

options = {}
options['strings_to_formulas'] = False
options['strings_to_urls'] = False
book = load_workbook('output.xlsx')
writer = pd.ExcelWriter('output.xlsx', engine='openpyxl',options=options)
writer.book = book
writer.sheets = {ws.title: ws for ws in book.worksheets}
startrow = writer.sheets['Sheet1'].max_row
output.to_excel(writer, startrow=startrow,index = False, header = False)
writer.close()

推荐阅读