Ubah xlsx menjadi xls dalam skrip shell linux

14

Saya perlu mengonversi file ".xlsx" menjadi ".xls" menggunakan perintah shell.

Pada pekerjaan saya, kami saat ini menggunakan perintah xlsx2csv tetapi sekarang persyaratan telah diubah dan kami perlu mengubah semua file ".xlsx" menjadi file ".xls" untuk perhitungan lebih lanjut.

Untuk itu, Beberapa orang di tempat kerja saya telah mengembangkan satu perintah yang dapat mengubah ".xlsx" menjadi ".xls" tetapi, itu hanya berlaku untuk satu lembar ..

Kami memiliki beberapa lembar dalam satu file.

Terima kasih sebelumnya....

Prem Joshi
sumber
Hal ini juga dapat dilakukan dengan menggunakan pustaka pyxl, ini melakukan yang sebaliknya: stackoverflow.com/questions/9918646/how-to-convert-xls-to-xlsx
Mark

Jawaban:

20

Jika Anda menginstal LibreOffice, Anda dapat menggunakan perintah berikut:

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

atau hanya:

libreoffice --convert-to xls myfile.xlsx

dalam versi terbaru (> = 4.5) di mana --convert-totersirat --headless.

Ini akan membuat myfile.xls , dan menyimpan myfile.xlsx yang asli — jadi Anda mungkin perlu melakukan pembersihan setelah Anda memvalidasi konversi berhasil.

forquare
sumber
Opsi ini sangat bagus, tetapi saya pikir ada satu masalah, ini membuka contoh libreoffice dan kemudian mengubahnya menjadi file ".xls". Apakah ada opsi lain yang tidak akan membuka libreoffice dan masih dapat mengkonversi ke file ".xls"? dapatkah anda membantu saya dengan ini? @forquare
Prem Joshi
1
Halaman @PremJoshi Man mengatakan: "[--convert-to] menyiratkan --headless." jadi GUI tidak dibuka. Namun, ketika Anda meluncurkannya untuk pertama kali setelah boot, ini mungkin menampilkan layar splash atau sesuatu seperti itu saat mendaftar layanan (tergantung pada desktop Anda).
lgeorget
1
@ Igeorget! opsi "--kepala kosong" bekerja untuk saya! ini adalah jawaban tepat untuk pertanyaan saya.
Prem Joshi
3
Komit bahwa Made --convert-tomenyiratkan --headlessadalah gerrit.libreoffice.org/... (versi 4.4). Dalam versi sebelumnya, kedua opsi harus dilewati.
lgeorget
1
Waspadai batas xls format 65535 baris, karena perintah ini tidak mencetak pesan peringatan jika file xlsx melebihi batas itu (itu akan menghasilkan file baris 65535 yang tidak sesuai dengan aslinya, tanpa peringatan)
golimar
6

Anda juga dapat mencoba ssconvertalat konverter pengiring gnumerik

ssconvert in.xlsx out.xls

(seperti biasanya, lihat man ssconvert)

Untuk kasus normal , ini baik-baik saja. Jika file input sangat maju di konverter berbasis (libreoffice dan gnumeric), beberapa detail mungkin hilang.

Joao
sumber