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


11

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

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


1
なぜそうする必要があるのか​​わからない。csvはExcelでうまく開きます。対話する必要がある人は問題なく開くことができます。
ジョディ

2
Excelはcsvとxls / xlsxを問題なく開きます。ただし、他のプログラムはサポートしていません。=)
mindless.panda '24年

1
では、どのプログラムでこれを使用する予定ですか?
カーク

回答:


21

(何らかの理由で)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')

2
Macintoshでは、上記のxlsxバージョンを使用しました。Pythonからの「ユニバーサルニューラインモード」エラーを回避するには、「rb」を「rU」に変更する必要がありました。「列挙型の行」と「列挙型の値」に「start = 1」を使用すると、実際のデータの上に空白行、左側に空白列が作成されます。両方を「start = 0」に変更し、スプレッドシート(​​Excel 2011)のセルA1(左上)のデータを開始しました。また、最後の行を「wb.save(os.path.splitext(csvfile)[0] + '.xlsx')」に変更して、ファイルの.csv部分を削除しました(例:nnnn.csv.xlsxからnnnn)。 xlsx)。
マイケルSテイラー

1

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


1

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

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のいずれかを選択できる単純なメッセージボックスを追加することもできます。

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


0

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

Node 8+とbashの場合:

npm install -g pguardiario/csv2xlsx

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

-1

簡単な方法:Microsoft Excelからcsvファイルを開き、テキストを列に変換します(セル/テキストを選択し、[メニュー]-[データ]-[テキストから列]をクリック)変換オプションを設定します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.