LinuxCLIでxlsx形式のファイルをCSVに変換する5つの方法

XLSXは、MicrosoftExcelで使用されるオープンXMLスプレッドシートファイル形式のファイル拡張子です。 Microsoftの変換 Excel コマンドラインを使用している場合、カンマ区切りファイル(CSV)へのシートは比較的簡単です。 XLSファイルがあり、データをフォーマットした後、そこからデータベースにデータを入力する必要がある場合に、状況が発生する可能性があります。 さまざまな形式のファイルの変換を行うために、コマンドラインにいくつかのメソッドがあります。

1)数値スプレッドシートプログラム

Gnumericは、GNU General PublicLicenseの下で配布されているUnixおよびUnixライクなオペレーティングシステム用のスプレッドシートプログラムです。 ファイルを作成し、将来のセッション中にこれらのファイルを再度開くことにより、情報を保存します。 CSV、Microsoftなどの複数の形式との間でスプレッドシートデータをインポートおよびエクスポートできます Excel、HTML、OpenDocument、Quattro Pro、およびLaTex。

Gnumericはデフォルトではcentos7のリポジトリに存在しません。最初に、最新のlux-releaseをインストールする必要があります。 最初にダウンロードしてください

# wget https://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm
--2017-10-13 23:32:19-- https://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm
Resolving repo.iotti.biz (repo.iotti.biz)... 156.54.7.11
Connecting to repo.iotti.biz (repo.iotti.biz)|156.54.7.11|:80... connected.

これで、luxリリースをインストールできます

# rpm -Uvh lux-release-7-1.noarch.rpm 
warning: lux-release-7-1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID 53e4e7a9: NOKEYCSV
Preparing... ################################# [100%]
Updating / installing...
 1:lux-release-7-1 ################################# [100%]

lux-releaseがインストールされたので、パッケージを介してgnumericをインストールできるようになりました

# yum install gnumeric
Loaded plugins: fastestmirror, langpacks
lux | 2.9 kB 00:00:00 
lux/7/primary_db | 1.0 MB 00:00:05 
Loading mirror speeds from cached hostfile
 * base: ftp.hosteurope.de
 * epel: mirror.liquidtelecom.com
 * extras: ftp.hosteurope.de
 * updates: ftp.hosteurope.de
Resolving Dependencies
--> Running transaction check
---> Package gnumeric.x86_64 1:1.10.10-2.el7.lux.1 will be installed

これで、数値スプレッドシートのssconvertコマンドを使用してファイルを変換できます。

# ssconvert book.xlsx file.csv
Using exporter Gnumeric_stf:stf_csv

今すぐファイルを視覚化できます

# cat file.csv 
fichier,
paul,
nathan,couvert
couloir,file
road,

2)xlsx2csvコンバーター

xlsx2csv コンバーターは、XLSX / XLSファイルのバッチをCSV形式に変換できるPythonアプリケーションです。 変換するシートを正確に指定できます。 複数のシートがある場合、xlsx2csvを使用すると、すべてのシートを一度に、または一度に1つずつエクスポートできます。

これをインストールするには、Pythonがすでにインストールされている必要があります。 次に、次のように進めることができます。

# easy_install xlsx2csv
Searching for xlsx2csv
Reading https://pypi.python.org/simple/xlsx2csv/
Best match: xlsx2csv 0.7.3
Downloading https://pypi.python.org/packages/4c/56/4c7f595525839710ab563c8e5a48226021111c1324b1460e603256f7665c/xlsx2csv-0.7.3.tar.gz#md5=b9cffbbe815259987237135f99658c63
Processing xlsx2csv-0.7.3.tar.gz

これで、xlsxファイルを変換できます

# xlsx2csv book.xlsx > convert.csv

ファイルの内容を確認できます

# cat convert.csv 
fichier,
paul,
nathan,couvert
couloir,file
road,

デフォルトでは、ファイルに複数のシートが含まれている場合でも、xlsx2csvコマンドは最初のシートのみを変換します。 幸いなことに、すべてのシートを変換するか、変換するシートを選択する可能性があります。 あなたはいくつかの興味深いパラメータを使うことができます:

  • -a, --all すべてのシートをエクスポートするには
  • -d DELIMITER csvの列区切り文字の場合
  • -p SHEETDELIMITER シートを区切るために使用されるシート区切り文字の場合、合格 '' 区切り文字が必要ない場合、または 'x07' また 'f' フォームフィード用(デフォルト: ‘——–‘)
  • -s SHEETID 変換するシート番号

にとって example、特定のシートのみを変換する場合

# xlsx2csv class.xlsx -s 2 > sheet2.csv

確認してもいい

# cat sheet2.csv 
sheet2
take
linux
centos

これで、すべてのシートを変換する場合は、次のように実行できます

# xlsx2csv class.xlsx --all > allsheet.csv

内容は以下のように確認できます

# cat allsheet.csv 
-------- 1 - Sheet1
fichier
road
-------- 2 - Sheet2
sheet2
take
linux
centos
-------- 3 - Sheet3
devops
script
lxd

デフォルトの区切り文字がシートを知るのに役立つことがわかります。

3)csvkitツール

csvkitは、CSVファイルを操作するために最適化されたPythonライブラリです。 これは、csv形式を使用して、データを操作、整理、分析、および操作するための優れたツールです。 とても軽くて速いです。 ターミナルを介して使用されます in2csvコマンド これは、xls、xlsx、固定幅など、さまざまな一般的なファイル形式をCSV形式に変換します。

# pip install csvkit
Collecting csvkit
 Using cached csvkit-1.0.2.tar.gz
Collecting agate>=1.6.0 (from csvkit)

これで、次のように変換できます。

# in2csv Classeur2.xlsx > book3.csv

4)unoconv

OpenOfficeには、コマンドラインでフォーマット変換を実行するためのunoconvプログラムが付属しています。 openofficeがインストールされている場合、デフォルトで存在します。 マニュアルを使用できます

# unoconv --help
usage: unoconv [options] file [file2 ..]

Convert from and to any format supported by LibreOffice

unoconv options:
  -c, --connection=string  use a custom connection string
  -d, --doctype=type       specify document type
                             (document, graphics, presentation, spreadsheet)
  -e, --export=name=value  set export filter options
                             eg. -e PageRange=1-2
  -f, --format=format      specify the output format
  -i, --import=string      set import filter option string
                             eg. -i utf8
  -l, --listener           start a permanent listener to use by unoconv clients
  -n, --no-launch          fail if no listener is found (default: launch one)
  -o, --output=name        output basename, filename or directory
      --pipe=name          alternative method of connection using a pipe
  -p, --port=port          specify the port (default: 2002)
                             to be used by client or listener
      --password=string    provide a password to decrypt the document
  -s, --server=server      specify the server address (default: 127.0.0.1)
                             to be used by client or listener
      --show               list the available output formats
      --stdout             write output to stdout
  -t, --template=file      import the styles from template (.ott)
  -T, --timeout=secs       timeout after secs if connection to listener fails
  -v, --verbose            be more and more verbose (-vvv for debugging)

このコマンドは、さまざまなファイル形式間で変換できます。 デフォルトでは、PDFに変換されます。 これは、不要な形式を使用したくない場合は、目的の形式を指定する必要があることを意味します。 したがって、unoconvコマンドを使用してcsvに変換するには、次の2つの主要なパラメーターを使用する必要があります。

  • -f これは、要求が出力ファイルの最終形式であることを示します
  • -o 変換されたファイルの名前とパスを示します
# unoconv -f csv -o class2.csv Classeur2.xlsx

内容を確認できます

# cat class2.csv 
fichier,
,
,couvert
,file
road,

元のxlsxファイルの2行目は空であることに注意してください。そのため、csvファイルの2行目にコンマがあります。

5)Libreofficeヘッドレス

コマンドラインからLibreOfficeソフトウェアを起動することにより、パフォーマンスに影響を与えることができるさまざまなパラメーターを割り当てることができます。 それは ヘッドレスモード これは、グラフィカルインターフェイスコンポーネントなしでコマンドラインでLibreOfficeを起動するのに役立ちます。 それはあなたが必要に応じていくつかの形式でファイルを変換する可能性を与えます。 したがって、これを使用してcsv内のxlsxファイルを変換できます。 示された最終形式(csv)を使用する必要があります--convert-to パラメータの後に、以下のように変換するファイルが続きます。

# libreoffice --headless --convert-to csv book.xlsx --outdir conv/
convert /home/admin/Desktop/book.xlsx -> /home/admin/Desktop/conv/book.csv using filter : Text - txt - csv (StarCalc)

これでファイルを確認できます

# cat conv/book.csv 
fichier,
paul,
nathan,couvert
couloir,file
road,

以下のように、いくつかのxlsxファイルを直接変換できます。

# libreoffice --headless --convert-to csv --outdir conv/ *.xlsx
convert /home/admin/Desktop/book.xlsx -> /home/admin/Desktop/conv//book.csv using filter : Text - txt - csv (StarCalc)
convert /home/admin/Desktop/Classeur1.xlsx -> /home/admin/Desktop/conv//Classeur1.csv using filter : Text - txt - csv (StarCalc)
convert /home/admin/Desktop/Classeur2.xlsx -> /home/admin/Desktop/conv//Classeur2.csv using filter : Text - txt - csv (StarCalc)
convert /home/admin/Desktop/class.xlsx -> /home/admin/Desktop/conv//class.csv using filter : Text - txt - csv (StarCalc)

あなたは以下のように変換されたものを見ることができます

[root@centos7-srv Desktop]# ls conv
book.csv class.csv Classeur1.csv Classeur2.csv

1つのファイルの内容を確認できます

# cat conv/Classeur2.csv 
fichier,
,
,couvert
,file
road,

コマンドラインでcsvファイルのxlsxファイル形式を変換するためにLinuxで利用できるさまざまなツールを見てきました。 ファイルをodtまたはpdfに変換することを決定できます。これは、unoconvおよびlibreofficeヘッドレスで可能です。 試す価値がある ミラーツール フォーマット間の変換などを行います。