Chỉ định mã hóa với libreoffice --convert-to csv


10

Các tệp Excel có thể được chuyển đổi sang CSV bằng cách sử dụng:

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

Tất cả mọi thứ dường như làm việc tốt. Mã hóa, mặc dù, được thiết lập để một cái gì đó mạnh mẽ. Thay vì mdash UTF-8 (-) mà tôi nhận được nếu tôi thực hiện "lưu dưới dạng" theo cách thủ công từ LibreScript Calc, nó mang lại cho tôi \ 227 (). Việc sử dụng tệp trên CSV mang lại cho tôi "Văn bản ASCII không mở rộng, với các dòng rất dài". Vì vậy, hai câu hỏi:

  1. Điều gì trên trái đất đang xảy ra ở đây?
  2. Làm cách nào để tôi nói với libreoffice để chuyển đổi sang UTF-8?

Các tập tin cụ thể mà tôi đang cố gắng chuyển đổi là ở đây .

Câu trả lời:


7

Rõ ràng LibreScript cố gắng sử dụng ISO-8859-1 theo mặc định, điều này gây ra sự cố. Đáp lại báo cáo lỗi này , một tham số mới --infilterđã được thêm vào. Lệnh sau tạo ra dấu gạch ngang U + 2014 :

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

Tôi đã thử nghiệm điều này với LO 5.0.3.2. Từ báo cáo lỗi, có vẻ như phiên bản sớm nhất có chứa tùy chọn này là LO 4.4.

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


Cảm ơn! Vẫn không có thành công mặc dù. Với dòng lệnh này: libreoffice --headless --convert-to csv --infilter = CSV: 44,34,76,1 file.xlsx --outdir dir; nó vẫn có 0x97 cho dấu gạch ngang. Tôi đang bối rối. Tôi đang chạy LO 4.2.8.2 420m0 (Bản dựng: 2) trên Ubuntu 14.04.
Scott Deerwester 2/2/2016

Bạn có thể cần nâng cấp lên LO 4.4 hoặc mới hơn, như đã đề cập trong câu trả lời của tôi.
Jim K

1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csvđã làm cho tôi. Tham khảo .
Adobe

Bạn có một liên kết nơi các infiltertùy chọn được liệt kê? Liên kết được đăng bởi @Adobe đã lỗi thời từ lâu.
kebs

--infilterdường như là về tệp đầu vào và đó sẽ là lý do tại sao lệnh của @Adobe hoạt động (đầu vào CSV) và lệnh của OP (đầu vào XLSX) không - chỉ là một phỏng đoán
golimar

1

Bạn có thể thử,

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

Ở đây , bạn có một trợ giúp rất chi tiết về.


Cảm ơn vi đa trả lơi. Tôi vẫn không nhận được nó để chấp nhận các mã thông báo bổ sung. Tôi đã thử --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/2/2/2/2/6/2/7/2/2/2/9/10/3 "và nhiều kết hợp khác. Bất kỳ đề xuất?
Scott Deerwester 2/2/2016

csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0", csv :"trích dẫn kép" :"trích dẫn kép"
xae

Điều đó sẽ chỉ tương đối với vỏ, nhưng dù sao tôi cũng đã thử nó với kết quả tương tự.
Scott Deerwester 2/2/2016

Ở đây đang sử dụng unoconvvà trực tiếp sofficecho một nhiệm vụ liên quan, có thể có thể giúp đỡ.
xae
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.