Converti xlsx in xls nello script della shell di linux


14

Devo convertire il file ".xlsx" in ".xls" usando il comando shell.

Nel mio lavoro attualmente stiamo usando il comando xlsx2csv ma ​​ora il requisito è stato modificato e dobbiamo convertire tutti i file ".xlsx" in file ".xls" per ulteriori calcoli.

Per questo, Qualcuno del mio lavoro ha sviluppato un comando che può convertire ".xlsx" in ".xls" ma che è applicabile solo per un foglio.

Abbiamo più fogli in un unico file.

Grazie in anticipo....


Può anche essere fatto usando la libreria pyxl, questo fa il contrario: stackoverflow.com/questions/9918646/how-to-convert-xls-to-xlsx
Marco

Risposte:


20

Se installi LibreOffice, puoi usare il seguente comando:

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

o semplicemente:

libreoffice --convert-to xls myfile.xlsx

nella versione recente (> = 4.5) dove --convert-toimplica --headless.

Questo creerà myfile.xls e manterrà l'originale myfile.xlsx , quindi probabilmente dovrai fare una pulizia dopo aver convalidato la conversione.


Questa opzione è molto buona, ma penso che ci sia un problema, apre l'istanza di libreoffice e la converte in file ".xls". C'è qualche altra opzione che non aprirà libreoffice e sarà ancora in grado di convertire il file ".xls"? Puoi aiutarmi con questo ? @forquare
Prem Joshi il

1
La pagina Man di @PremJoshi dice: "[--convert-to] implica - senza testa". quindi la GUI non è aperta. Tuttavia, quando lo si avvia per la prima volta dopo l'avvio, potrebbe mostrare una schermata iniziale o qualcosa del genere mentre registra i servizi (a seconda del desktop).
Lgeorget,

1
@Igeorget! l'opzione "--headless" ha funzionato per me! questa era la risposta esatta alla mia domanda.
Prem Joshi il

3
Il commit che ha --convert-toimplicato --headlessè gerrit.libreoffice.org/… (versione 4.4). Nelle versioni precedenti, entrambe le opzioni devono essere passate.
Lgeorget,

1
Prestare attenzione al limite di riga 65535 in formato xls, poiché questo comando non stampa alcun messaggio di avviso se il file xlsx supera tale limite (verrà generato un file di riga 65535 che non corrisponde all'originale, senza preavviso)
golimar

6

puoi anche provare ssconvertlo strumento di conversione compagno di gnumeric

ssconvert in.xlsx out.xls

(come al solito, vedi man ssconvert)

Per i casi normali , va bene. Se il file di input è molto avanzato in entrambi i convertitori basati su (libreoffice e gnumeric), alcuni dettagli potrebbero andare persi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.