excel在打开用openpyxl创建的文件时遇到问题

2024-05-16 10:38:15 发布

您现在位置:Python中文网/ 问答频道 /正文

如果您不能提供建设性的解决方案,请不要将其标记为重复,因为我还没有找到任何解决方案,它很少说明您对提供帮助的兴趣

Excel拒绝该公式,但允许使用其他单元格中的其他字符串。我使用的是英文公式的名称,并且尝试了逗号和分号,结果相同。 公式由标记模板组成,并具有多个嵌套条件。 守则的一部分是:

wb = Workbook()
sheet= wb.active
l=str(sheet.max_row+1)
formula='=CONCATENATE("**"&{}&"**"&CHAR(10)&CHAR(10)&"- **Ponente:** "&{}&CHAR(10)&"- **Fuente:** "&{};IF(EXACT({};"");"";CHAR(10)&"- **ID:** "&{});CHAR(10)&"- **Web:** "&{}&CHAR(10)&"- **Idioma:** "&{}&CHAR(10)&"- **Etiquetas:** "&{};IF(EXACT({};"");;CHAR(10)&"- **Fecha:** "&{});IF(EXACT({};"");;CHAR(10)&"- **Notas:** "&{}))'.format("A"+l,"B"+l,"C"+l,"D"+l,"D"+l,"E"+l,"H"+l,"G"+l,"F"+l,"F"+l,"I"+l,"I"+l)
print (formula)
data={
    "Título":[titulo], 
    "Autor":[profesor],
    "Fuente":[plataforma],
    "ID":[id],
    "Web":[url],
    "Fecha":[fecha_esp],
    "Etiquetas":[etiquetas],
    "Idioma":[idioma],
    "Notas":[notas],
    "Plantilla":[formula]
}
dataframe_pandas = pd.DataFrame(data)
for x in dataframe_to_rows(dataframe_pandas, index=False, header=False):
    sheet.append(x)
wb.save(filename)

控制台输出显示以下公式:

=CONCATENATE("**"&A2&"**"&CHAR(10)&CHAR(10)&"- **Ponente:** "&B2&CHAR(10)&"- **Fuente:** "&C2;IF(EXACT(D2;"");"";CHAR(10)&"- **ID:** "&D2);CHAR(10)&"- **Web:** "&E2&CHAR(10)&"- **Idioma:** "&H2&CHAR(10)&"- **Etiquetas:** "&G2;IF(EXACT(F2;"");;CHAR(10)&"- **Fecha:** "&F2);IF(EXACT(I2;"");;CHAR(10)&"- **Notas:** "&I2))

此公式被Excel拒绝,但如果我复制并粘贴到Excel字段中,则没有问题

那么,问题是什么

更新

本期之前已经出版,但它被标记为重复,甚至没有试图提供帮助。现在,我非常感谢三位作出回应的人

问题在于python中的公式。我替换了所有分号,但我肯定有一些打字错误,后来我改正了,再也没有尝试过。但根据提供的证据,我又试了一次,成功了


Tags: 标记webidifexcelexactsheet公式
2条回答

你可以试试ExcelWriter

from pandas import ExcelWriter
writer = pd.ExcelWriter('output.xlsx')
# write dataframe to excel
df_marks.to_excel(writer)
# save the excel
writer.save()
writer.close()

尝试将公式中的semicolons替换为,,然后进行检查

我在libreoffice中手动尝试,并将其与自动生成的公式进行比较。两者在,上都有所不同,因为它会自动将;更改为,。然后我在python文件中将;替换为,。自动生成的excel也很好

enter image description here

相关问题 更多 >