So bearbeiten Sie eine Excel-Datei (xlsx) mit der Linux-Shell

11

Gibt es eine Möglichkeit (Tool), XLSX-Dateien mit der Linux-Shell zu bearbeiten? Was ich brauche, ist eine Möglichkeit, die letzten drei nicht leeren Zeilen aus dem ersten Arbeitsblatt zu entfernen.

Ich weiß, dass XLSX nur eine Zip-Datei ist, die mit verschiedenen XML-Dateien gepackt ist, die ich individuell bearbeiten kann. Ich möchte jedoch nach Möglichkeit vermeiden, die XML-Dateien selbst zu analysieren und zu ändern.

Bojan Hrnkas
quelle

Antworten:

14

Meine Idee ist ein Python-Skript wie dieses:

import pandas as pd
filename=argv[1]
df = pd.read_excel(filename,sheet_name="Sheet1").ix[:-3] ## read the xlsx without last 3 rows to a dataframe
df.write_excel("output_sheet.xlsx") #write dataframe to xlsx file

um "Nicht-Leere" zu überprüfen, können Sie verwenden df.notna()

DDS
quelle
Klingt vielversprechend - werde es versuchen. Nur um sicher zu gehen - df.ix [: - 3] - werden die letzten drei nicht leeren Zeilen gelöscht? Weil ein Excel-Blatt viele leere Zeilen enthält, wenn Sie sich die XML-Datei in der XLSX ansehen.
Bojan Hrnkas
2
Es löscht die letzten 3 Zeilen. leere Zeilen nach der letzten nicht leeren Zeile werden ignoriert. Der Einfachheit halber hier: pandas.pydata.org/pandas-docs/version/0.22/generated/… ist eine Referenz des Pandas-Datenrahmens
DDS
-3

Libreoffice (und wahrscheinlich auch OpenOffice) kann von Excel erstellte XLSX-Dateien lesen. Wenn Sie nicht viele Dateien auf diese Weise verarbeiten müssen, ist es am einfachsten, dies manuell in Libreoffice zu tun. Wenn Sie viele Dateien haben und wirklich eine automatisierte Lösung benötigen, ist Libreoffice skriptfähig. Lesen Sie die API-Dokumente oder beginnen Sie mit einer Einführung in weitere Lernprogramme .

Nick
quelle
2
Das funktioniert bei mir nicht, weil ich etwas auf einem Headless-Server automatisieren möchte.
Bojan Hrnkas
2
@Rohr. Es ist möglich, LibreOffice im Headless-Modus auszuführen, nicht wahr?
TRiG
3
@TRiG Sicher ist es das, und eine Antwort, die genau beschreibt, wie das geht, wäre eine großartige Antwort. Dies ist nicht diese Antwort.
Pipe
1
@pipe LibreOffice als "einmaliges GUI-Tool" zu bezeichnen, ist ziemlich extrem. Es ist im Grunde das Gegenteil von dem, was es wirklich ist.
Grill
1
Das Öffnen von LibreOffice im Headless-Modus ist so einfach wie das Verwenden der --headlessOption.
Johnny