Làm cách nào tôi có thể in tên trang tính của bảng tính bằng dòng lệnh Linux?


10

Tôi biết sử dụng in2csvđể lưu một bảng tính cụ thể dưới dạng .csv:

in2csv --sheet "sheet name" file1.xls > sheet-name.csv

Nhưng có công cụ nào khác để chỉ in tên?

Có lẽ có những lựa chọn với Perl?

Câu trả lời:


10

in2csvcung cấp tùy chọn --nameshoặc -ncho điều đó: [ Nguồn ]

 -n, --names     Display sheet names from the input Excel file.

Trong ví dụ của bạn, lệnh sẽ là:

in2csv -n file1.xls

Hóa ra tính năng này chỉ được thêm vào trong csvkit1.0.2, chưa có sẵn từ các nguồn gói chính thức . Bạn cần phải

  • biên dịch chương trình từ nguồn hoặc
  • cài đặt nó qua pipvới

    sudo pip install csvkit
    

để có được phiên bản mới nhất.


Tôi đã chấp nhận câu trả lời này nhưng hóa ra tôi có một phiên bản in2csvthiếu -ntùy chọn. Thật kỳ lạ, cố gắng tìm ra cách để có được bản mới nhất nhưng gặp rắc rối với csvkit và loại bỏ in2csv... thở dài
csheth

2
Tôi chỉ cần gỡ bỏ nó sudo apt remove python3-csvkitvà cài đặt một cái mới hơn, tốt nhất là từ gói.ubfox.com , hoặc từ github.com/wireservice/csvkit/tree/1.0.2 . Tính năng này được giới thiệu với cam kết này được gắn thẻ 1.0 1.0 1.0, vì vậy bất kỳ phiên bản nào từ đó trở đi đều phải có tùy chọn này.
tráng miệng

Đáng tiếc là có vẻ như không ai trong số các phiên bản đóng gói đạt số phiên bản này, do đó biên dịch nguồn từ github có vẻ là cách duy nhất để đi - trong trường hợp này, tôi thà không gỡ bỏ cài đặt các phiên bản gói nhưng chỉ cần viết một hàm wrapper tên in2csvmà gọi /path/to/new/in2csvtrong trường hợp nó được gọi với -ntùy chọn và thông thường /usr/bin/in2csvkhác.
tráng miệng

1
đồng ý. Tôi đã sử dụng sudo apt remove python3-csvkit, cài đặt cái mới hơn và nó hoạt động. Các chức năng bao bọc là rất hữu ích có!
csheth

8

in2csvlà tùy chọn đơn giản hơn, nhưng tôi sẽ để nó trong trường hợp ai đó có thể thấy nó hữu ích. Có một lệnh hay được gọi xlhtmlđể chuyển đổi các tệp XLS sang HTML hoặc XML. Và một khi bạn có XML, các công cụ xử lý XML khác nhau có thể được sử dụng để thực hiện nhiều truy vấn khác nhau trên đó. Trong trường hợp này:

$ xlhtml -xml ~/foo.xls | xmlstarlet sel -t -m '//pagetitle' -v . -n
Sheet1
Sheet2

XML xlhtmltạo ra là như vậy:

<?xml version="1.0" encoding="iso-8859-1" ?>
<excel_workbook>
    <sheets>
        <sheet>
            <page>0</page>
            <pagetitle>Sheet1</pagetitle>
            <firstrow>0</firstrow>
            <lastrow>11</lastrow>
            <firstcol>0</firstcol>
            <lastcol>0</lastcol>

Vì vậy, đối với tên trang tính, chúng ta có thể truy vấn các pagetitlenút mà tôi đã sử dụngxmlstarlet .


+1 Giải pháp tuyệt vời, tôi rất xin lỗi vì đã tìm ra giải pháp nhàm chán. ; P
tráng miệng

Nó không có sẵn cho 16.04 Xenial. Có lẽ hữu ích để thêm nó vào câu trả lời của bạn?
csheth
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.