Linuxコマンドラインを使用してスプレッドシートのシート名を印刷するにはどうすればよいですか?


11

in2csv特定のワークシートを.csvとして保存するためにを使用していることを知っています。

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

しかし、シート名を印刷するための他のツールはありますか?

おそらくPerlにはオプションがありますか?

回答:


11

in2csv--namesまたは-nそのためのオプションを提供します:[ ソース ]

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

あなたの例では、コマンドは次のようになります:

in2csv -n file1.xls

この機能はcsvkit1.0.2でのみ追加されたことがわかりました。これは、公式のパッケージソースからはまだ利用できません。あなたはどちらかをする必要があります

  • ソースからプログラムをコンパイルするか、
  • 経由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です。オプションと通常のelseで呼び出さ/path/to/new/in2csvれた場合に呼び出します。-n/usr/bin/in2csv
デザート

1
OK。私が使用しsudo apt remove python3-csvkit、新しいものをインストールし、それは動作しました。ラッパー関数は非常に便利ですはい!
csheth 2017年

8

in2csv簡単なオプションですが、誰かが便利だと思う場合に備えて、このままにしておきます。xlhtmlXLSファイルをHTMLまたはXMLに変換するために呼び出される素晴らしいコマンドがあります。XMLを取得したら、さまざまなXML処理ツールを使用して、XMLに対してさまざまなクエリを実行できます。この場合:

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

xlhtml生成されるXML は次のようになります。

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


+1すばらしい解決策、退屈なものを見つけてすみません。; P
2017年

16.04 Xenialでは使用できません。それをあなたの答えに追加するのに役立つかもしれませんか?
csheth
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.