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.