Kann jemand umgehen, ein Problem von OpenOffice Calc nicht neue Zeilen in Zellen richtig behandeln?openoffice calc - newline verursacht doppelten Wert in Zellen (Pandas/openpyxl)
Ich habe ein Python-Skript, das dynamisch eine Excel-Arbeitsmappe mit OpenPyxl über Pandas generiert.
Das Skript funktioniert gut, aber wenn ich Zellen in OpenOffice anzeigen, die Zeilenumbrüche enthalten, werden alle Werte mehrfach dupliziert. Wenn ich dieselbe Datei mit dem Microsoft Excel Viewer öffne, wird alles korrekt angezeigt, und wenn ich ein anderes Zeichen als eine neue Zeile verwende (z. B. Komma, # usw.), wird es auch in beiden angezeigt.
Ich habe eine Problemumgehung, in die Excel zu gehen und das zufällige Zeichen mit einem Makro zu ersetzen, aber das möchte ich vermeiden, wenn der Prozess wirklich vollständig automatisiert werden muss. Auch weil die Datei von einem anderen internen Tool verarbeitet wird, müssen diese Zellen mit einer neuen Zeile verarbeitet werden und ich kann das Zeichen nicht ändern.
Ich habe auch versucht, mit chr (10) und/oder chr (13), aber im ersten Fall wird es nur in der Ausgabe durch '\ n' wie erwartet ersetzt.
Der Code, den ich zur Zeit bin mit ähnelt:
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()
Was mit dem Element Daten geschieht, ist, dass es wie in der Openoffice Calc Zelle als etwas zeigt:
Seltsamerweise scheint das letzte Element korrekt zu sein
Die gleichen Daten, die als Liste oder über DataFrame.head() angezeigt werden, erscheinen in Ordnung:
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
Es ist nur, wenn es an die openpyxl-Bibliothek übergeben und in OpenOffice angezeigt wird.
Dank
Was ist Ihr Betriebssystem und die Version von Office? –
Windows 10, nur der Excel-Viewer, aber wie gesagt in Excel gut funktioniert nur nicht OpenOffice (4.1.2) – GuHuka