Укажіть кодування за допомогою libreoffice --convert-to csv


11

Файли Excel можна конвертувати в CSV за допомогою:

$ libreoffice --convert-to csv --headless --outdir dir file.xlsx

Здається, все працює добре. Хоча кодування встановлено на щось вибагливе. Замість UTF-8 mdash (-), який я отримую, якщо вручну з LibreOffice Calc виконую "збереження як", він дає мені \ 227 ( ). Використання файлу на CSV дає мені "текст без розширеного ISO-ASCII, з дуже довгими рядками". Отже, два питання:

  1. Що на землі відбувається тут?
  2. Як сказати libreoffice для перетворення на UTF-8?

Конкретний файл, який я намагаюся перетворити, знаходиться тут .

Відповіді:


8

Мабуть, LibreOffice намагається використовувати ISO-8859-1 за замовчуванням, що викликає проблему. У відповідь на цей звіт про помилку--infilter додано новий параметр . Наступна команда виробляє тире U + 2014 :

libreoffice  --convert-to csv --infilter=CSV:44,34,76,1 --headless --outdir dir file.xlsx

Я перевірив це за допомогою LO 5.0.3.2. З повідомлення про помилку, схоже, що найдавніша версія, що містить цю опцію, є LO 4.4.

Дивіться також: https://ask.libreoffice.org/en/question/13008/how-do-i-specify-an-input-character-coding-for-a-convert-to-command-line-usage/


Дякую! Досі успіху все ж немає. За допомогою цього командного рядка: libreoffice --headless --convert-to csv --infilter = CSV: 44,34,76,1 file.xlsx --outdir dir; це все-таки 0x97 для ем тире. Я збентежений. Я використовую LO 4.2.8.2 420m0 (Build: 2) на Ubuntu 14.04.
Скотт Дірвестер

Можливо, вам потрібно буде оновити до LO 4.4 або новішої версії, про що говорилося у моїй відповіді.
Джим К

1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csvпрацював на мене. Довідково .
Adobe

Чи є у вас посилання, де вказані ці infilterпараметри? Посилання, розміщене @Adobe, давно застаріло.
кебахи

--infilterЗдається, йдеться про вхідний файл, і саме тому команда @Adobe працює (вхід CSV), а команда OP (вхід XLSX) не - лише здогадка
golimar

1

Ви можете спробувати,

    $ libreoffice --convert-to \
    > csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0" \
    > --headless --outdir dir file.xlsx 

Тут ви маєте дуже детальну допомогу.


Дякую за відповідь. Мені все ще не вдається прийняти додаткові жетони. Я спробував --convert-to "csv: Text - txt - csv (StarCalc): 44,34,76,1,, 0", --convert-to "csv: Text - txt - csv (StarCalc): 44,34,76,1,1 / 2/2/2/3/2/4/2/5/2/6/2/7/2/8/2/9/1/10/3 "і різні інші комбінації. Будь-які пропозиції?
Скотт Дірвестер

csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0", csv :"подвійне цитування" :"подвійне котирування"
xae

Це буде лише відносно оболонки, але я все-таки спробував це з тими ж результатами.
Скотт Дірвестер

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