web-dev-qa-db-ja.com

LinuxコマンドラインでCSVファイルをXLSファイルに変換しますか?

Debian Linuxを使用していますが、CSVファイルをExcel XLSスプレッドシートファイルに変換したいと考えています。 catdoc パッケージには、XLSからCSVに変換するxls2csvコマンドが含まれています。ただし、その逆は行いません。

私はCSVファイルしか持っていないので、フォーマットなどは気にしません。非常にシンプルなXLSファイルのみを生成し、豪華な新しいバージョンをサポートしていないのではないかと心配していません。 XLSスプレッドシートである限り。

4
Rory

なぜそれをしたいのですか?データ/メタデータの追加や変更には関心がないので、csvのままにしておくことができます。 CSVはデフォルトでMS Excelに関連付けられているため、それを開く人は誰でもMS Excelで開くことができます。

それが何らかの理由で機能しない場合は、私が知る限り、次のスケルトンを使用して(一種の)有効なxlsファイルを生成できることに注意してください。

<table>
<tr>
  <td>field0</td>
  <td>field1</td>
  ..
  <td>fieldX</td>
</tr>
... ad inf
</table>

(私は本気です)

10
shylent

「gnumeric」パッケージのssconvertツールを使用してみてください。 Debianでは、Sudo apt-get install gnumericを使用してパッケージをインストールし、コマンドラインから次のコマンドを実行します。

ssconvert file.csv file.xls

これでうまくいくはずです。

9
xX0v0Xx

SourceforgeのPythonベースのソリューション と呼ばれるcsv2xlsがあります。

現時点では維持されていないようです(最後のアクティビティは1年以上前でした)が、それが必要なことを行っている場合は、それほど問題になりません。

6
DilbertDave

Excel 2002 XML形式の単純なバージョンを直接出力する小さなコードを記述します。 http://en.wikipedia.org/wiki/Microsoft_Excel#File_formats

XMLスプレッドシート

この形式の対象ファイル拡張子は.xmlですが、プログラムは.xls拡張子を持つXMLファイルも正しく処理します。この機能は、サードパーティアプリケーション(MySQLクエリブラウザーなど)で広く使用されており、バイナリファイル形式を実装せずに「Excelへのエクスポート」機能を提供します。次の例は、Book1.xmlまたはBook1.xlsとして保存されている場合、Excelで正しく開かれます。

<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-Microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-Microsoft-com:office:office"
 xmlns:x="urn:schemas-Microsoft-com:office:Excel"
 xmlns:ss="urn:schemas-Microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
 <Worksheet ss:Name="Sheet1">
  <Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="2" x:FullColumns="1" x:FullRows="1">
   <Row>
    <Cell><Data ss:Type="String">Name</Data></Cell>
    <Cell><Data ss:Type="String">Example</Data></Cell>
   </Row>
   <Row>
    <Cell><Data ss:Type="String">Value</Data></Cell>
    <Cell><Data ss:Type="Number">123</Data></Cell>
   </Row>
  </Table>
 </Worksheet>
</Workbook>

あるいは、十分な機能が提供されない場合は、最小限の.xlsx出力を直接実装します。これは、古いバイナリ形式と比較して扱いやすいXMLファイルを含むZipファイルです。

1
sdw

Openofficeマクロを使用してみてください...

はじめに参照してください:Wordを変換する方法-> PDFコマンドラインから http://www.oooforum.org/forum/viewtopic.phtml?t=3772 =


1
flint

確かに、CSVおよび任意の形式のXLSまたはopenOfficeのフィルターにはいくつかの問題があります。のように:レコード区切り文字:、行末記号:\ nまたは;文字列定義: "など。

私がそれを正しく取得した場合、いくつかのスクリプト内のコマンドラインでそれを実行する必要があります。これは、私が現在抱えている問題とまったく同じです。csv形式のDATAから、XLS形式でお客様に提示してください。

私はこの投稿を見つけました: https://forum.openoffice.org/en/forum/viewtopic.php?f=5&t=39844

しかし、私は完全に満足していません。それらはオプションかもしれません。

実際、何らかのopenOfficeがインストールされている場合は、次の情報を試してみることができます。 http://ask.libreoffice.org/en/question/2641/convert-to-command-line-parameter/

私のシェルで次のように入力しました:

soffice --help

そして出力の一部は:

--convert-to output_file_extension[:output_filter_name] [-outdir ouput_dir] files
      Batch convert files.
      If -outdir is not specified then current working dir is used as output_dir.
      Eg. -convert-to pdf *.doc
          -convert-to pdf:writer_pdf_Export -outdir /home/user *.doc
1
mariotti

csv2xls(C++で書かれた)というソフトウェアがあり、それはあなたが望むとおりに実行する必要があります(別の回答で言及されているPython2実装と混同しないでください)。

https://github.com/ferkulat/csv2xls

最後のコミットは2か月前で、その見た目から、ソフトウェアは安定しているようです。

1
Slizzered

.CSVファイルは、必要な機能を備えたExcelファイルであると私は主張します。 one anyyance のみを回避する必要があります。本当に.XLSに変換したい場合は、後でExcelで変換してください。しかし、あなたが提供する説明があれば、実際にそうする必要はありません。

0
adamo