Konvertieren Sie xlsx in xls im Linux-Shell-Skript

14

Ich muss ".xlsx" -Datei mit dem Shell-Befehl in ".xls" konvertieren.

Bei meiner Arbeit verwenden wir derzeit den Befehl xlsx2csv, aber jetzt wurden die Anforderungen geändert und wir müssen alle ".xlsx" -Dateien zur weiteren Berechnung in ".xls" -Dateien konvertieren.

Dafür hat jemand bei meiner Arbeit einen Befehl entwickelt, der ".xlsx" in ".xls" konvertieren kann, der jedoch nur für ein Blatt gilt.

Wir haben mehrere Blätter in einer Datei.

Danke im Voraus....

Prem Joshi
quelle
Es kann auch die pyxl Bibliothek erfolgen verwenden, tut dies das Gegenteil: stackoverflow.com/questions/9918646/how-to-convert-xls-to-xlsx
Mark

Antworten:

20

Wenn Sie LibreOffice installieren, können Sie den folgenden Befehl verwenden:

libreoffice --headless --convert-to xls myfile.xlsx

oder nur:

libreoffice --convert-to xls myfile.xlsx

in der letzten Version (> = 4.5), wo --convert-toimpliziert --headless.

Dadurch wird myfile.xls erstellt , und die ursprüngliche Datei myfile.xlsx wird beibehalten. Sie müssen also wahrscheinlich eine Bereinigung durchführen, nachdem Sie überprüft haben, dass die Konvertierung erfolgreich war.

forquare
quelle
Diese Option ist sehr gut, aber ich denke, es gibt ein Problem, es öffnet Libreoffice-Instanz und konvertiert es dann in ".xls" -Datei. Gibt es eine andere Option, die libreoffice nicht öffnet und trotzdem in die ".xls" -Datei konvertieren kann? kannst du mir dabei helfen ? @forquare
Prem Joshi
1
@PremJoshi Manpage sagt: "[--convert-to] impliziert --headless." die GUI wird also nicht geöffnet. Wenn Sie es jedoch nach dem Start zum ersten Mal starten, wird möglicherweise ein Begrüßungsbildschirm oder ähnliches angezeigt, während Dienste registriert werden (abhängig von Ihrem Desktop).
Lgeorget
1
@Igeorget! Option "--headless" hat bei mir funktioniert! Das war die genaue Antwort auf meine Frage.
Prem Joshi
3
Das Commit, das gemacht wurde --convert-to, --headlessist gerrit.libreoffice.org/… (Version 4.4). In früheren Versionen müssen beide Optionen übergeben werden.
Lgeorget
1
Beachten Sie das Zeilenlimit für das xls-Format 65535, da dieser Befehl keine Warnmeldung ausgibt, wenn die xlsx-Datei dieses Limit überschreitet (es wird eine 65535-Zeilendatei ausgegeben, die nicht dem Original entspricht, ohne Warnung)
golimar
6

Sie können auch ssconvertdas Companion Converter Tool von gnumeric ausprobieren

ssconvert in.xlsx out.xls

(wie immer siehe man ssconvert)

Im Normalfall ist dies in Ordnung. Wenn die Eingabedatei in (libreoffice- und gnumeric-) basierten Konvertern sehr fortgeschritten ist , können einige Details verloren gehen.

Joao
quelle