有没有人知道如何解决OpenOffice Calc无法正确处理单元格中新行的问题?
我有一个python脚本,它通过pandas使用openpyxl动态生成excel工作簿。
该脚本运行正常,但是当我在OpenOffice中查看包含换行符的单元格时,所有值都会重复多次。如果我使用Microsoft Excel Viewer打开相同的文件,则所有内容都会正确显示,如果我使用的是除新行之外的字符(例如逗号,#等),它们也会显示正常。
我有一个解决方法,进入excel并使用宏替换随机字符,但是如果可能的话,我希望避免这种情况,因为该过程确实需要完全自动化。另外,因为文件将由另一个内部工具处理,我确实需要使用新行处理这些单元格而且我无法更改字符。
我也尝试过使用chr(10)和/或chr(13),但在前一种情况下,它只是按照预期在'\ n'中被输出替换。
我目前使用的代码类似于:
test_list = []
for x in range(1,18):
test_list.append([
"value1",
"\n".join(['element1', 'element2', 'element3']),
"value3"
])
data_df = pd.DataFrame(test_list)
fn = r'/path/to/excel/file.xlsx'
writer = pd.ExcelWriter(fn, engine='xlsxwriter')
data_df.to_excel(writer, sheet_name='Data', index=False, header=0)
workbook = writer.book
worksheet = writer.sheets['Data']
worksheet.set_column('A:ZZ',50,
workbook.add_format({'text_wrap': True}))
writer.save()
元素数据的作用是它在OpenOffice Calc单元格中显示如下:
奇怪的是,最后一项似乎是正确的
查看列表或通过DataFrame.head()查看的相同数据显示正常:
pprint(test_list)
[['value1', 'element1\nelement2\nelement3', 'value3'],
['value1', 'element1\nelement2\nelement3', 'value3'],
['value1', 'element1\nelement2\nelement3', 'value3'],
['value1', 'element1\nelement2\nelement3', 'value3'],
['value1', 'element1\nelement2\nelement3', 'value3'],
['value1', 'element1\nelement2\nelement3', 'value3'],
...
['value1', 'element1\nelement2\nelement3', 'value3']]
data_df.head(18):
0 1 2
0 value1 element1\nelement2\nelement3 value3
1 value1 element1\nelement2\nelement3 value3
2 value1 element1\nelement2\nelement3 value3
...
15 value1 element1\nelement2\nelement3 value3
16 value1 element1\nelement2\nelement3 value3
它被传递到openpyxl库并在OpenOffice中查看。
由于
答案 0 :(得分:2)
在Windows上使用OpenOffice 4.1.2,代码工作正常:
对于此屏幕截图,我双击第二行的底部以展开它。在此之前,它只显示element3
红色三角形。但这似乎与你描述的行为不同。
修改强>:
好的,我现在可以确认问题了。如你所说,它出现了神秘数量的18项。它看起来像是OpenOffice中的一个错误,因为通过解压缩file.xlsx
查看的XML文件没有太大区别。
我还尝试将CR和LF直接添加到XML文件中,但这只会导致:
这给我们留下了三个解决方案:
.ods
格式,而不是MS Office的首选格式。答案 1 :(得分:0)