【问题标题】:Writing dataframes to multiple sheets in existing Excel file. Get 'We Found Problem with some content in X.xlsx' when opening excel file将数据框写入现有 Excel 文件中的多个工作表。打开 excel 文件时出现“我们发现 X.xlsx 中的某些内容存在问题”
【发布时间】:2020-01-18 19:06:28
【问题描述】:

我正在根据现有的 excel 文件创建一些 dfs。然后,我将这些 df 中的每一个写入到不同(现有 excel)文件中自己单独的工作表中。脚本执行良好,但是当我打开写入 dfs 的 excel 文件时,我收到以下错误消息:“我们发现 'X.xlsx' 中的某些内容存在问题...

我尝试过不使用 openpyxl,因为类似帖子上的几个答案表明您不必使用 openpyxl;但是,pandas 文档表明如果写入 .xlsx,您需要使用 openpyxl。

import pandas as pd
from openpyxl import load_workbook

df_complete = pd.read_excel('completed_contracts_2019.xlsx', 
index_col=None)
df_wip_out = pd.read_excel('wip19.xlsx', index_col=None)
df_in = pd.read_excel('wip_18_to_19.xlsx', index_col=None)

with pd.ExcelWriter('Final_Template.xlsx', engine='openpyxl') as writer:
    writer.book = load_workbook('Final_Template.xlsx')
    df_complete.to_excel(writer, sheet_name='complete', index=False)
    df_wip_out.to_excel(writer, sheet_name='wipout', index=False)
    df_in.to_excel(writer, sheet_name='wipin', index=False)

我希望打开 excel 文件而不会出现错误。

【问题讨论】:

  • 您能否将其保存到不同工作表中的新 Excel 文件中,而不是打开现有的? (只是为了丢弃 df 到 excel 格式的问题)
  • 如果要写入现有文件,则必须使用 openpyxl。但是,基本上你可以在这里用 openpyxl 做任何你想做的事情。根本不需要熊猫。只需使用只读模式阅读工作簿。
  • @CeliusStingher 我可以保存到新的 excel 文件,但是打开新的 excel 文件时出现同样的错误。
  • @CharlieClark 问题是我正在写入的文件。一些工作表具有连接到外部源的表。一旦我“取消链接”这些,脚本就可以工作了,当我打开脚本写入的文件时,我没有收到错误。
  • openpyxl 将删除那些带有keep_links=False 参数的链接。

标签: excel pandas openpyxl


【解决方案1】:

用openpyxl遇到同样的问题,但实际上可能不是openpyxl的问题。

根据我的经验,在我得到一个弹出窗口“警报我们发现...中的某些内容存在问题”之后。看看是什么错误,最后发现,在Excel中如果数据格式为“General”,不能输入以“==”开头的字符串,否则Excel会认为是语法错误。但是如果数据格式是“文本”,就没有问题了。

两种解决方案: 1)如果您确定某些字符串以“==”开头,并且在您的情况下没有必要,您可能必须更改第一个“=”或在开头插入另一个字符。然后用 openpyxl 将其写入 xls 文件。这是我申请的。 2)或者您可以使用openpyxl将单元格的数据格式(可能是“number_format”)设置为“Text”。我没有成功尝试这种方式,因为手动将单元格数据格式设置为“文本”后,用 openpyxl 读取其“数字格式”,得到“@”的值(不是“文本”)。但是当我使用openpyxl将“number_format”设置为“@”,然后在其中写入“==”时,它仍然遇到了问题。

除了“==”之外,不确定其他字符串是否也会被 Excel 视为语法错误。无论如何,如果您碰巧因为“==”而遇到问题,您可以尝试第一个解决方案作为解决方法。

【讨论】:

    猜你喜欢
    • 2020-06-28
    • 2016-10-16
    • 1970-01-01
    • 2022-12-28
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    相关资源
    最近更新 更多