Konwertuj xlsx na xls w skrypcie powłoki Linux

14

Muszę przekonwertować plik „.xlsx” na „.xls” za pomocą polecenia powłoki.

W mojej pracy używamy obecnie polecenia xlsx2csv, ale teraz wymóg został zmieniony i musimy przekonwertować wszystkie pliki „.xlsx” na pliki „.xls” w celu dalszych obliczeń.

W tym celu jakiś facet w mojej pracy opracował jedno polecenie, które może konwertować „.xlsx” na „.xls”, ale dotyczy tylko jednego arkusza.

Mamy wiele arkuszy w jednym pliku.

Z góry dziękuję....

Prem Joshi
źródło
Można to również zrobić za pomocą biblioteki pyxl, robi to odwrotnie: stackoverflow.com/questions/9918646/how-to-convert-xls-to-xlsx
Mark

Odpowiedzi:

20

Jeśli zainstalujesz LibreOffice, możesz użyć następującego polecenia:

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

Lub tylko:

libreoffice --convert-to xls myfile.xlsx

w najnowszej wersji (> = 4.5), co --convert-tosugeruje --headless.

Spowoduje to utworzenie pliku myfile.xls i zachowanie oryginalnego pliku myfile.xlsx - więc prawdopodobnie będziesz musiał wykonać czyszczenie po sprawdzeniu poprawności konwersji.

forquare
źródło
Ta opcja jest bardzo dobra, ale myślę, że jest jeden problem, otwiera instancję libreoffice, a następnie konwertuje ją do pliku „.xls”. Czy jest jakaś inna opcja, która nie otworzy libreoffice i nadal będzie mogła przekonwertować na plik „.xls”? czy możesz mi z tym pomóc ? @forquare
Prem Joshi
1
Strona @PremJoshi Man mówi: „[--convert-to] oznacza - bezgłowy.” więc GUI nie jest otwarte. Jednak po uruchomieniu go po raz pierwszy po uruchomieniu może wyświetlać ekran powitalny lub coś podobnego podczas rejestrowania usług (w zależności od pulpitu).
lgeorget
1
@Igeorget! opcja „--headhead” działała dla mnie! to była dokładna odpowiedź na moje pytanie.
Prem Joshi
3
Commit, które złożyły --convert-tooznaczałoby --headlessto gerrit.libreoffice.org/... (wersja 4.4). W poprzednich wersjach obie opcje musiały zostać przekazane.
lgeorget
1
Należy pamiętać o limicie wiersza w formacie xls 65535, ponieważ to polecenie nie wyświetla żadnego komunikatu ostrzegawczego, jeśli plik xlsx przekroczy ten limit (wyświetli plik wiersza 65535, który nie odpowiada oryginałowi, bez ostrzeżenia)
golimar
6

możesz także wypróbować ssconvertnarzędzie konwertera towarzyszącego programu gnumeric

ssconvert in.xlsx out.xls

(jak zwykle patrz man ssconvert)

W normalnych przypadkach jest to w porządku. Jeśli plik wejściowy jest bardzo zaawansowany w konwerterach opartych na (libreoffice i gnumeric), niektóre szczegóły mogą zostać utracone.

JJoao
źródło