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ę....


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.