
CSV(Comma-Separated Values)ファイルは、データ分析からバックエンドシステムまで、さまざまな業界におけるデータ交換の基盤となるファイル形式です。軽量で人が読みやすく、Excel、Google スプレッドシート、データベースなど、ほぼすべてのツールと互換性があります。Python で CSV ファイルを作成する方法 を探している開発者にとって、Spire.XLS for Python はその処理を大幅に簡素化できる強力なライブラリです。
本記事では、Spire.XLS を使用して Python で CSV ファイルを生成する方法 を詳しく解説します。基本的な CSV 作成から、リストや辞書データの変換、Excel から CSV への変換といった実践的なユースケースまで幅広くカバーします。
本記事で学べること
- インストールとセットアップ
- 基本編:Python でシンプルな CSV ファイルを作成する
- 動的データ:辞書のリストから CSV を生成する
- Excel から CSV へ:Excel ファイルを CSV に変換する
- CSV 作成時のベストプラクティス
- FAQ:Python で CSV を作成する
インストールとセットアップ
Spire.XLS for Python の導入は非常に簡単です。以下の手順で環境を準備します。
ステップ 1: Python 3.6 以上がインストールされていることを確認します。
ステップ 2: pip(Python の公式パッケージマネージャー)でライブラリをインストールします。
pip install Spire.XLS
ステップ 3(任意): すべての機能を制限なく試用するには、一時的な無料ライセンスを申請 します。
基本編:Python でシンプルな CSV ファイルを作成する
まずは、静的なデータ(例:売上レポート)から CSV ファイルを作成するシンプルな例を見ていきます。以下のコードでは、新しいワークブックを作成し、データを入力して CSV ファイルとして保存します。
from spire.xls import *
# 1. 新しいワークブックを作成
workbook = Workbook()
# 2. 先頭のワークシートを取得(既定のシート)
worksheet = workbook.Worksheets[0]
# 3. セルにデータを入力
# ヘッダー行
worksheet.Range["A1"].Text = "商品ID"
worksheet.Range["B1"].Text = "商品名"
worksheet.Range["C1"].Text = "単価"
worksheet.Range["D1"].Text = "販売数量"
worksheet.Range["A2"].NumberValue = 101
worksheet.Range["B2"].Text = "ワイヤレスイヤホン"
worksheet.Range["C2"].NumberValue = 7980
worksheet.Range["D2"].NumberValue = 250
worksheet.Range["A3"].NumberValue = 102
worksheet.Range["B3"].Text = "Bluetoothスピーカー"
worksheet.Range["C3"].NumberValue = 4980
worksheet.Range["D3"].NumberValue = 180
# CSV として保存
worksheet.SaveToFile("BasicSalesReport.csv", ",", Encoding.get_UTF8())
workbook.Dispose()
コアワークフロー
- コアオブジェクトの初期化:
Workbook()で新しい Excel ワークブックを作成し、Worksheets[0]で対象のワークシートにアクセスします。 - セルへのデータ入力:文字列には
.Text、数値には.NumberValueを使用し、適切なデータ型を保持します。 - エクスポートとリソース解放:
SaveToFile()で CSV にエクスポートし、Dispose()でメモリリークを防止します。
出力結果:
生成された BasicSalesReport.csv は次のようになります。

動的データ:辞書のリストから CSV を生成する
実際の業務では、データは API やデータベースから取得した辞書形式(JSON など)で扱われることが一般的です。以下の例では、辞書のリストを CSV に変換します。
from spire.xls import *
# サンプルデータ(データベースや API から取得した想定)
customer_data = [
{"顧客ID": 1, "氏名": "山田 太郎", "メールアドレス": "taro.yamada@ example.co.jp", "国名": "日本"},
{"顧客ID": 2, "氏名": "佐藤 花子", "メールアドレス": "hanako.sato@ example.co.jp", "国名": "日本"},
{"顧客ID": 3, "氏名": "鈴木 一郎", "メールアドレス": "ichiro.suzuki@ example.co.jp", "国名": "日本"}
]
# 1. ワークブックとワークシートを作成
workbook = Workbook()
worksheet = workbook.Worksheets[0]
# 2. ヘッダー行を書き込み(最初の辞書のキーを取得)
headers = list(customer_data[0].keys())
for col_idx, header in enumerate(headers, start=1):
worksheet.Range[1, col_idx].Text = header # 1 行目 = ヘッダー
# 3. データ行を書き込み
for row_idx, customer in enumerate(customer_data, start=2): # 2 行目から開始
for col_idx, key in enumerate(headers, start=1):
value = customer[key]
if isinstance(value, (int, float)):
worksheet.Range[row_idx, col_idx].NumberValue = value
else:
worksheet.Range[row_idx, col_idx].Text = value
# 4. CSV として保存
worksheet.SaveToFile("CustomerData.csv", ",", Encoding.get_UTF8())
workbook.Dispose()
この方法は、JSON から CSV への変換、データベースのダンプ、REST API データのエクスポートなどに最適です。主な利点は以下のとおりです。
- 動的ヘッダー生成:最初の辞書のキーから自動的にヘッダーを抽出します。
- 高い拡張性:辞書の数やキー・バリューの組み合わせが増減しても柔軟に対応できます。
- 整った出力構造:辞書キーの順序を保持し、一貫性のある CSV 構造を維持します。
生成された CSV ファイル:

Excel から CSV へ:Excel ファイルを CSV に変換する
Spire.XLS は、Python で Excel(XLS/XLSX)を CSV に変換する処理にも優れています。Excel レポートをデータパイプラインや外部ツール向けに CSV として出力する場合に便利です。
from spire.xls import *
# 1. ワークブックを初期化
workbook = Workbook()
# 2. xlsx ファイルを読み込み
workbook.LoadFromFile("Sample.xlsx")
# 3. Excel を CSV として保存
workbook.SaveToFile("XLSXToCSV.csv", FileFormat.CSV)
workbook.Dispose()
変換結果:

注意: SaveToFile() は既定では最初のワークシートのみを変換します。
CSV 作成時のベストプラクティス
堅牢で実務に耐える CSV を生成するために、以下のポイントを意識してください。
- 事前にデータを検証する:空行や不要な列を事前に整理してからエクスポートします。
- UTF-8 エンコーディングを使用する:
Encoding.get_UTF8()を明示的に指定し、多言語文字に対応します。 - バッチ処理を適切に行う:10 万行以上のデータを扱う場合は、分割処理を行い、一度に全データをメモリへ読み込まないようにします。
- 適切な区切り文字を選択する:地域設定によっては、カンマの代わりにセミコロン(;)を使用します。
- オブジェクトを解放する:
Dispose()を呼び出してワークブック/ワークシートのリソースを解放し、メモリリークを防ぎます。
まとめ
Spire.XLS を活用すれば、Python での CSV ファイル生成を効率的かつ柔軟に実装できます。ゼロからのレポート作成、Excel ブックの変換、API やデータベースから取得した動的データの処理まで、幅広いシナリオに対応可能です。
本ガイドで紹介した方法を応用すれば、区切り文字やエンコーディング(UTF-8 など)の指定、データ型の適切な管理を行いながら、正確で互換性の高い CSV ファイルを作成できます。さらに高度な機能については、Spire.XLS for Python チュートリアル を参照してください。
FAQ:Python で CSV を作成する
Q1: なぜ Python 標準の csv モジュールではなく Spire.XLS を選ぶのですか?
A: Python 標準の csv モジュールは基本的な読み書きには適していますが、Spire.XLS には以下の利点があります。
- 高度なデータ型処理:文字列と数値を自動的に区別します。
- Excel との高い互換性:Excel(XLSX/XLS)と CSV の相互変換をシームレスに実現します。
- 高度なカスタマイズ:区切り文字やエンコーディングを柔軟に指定可能です。
- バッチ処理対応:大規模データや複数ファイルを効率的に処理できます。
- クロスプラットフォーム対応:Windows、macOS、Linux で動作し、Excel のインストールは不要です。
Q2: Spire.XLS for Python で CSV ファイルを読み込むことはできますか?
A: はい。Spire.XLS は CSV ファイルの解析とデータ抽出をサポートしています。
Q3: CSV ファイルを Excel 形式に変換できますか?
A: はい。Spire.XLS は双方向変換をサポートしています。簡単な例は以下のとおりです。
from spire.xls import *
# ワークブックを作成
workbook = Workbook()
# CSV ファイルを読み込み
workbook.LoadFromFile("sample.csv", ",", 1, 1)
# Excel 形式で保存
workbook.SaveToFile("CSVToExcel.xlsx", ExcelVersion.Version2016)
Q4: CSV の区切り文字を変更するにはどうすればよいですか?
A: SaveToFile() メソッドの第 2 引数で区切り文字を指定します。
# セミコロン(ヨーロッパ地域向け)
worksheet.SaveToFile("EU.csv", ";", Encoding.get_UTF8())
# タブ区切り(TSV)
worksheet.SaveToFile("TSV_File.csv", "\t", Encoding.get_UTF8())






