ฉันจะพิมพ์ชื่อชีตของสเปรดชีตโดยใช้บรรทัดคำสั่ง Linux ได้อย่างไร


11

ฉันตระหนักถึงการใช้in2csvเพื่อบันทึกแผ่นงานเฉพาะเป็น. csv:

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

แต่มีเครื่องมืออื่นใดที่เพียงพิมพ์ชื่อแผ่นงานหรือไม่

บางทีมีตัวเลือกกับ Perl หรือไม่

คำตอบ:


12

in2csvจากcsvkitแพ็คเกจให้--namesหรือ-nตัวเลือกสำหรับที่: [ ที่มา ]

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

ในตัวอย่างของคุณคำสั่งจะเป็น:

in2csv -n file1.xls

ฟีเจอร์นี้เพิ่มเข้ามาในcsvkit1.0.2 ซึ่งไม่สามารถใช้ได้จากแหล่งแพคเกจอย่างเป็นทางการสำหรับการเผยแพร่ที่เก่ากว่าไบโอนิค หากคุณใช้ Xenial คุณต้องทำเช่นนั้น

  • รวบรวมโปรแกรมจากแหล่งที่มาหรือ
  • ติดตั้งผ่านpipกับ

    sudo pip install csvkit
    

เพื่อรับเวอร์ชันล่าสุด


ฉันยอมรับคำตอบนี้แล้ว แต่กลับกลายเป็นว่าฉันมีรุ่นที่in2csvไม่มี-nตัวเลือก แปลกพยายามที่จะคิดออกว่าจะได้รับล่าสุด แต่มีปัญหากับ csvkit และเอาเก่าin2csv... ถอนหายใจ
csheth

2
ฉันต้องการเพียงแค่เอามันออกไปด้วยsudo apt remove python3-csvkitและติดตั้งใหม่หนึ่งโดยเฉพาะอย่างยิ่งจากpackages.ubuntu.comหรืออื่น ๆ จากgithub.com/wireservice/csvkit/tree/1.0.2 คุณลักษณะที่ได้รับการแนะนำให้รู้จักกับนี้กระทำติดแท็ก“1.0.2” ดังนั้นรุ่นใด ๆ จากว่าในวันที่ควรจะมีตัวเลือกนี้
ของหวาน

แต่น่าเสียดายที่ดูเหมือนว่าไม่มีรุ่นแพคเกจที่เข้าถึงหมายเลขรุ่นนี้จึงรวบรวมแหล่งที่มาจาก GitHub น่าจะเป็นวิธีเดียวที่จะไป - ในกรณีนี้ผมอยากจะไม่ถอนการติดตั้งแพคเกจรุ่น แต่เพียงแค่เขียนฟังก์ชั่นเสื้อคลุมที่มีชื่อin2csvว่า โทร/path/to/new/in2csvในกรณีที่มันถูกเรียกพร้อมกับ-nตัวเลือกและ/usr/bin/in2csvอื่น ๆตามปกติ
ของหวาน

1
ตกลง. ฉันใช้sudo apt remove python3-csvkitติดตั้งใหม่และมันใช้งานได้ ฟังก์ชั่น wrapper มีประโยชน์มากใช่!
csheth

8

in2csvเป็นตัวเลือกที่ง่ายกว่า แต่ฉันจะทิ้งไว้ในกรณีที่ใครบางคนอาจพบว่ามีประโยชน์ มีคำสั่งที่ดีxlhtmlสำหรับการแปลงไฟล์ XLS เป็น HTML หรือ XML และเมื่อคุณมี XML แล้วเครื่องมือการประมวลผล XML ต่างๆสามารถใช้เพื่อทำแบบสอบถามที่หลากหลายได้ ในกรณีนี้:

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

XML ที่xlhtmlสร้างเป็นดังนี้:

<?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>

ดังนั้นสำหรับชื่อแผ่นที่เราสามารถสอบถามpagetitleโหนดที่ผมใช้xmlstarlet


ไม่สามารถใช้ได้กับ Xenial 16.04 อาจมีประโยชน์ในการเพิ่มลงในคำตอบของคุณ?
csheth
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.