Перетворити xlsx в xls в скрипт оболонки Linux


14

Мені потрібно конвертувати ".xlsx" файл у ".xls" за допомогою команди shell.

На моїй роботі в даний час ми використовуємо команду xlsx2csv, але тепер вимога була змінена, і для подальшого обчислення нам потрібно перетворити всі ".xlsx" файли в ".xls" файли.

Для цього хтось із моїх робіт розробив одну команду, яка може перетворити ".xlsx" в ".xls", але це застосовно лише до одного аркуша.

У нас є кілька аркушів в одному файлі.

Спасибі заздалегідь....


Це також можна зробити за допомогою бібліотеки pyxl, це робить навпаки: stackoverflow.com/questions/9918646/how-to-convert-xls-to-xlsx
Марк

Відповіді:


20

Якщо ви встановите LibreOffice, ви можете використовувати таку команду:

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

або просто:

libreoffice --convert-to xls myfile.xlsx

в останній версії (> = 4,5), де --convert-toвипливає --headless.

Це створить myfile.xls і збереже початковий файл myfile.xlsx - тому вам, ймовірно, потрібно буде зробити очищення після того, як перевірка буде успішною.


Цей варіант дуже хороший, але я думаю, що є одна проблема, він відкриває файл libreoffice і потім перетворює його у файл ".xls". Чи є якийсь інший варіант, який не відкриє libreoffice і все ще може конвертувати у файл ".xls"? ви можете мені допомогти в цьому? @forquare
Прем Джоші

1
Сторінка @PremJoshi Man говорить: "[--конвертувати в] передбачає безголову". тому графічний інтерфейс не відкритий. Однак, коли ви запускаєте його вперше після завантаження, він може відображати екран сплеску або щось подібне, поки він реєструє послуги (залежно від робочого столу).
lgeorget

1
@Igeorget! варіант "- без голови" працював для мене! це була точна відповідь на моє запитання.
Прем Джоші

3
Фіксації , які зробили --convert-toна увазі --headlessце gerrit.libreoffice.org / ... (версія 4.4). У попередніх версіях повинні бути прийняті обидва варіанти.
lgeorget

1
Будьте в курсі обмеження рядків у форматі xls 65535, оскільки ця команда не друкує жодне попереджувальне повідомлення, якщо файл xlsx перевищує цей ліміт (він виведе файл рядка 65535, який не відповідає оригіналу, без попередження)
golimar

6

ви також можете спробувати ssconvertінструмент перетворювача супутника з гнумерів

ssconvert in.xlsx out.xls

(як зазвичай, див. man ssconvert)

Для нормальних випадків це добре. Якщо вхідний файл дуже розвинений у обох (libreoffice та gnumeric) перетворювачах, деякі деталі можуть бути втрачені.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.