LibreOffice, как сохранить начальные нули при экспорте с помощью командной строки?

Я использую LibreOffice 5.0.5.2 в контейнере Ubuntu 15.10 docker для преобразования произвольных входящих файлов электронных таблиц в канонические CSV-файлы:

/usr/lib/libreoffice/program/soffice.bin 
    --convert-to 'csv:Text - txt - csv (StarCalc):44,34,76,1,1/2/2/2/3/2,1031,true,false,true' 
    --outdir '/tmp/outgoing' 
    'incoming.csv'

как я понимаю документация, эта командная строка должна точно конвертировать электронные таблицы в CSV, используя:

  • , как разделитель полей ("44")
  • " как символ вложения ("34")
  • UTF-8 как входящая кодировка ("76")
  • начать с первой строки в файле ("1")
  • форматировать столбцы 1, 2 и 3 как текст ("1/2/2/2/3/2"),
  • использовать UTF-8 имеет исходящую кодировку ("1031")
  • процитировать все текстовые ячейки ("true")
  • не обнаруживать специальные числа ("false")
  • сохранить содержимое ячейки как показано ("true")

это работает хорошо, за исключением столбцов, содержащих определенный текст с ведущими нулями. Например, если incoming.csv это это:

"0123456789"

результирующий экспортированный файл выглядит так:

123456789

Я понимаю, что если столбец помечен как текст на импорт, что составит сохранить ведущие нули, а затем идем в другую сторону, отмечая "цитировать все текстовые ячейки" на экспорт сохранит эти сохраненные нули. Но это, по-видимому, не относится к некоторому набору входных данных.

например, эти держат свои лидирующие нули, которые я полагаю, потому что они содержат нечисловые символы:

  • 0x3E
  • 0 123 456

С помощью командной строки, как я могу уговорить LibreOffice сохранить лидирующие нули во время экспорта?

10
задан bishop
04.03.2023 20:32 Количество просмотров материала 3179
Распечатать страницу

1 ответ

наконец, я нашел три источника, которые помогают мне положить это вместе:

  1. https://stackoverflow.com/a/30465397/2908724
  2. https://bugs.documentfoundation.org/show_bug.cgi?id=36313
  3. https://unix.stackexchange.com/a/259434/50240

то, что отсутствует в моей команде выше --infilter, который указывает LibreOffice на импорт настройки. The --convert-to флаг указывает только экспорт настройки.

эта команда полностью сохраняет ведущие нули во всех тестовых случаях. Магия-это терминал true, что означает "цитировать все текстовые ячейки" и эквивалентно флажку с тем же именем в диалоговом окне импорта.

/usr/lib/libreoffice/program/soffice.bin \
    --convert-to 'csv:Text - txt - csv (StarCalc):44,34,76,1' \
    --infilter='CSV:44,34,76,1,,1031,true' \
    --outdir '/tmp/outgoing' 'incoming.csv'

в качестве примечания, порядок аргументов имеет значение:--outdir должны следовать как --infilter и --convert-to.

кроме того, кажется несколько --infilter может быть указано для объявления допустимые сочетания и параметры.

1
отвечен bishop 2023-03-06 04:20

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх