gpt4 book ai didi

python - openoffice calc - 换行导致单元格中的重复值(pandas/openpyxl)

转载 作者:太空宇宙 更新时间:2023-11-03 11:23:16 29 4
gpt4 key购买 nike

有谁知道如何解决 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()

Element 数据发生的情况是它在 OpenOffice Calc 单元格中显示如下:

Openoffice Cells

奇怪的是最后一项似乎是正确的

作为列表或通过 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 中查看时。

谢谢

最佳答案

我在 Windows 上使用 OpenOffice 4.1.2 时代码运行良好:

enter image description here

对于此屏幕截图,我双击第二行的底部将其展开。在此之前,它只是显示带有红色三角形的 element3。但这似乎与您描述的行为不同。

编辑:

好的,我现在可以确认问题了。如您所说,它与神秘的 18 件元素一起出现。看起来像是OpenOffice的一个bug,因为解压file.xlsx看到的XML文件没有太大区别。

我还尝试将 CR 和 LF 直接添加到 XML 文件中,但这只会导致:

enter image description here

这给我们留下了三个解决方案:

  1. 改用 LibreOffice,它没有这个问题(已测试 LO 5.1.0.3)。
  2. > Report the bug并等待新版本。
  3. 使用 OpenOffice 的首选 .ods 格式,而不是 MS Office 的首选格式。

关于python - openoffice calc - 换行导致单元格中的重复值(pandas/openpyxl),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38708775/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com