【发布时间】:2016-08-01 21:57:08
【问题描述】:
有人知道如何解决 OpenOffice Calc 无法正确处理单元格中的新行的问题吗?
我有一个 python 脚本,它通过 pandas 使用 openpyxl 动态生成一个 excel 工作簿。
脚本运行良好,但是当我在 OpenOffice 中查看包含换行符的单元格时,所有值都会重复多次。如果我使用 Microsoft Excel 查看器打开同一个文件,所有内容都会正确显示,并且如果我使用换行以外的字符(例如逗号、# 等),则两者都显示正常。
我有一个解决方法可以进入 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()
Element 数据会在 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 中查看时。
谢谢
【问题讨论】:
-
您的操作系统和 Office 版本是什么?
-
Windows 10,只是 Excel 查看器,但如前所述,在 Excel 中运行良好,只是在 OpenOffice (4.1.2) 中运行良好
标签: python openoffice-calc xlsxwriter