web-dev-qa-db-ja.com

.csvを.xls / xlsxにバッチ変換する方法

.csvファイルのディレクトリを.xlsまたは.xlsx形式にすばやく変換する方法を探しています(どちらかまたは両方を実行できれば、Niceになります)。

これを行う簡単な方法はありますか、それともサードパーティのプログラムをインストールする必要がありますか?

11
mindless.panda

あなたが好きで、Python(何らかの理由で)を持っている)と仮定すると、次のスクリプトを使用できます。

import os
import glob
import csv
import xlwt # from http://www.python-Excel.org/

for csvfile in glob.glob(os.path.join('.', '*.csv')):
    wb = xlwt.Workbook()
    ws = wb.add_sheet('data')
    with open(csvfile, 'rb') as f:
        reader = csv.reader(f)
        for r, row in enumerate(reader):
            for c, val in enumerate(row):
                ws.write(r, c, val)
    wb.save(csvfile + '.xls')

すべてのCSVファイルがあるディレクトリで実行すると、すべてが変換され、「。xls」が最後にスラップされます。

最大約1 MrowsをサポートするExcel 2007+(xlsxファイル)の場合:

import os
import glob
import csv
import openpyxl # from https://pythonhosted.org/openpyxl/ or PyPI (e.g. via pip)

for csvfile in glob.glob(os.path.join('.', '*.csv')):
    wb = openpyxl.Workbook()
    ws = wb.active
    with open(csvfile, 'rb') as f:
        reader = csv.reader(f)
        for r, row in enumerate(reader, start=1):
            for c, val in enumerate(row, start=1):
                ws.cell(row=r, column=c).value = val
    wb.save(csvfile + '.xlsx')
21
Nick T

ここ はおそらくそれを行うPerlスクリプトですが、すでにExcelに組み込まれている何かを行うのは大変な作業のようです。

1
Kirk

あなたの質問には、言い残しがたくさんあります。

CVSファイルが次のようなディレクトリ構造にあると仮定します

c:\randompath\CSV\
    a.csv
    b.csv
    c.csv
      :
      :
    z.csv

そしてあなたは終わりにしたい

c:\randompath\XLS\
    a.xls
    b.xls
    c.xls
      :
      :
    z.xls

事前の作業とクリーンアップの作業の比率に応じて、3つのルートが考えられます。

  1. プリコーディングなし:Windowsエクスプローラーを使用してCSVファイルに移動し、変換するファイルを選択するのに最適な方法(lasso、ctrl + a、ctrl + click、shift + click)を使用して、選択したファイルの1つを右クリックしてクリックします開いた。これにより、すべてのファイルがExcelで開きます。次に、各ファイルについて「ファイル」と「名前を付けて保存」を選択し、最後に保存先の新しいファイル形式を選択できます。
  2. 単純なバッチファイル:このバッチファイルでは、ワイルドカードやfor eachループ構造を使用して各CSVファイルを開いてから、以前と同じように手動で処理できます。
  3. Excelスプレッドシート内でVBAプログラムを作成します。VBAは各CSVファイルを自動的に開き、Excel形式で保存できます。各ファイルを開くときに、xlsまたはxlsxを選択できる単純なメッセージボックスを追加することもできます。

これらのことを行うためのコードはまだ作成していないことに注意してください(まだ)出発点のアイデアを提供しています。多分あなたがあなたが欲しいものについてより詳細を与えることができれば、私または別のフォーラムのメンバーからのアプローチを処理する方法についてより詳細な説明を得ることができます。

1
TedNewk

Windowsの場合CoolUtils "Total CSV Converter"コマンドラインバージョンは、JSON、Access、DBF、XMLおよびSQLを含む多くの出力形式をサポートしますそしてたったの$ 40。サブディレクトリの再帰、元のCSVファイルの削除、すべてのファイルの1つのドキュメントへの結合などが可能です。

http://www.coolutils.com/TotalCSVConverter

CSVConverter.exe <source> <destination> <options>

"Advanced CSV Converter"($ 40-200)は、Excelをインストールしなくてもすばやく実行できるポータブルEXEです。

http://www.dbf2002.com/csv-converter/commandline.html

"c:\Program Files\CSV Converter\csvcnv.exe" c:\base\*.csv c:\exports\ /TOXLSX /SRCHDR

SoftInterfaceの「Convert XLS」はExcelを使用できますが(必須ではありません)、より高価ですが($ 500 +)、より多くの形式をサポートし、より多くのオプションがあります。

http://www.softinterface.com/Convert-XLS/Convert-XLS.htm

"c:\Program Files (x86)\Softinterface, Inc\Convert XLS\ConvertXLS.exe" /V /S"c:\base\*.csv" /T"c:\exports\*.xlsx" /F6 /C51 /M2

Gnumeric」は、直接変換を実行できるオープンソースのスプレッドシートプログラムですが、Windowsでは2014年8月に廃止されました。

http://www.gnumeric.org/

ssconvert file.csv file.xlsx

Pythonがインストールされている場合、 "csv2odf"はオープンソースのオプションであり、テンプレート化されたアプローチを使用してodsを生成します、odt、html、xlsx、またはdocxファイル。

http://sourceforge.net/projects/csv2odf/

csv2odf data.csv template.odt output.xlsx
0
user326177

Node 8+ and bash:

npm install -g pguardiario/csv2xlsx

for file in *.csv; do csv2xlsx "$file"; done
0
pguardiario