Tentukan penyandian dengan libreoffice --convert-to csv


10

File Excel dapat dikonversi ke CSV menggunakan:

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

Semuanya tampak berfungsi dengan baik. Pengkodean, bagaimanapun, diatur ke sesuatu yang miring. Alih-alih UTF-8 mdash (-) yang saya dapatkan jika saya melakukan "save as" secara manual dari LibreOffice Calc, itu memberi saya \ 227 ( ). Menggunakan file pada CSV memberi saya "Non-ISO extended-ASCII text, dengan garis yang sangat panjang". Jadi, dua pertanyaan:

  1. Apa yang sebenarnya terjadi di sini?
  2. Bagaimana cara saya memberi tahu libreoffice untuk mengonversi ke UTF-8?

File spesifik yang saya coba konversi ada di sini .

Jawaban:


7

Rupanya LibreOffice mencoba menggunakan ISO-8859-1 secara default, yang menyebabkan masalah. Menanggapi laporan bug ini , parameter baru --infiltertelah ditambahkan. Perintah berikut menghasilkan tanda hubung U + 2014 :

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

Saya menguji ini dengan LO 5.0.3.2. Dari laporan bug, sepertinya versi paling awal yang mengandung opsi ini adalah LO 4.4.

Lihat juga: https://ask.libreoffice.org/en/question/13008/how-do-i-specify-an-input-character-coding-for-a-convert-to-command-line-usage/


Terima kasih! Masih belum berhasil. Dengan baris perintah ini: libreoffice --headless --convert-to csv --infilter = CSV: 44,34,76,1 file.xlsx --outdir dir; masih punya 0x97 untuk dasbor em. Saya bingung. Saya menjalankan LO 4.2.8.2 420m0 (Build: 2) di Ubuntu 14.04.
Scott Deerwester

Anda mungkin perlu meningkatkan ke LO 4.4 atau lebih baru, seperti yang disebutkan dalam jawaban saya.
Jim K

1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csvbekerja untukku. Referensi .
Adobe

Apakah Anda memiliki tautan tempat infilteropsi ini dicantumkan? Tautan yang diposting oleh @Adobe sudah lama usang.
kebs

--infiltertampaknya tentang file input dan itu akan menjadi mengapa perintah @Adobe bekerja (input CSV) dan perintah OP (input XLSX) tidak - hanya menebak
golimar

1

Kamu bisa mencoba,

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

Di sini , Anda memiliki bantuan yang sangat terperinci.


Terima kasih balasannya. Saya masih belum mendapatkannya untuk menerima token tambahan. Saya sudah mencoba --convert-to "csv: Text - txt - csv (StarCalc): 44,34,76,1,, 0", --convert-to "csv: Teks - 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 "dan berbagai kombinasi lainnya. Ada saran?
Scott Deerwester

csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0", csv :"dikutip ganda" :"dikutip ganda"
xae

Itu hanya akan relatif terhadap shell, tapi saya tetap mencobanya dengan hasil yang sama.
Scott Deerwester

Di sini menggunakan unoconvdan langsung sofficeuntuk tugas terkait, mungkin bisa membantu.
xae
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.