2011-01-20 30 views
11

Tôi đang làm việc trên python và tôi muốn đọc tệp * .ods và chuyển đổi nó thành từ điển python.bảng tính để chuyển đổi từ điển python

Khóa sẽ là giá trị cột đầu tiên và giá trị sẽ là giá trị cột thứ hai.

Tôi có thể làm như thế nào? Tôi đã sử dụng xlrd nhưng không đọc tệp * .ods.

+3

http://pypi.python.org/pypi/ezodf hoặc http://udk.openoffice.org/python/python-bridge.html – marcog

+0

@marcog: Nhận xét này phải là câu trả lời. –

+1

@Space Tôi đã bỏ lỡ một khả năng rằng tôi đã không thực sự đọc nhiều, vì vậy tôi không cảm thấy đó là một câu trả lời hoàn chỉnh. – marcog

Trả lời

2

Bạn có thể chuyển đổi .ODS thành csv trước không? Sau đó phân tích cú pháp CSV bằng Python khá dễ sử dụng mô-đun csv.

+0

cảm ơn nhưng như tôi biết có cách duy nhất để chuyển đổi ods để cvs là dịch vụ văn phòng mở. Nhưng tôi không muốn sử dụng nó. tôi có thể trực tiếp chuyển đổi nó thành từ điển –

1

Có một bài viết tuyệt vời trên Linux Journal cách đọc ods trong python. Tệp Ods là tệp zip juz chứa tệp xml bên trong. Bạn có thể phân tích cú pháp tệp xml để đọc tất cả các ô.

http://www.linuxjournal.com/article/9347?page=0,2

+3

"cách đọc ods trong python" chỉ nhận được như xa như tóm tắt một tập hợp con của các thẻ thú vị có thể, ví dụ: nó đề cập đến '' nhưng không có manh mối nào về nội dung kỳ dị của nó và không cho bạn biết rằng bạn phải thực hiện việc lưu giữ sách rất cẩn thận để theo dõi những gì (hàng, cột) đến (nó không được ghi trong các thuộc tính của ô !!). Phân tích cú pháp tệp XML một cách chính xác là KHÔNG phải cái gì mà người ta nên đề cập một cách hợp lý để trả lời cho một câu hỏi như vậy. BẠN đã thử điều này chưa? Bạn có muốn tôi gửi cho bạn một tệp thử nghiệm ngoại tuyến không? –

4

Một số tùy chọn có sẵn:

  • pyexcel-ods: "Một thư viện wrapper để đọc, thao tác và ghi dữ liệu ở định dạng ods" Có thể được cài đặt thông qua: pip install pyexcel-ods. Cá nhân tôi đề nghị gói này vì tôi đã sử dụng nó và nó đang được duy trì tích cực.

  • py-odftools: "... một bộ sưu tập các công cụ để phân tích, chuyển đổi và tạo tập tin trong định dạng OpenDocument tiêu chuẩn ISO" Dự án này chưa được cập nhật kể từ cuối năm 2007. Nó trông bị bỏ rơi.

  • ezodf: "Một Python gói để tạo/thao tác tập tin OpenDocumentFormat." Thể Cài đặt qua pip install ezodf. Xem báo trước trong phần bình luận bên dưới về một vấn đề nghiêm trọng với gói này.

+0

Hãy coi chừng: gói cuối cùng ([ezodf] (https://pypi.python.org/pypi/ezodf)), chứa một lỗi nghiêm trọng làm cho nó âm thầm trả về các giá trị ô sai: https://github.com/T0ha/ezodf/issue/12. Cảm ơn [Mateusz] (http://stackoverflow.com/users/4130619/mateusz-konieczny) vì đã thu hút sự chú ý của tôi. – Gabriel

3

Mặc dù bạn có thể yêu cầu người dùng gửi> Lưu dưới dạng (như bạn có thể biết), điều này có thể không hữu ích trong trường hợp của bạn.

Có thể dễ dàng sử dụng dịch vụ libre/openoffice hơn. Nó có thể chạy hoàn toàn không đầu trên một máy chủ mà không cần cài đặt hoặc chạy X11, và điều đó sẽ cung cấp cho bạn một chuyển đổi tự nhiên sạch sẽ.

libreoffice --without-x --convert-to csv filename.ods 

Kiểm tra libreoffice --help (hoặc openoffice --help) để biết chi tiết. Điều này cũng có thể được bọc trong os.system(), subprocess. *(), Vv (Lưu ý: sử dụng -convert-to trên Windows.) Cũng lưu ý: bạn không thể chạy bất kỳ trường hợp nào của Libre/Open/Star văn phòng, bao gồm cả nhanh hơn.

Cập nhật: các phiên bản trước của LibreOffice được sử dụng - không đầu thay vì - không có-x.

+0

Lưu ý: - không cần đầu vào để hoạt động tự động. –

+0

(Tôi chắc chắn muốn biết cách chỉ định một trang tính riêng lẻ.) –

+0

Nếu bạn thậm chí không muốn thư viện X11 được liên kết, đây là cách thực hiện xây dựng không đầu: https://wiki.documentfoundation.org/Development/HeadlessBuild –

Các vấn đề liên quan