データ主導の業務が一般化している現在、Python 開発者にとって「リスト(Python の基本データ構造)を Excel へ変換する」作業は非常に一般的です。Excel は多くの業界で、データの可視化・共有・レポート作成の標準ツールとして広く利用されています。レポート生成、分析前の前処理、非エンジニアへのデータ共有など、Python のリストを Excel に出力するスキルは欠かせません。 pandas のような軽量ライブラリでも基本的な出力は可能ですが、Spire.XLS for Python は Excel の書式設定、スタイル、ファイル生成を細かく制御でき、Microsoft Excel のインストールも不要です。このガイドでは、さまざまなリスト構造を Excel へ変換する方法を、実例とベストプラクティスとともに解説します。 なぜ Python のリストを Excel に変換するのか インストール手順 基本:一次元リストを Excel に書き込む 二次元リスト(ネストされたリスト)を Excel に変換する 辞書型(dict)のリストを Excel に変換する Excel 出力を最適化する 4 つのポイント まとめ FAQ なぜ Python のリストを Excel に変換するのか Python のリストは柔軟にデータを保持できますが、Excel には次のような利点があります: 共同作業:Excel は広く利用されており、Python を知らなくても並べ替え・フィルター・編集が可能。 レポート作成:書き出した後にグラフやピボットテーブルを追加できる。 コンプライアンス:多くの業界で Excel 形式が監査や保存の基準とされている。 可視化:色・枠線・ヘッダーなどの Excel の書式設定により、リストより読みやすい。 売上データ、ユーザー情報、アンケート結果など、Excel に書き出すことでデータの共有性と実用性が大幅に向上します。 インストール手順 Spire.XLS for Python を使用するには、pip でインストールします: pip install Spire.XLS Excel(.xls/.xlsx)形式の読み書きに対応し、太字、列幅、色などの書式設定が自由に行えます。 本番レベルの Excel 出力に最適なライブラリです。 さらに多くの機能を試すには、30日間の無料評価ライセンスを取得できます。 基本:一次元の Python リストを Excel に変換する 一次元リストを Excel に書き込む場合、リストをループし、1 列に順番に挿入します。 以下のコード例では、文字列のリストを 1 列に書き込みます。 数値リストの場合は、保存前に数値書式を設定できます。 from spire.xls import * from spire.xls.common import * # Workbook オブジェクトを作成します workbook = Workbook() # 既定で作成されるワークシートをすべて削除します workbook.Worksheets.Clear() # 新しいワークシートを追加します worksheet = workbook.Worksheets.Add("シンプルなリスト") # サンプルデータ(文字列のリスト) data_list = ["佐藤", "鈴木", "高橋", "田中", "伊藤"] # リストの内容を Excel セルに書き込みます(1行目・1列目から開始) for index, value in enumerate(data_list): worksheet.Range[index + 1, 1].Value = value # 表示を見やすくするため、列幅を設定します worksheet.Range[1, 1].ColumnWidth = 15 # Workbook を Excel ファイルとして保存します workbook.SaveToFile("SimpleListToExcel.xlsx", ExcelVersion.Version2016) workbook.Dispose() 1 行に並べたい場合は以下のようにします: for index, value in enumerate(data_list): worksheet.Range[1, index + 1].Value = value 出力結果: きれいに整った 1 列の Excel になります。 二次元リスト(ネストされたリスト)を Excel に変換する ネストされたリスト(2D リスト)は、行列形式のデータで、Excel シートに直接マッピングできます。 以下は、従業員データ(名前・年齢・部署)を Excel テーブルへ変換する例です。 from spire.xls import * from spire.xls.common import * # Workbook オブジェクトを作成します workbook = Workbook() # 既定で作成されるワークシートをすべて削除します workbook.Worksheets.Clear() # 新しいワークシートを追加します worksheet = workbook.Worksheets.Add("社員データ") # ネストされたリスト(各行:[氏名、年齢、部署]) employee_data = [ ["氏名", "年齢", "部署"], # ヘッダー行 ["佐藤 太郎", 30, "人事部"], ["鈴木 一郎", 28, "開発部"], ["高橋 花子", 35, "マーケティング部"], ["田中 美咲", 29, "経理部"] ] # ネストされたリストの内容を Excel に書き込みます for row_idx, row_data in enumerate(employee_data): for col_idx, value in enumerate(row_data): if isinstance(value, int): worksheet.Range[row_idx + 1, col_idx + 1].NumberValue = value else: worksheet.Range[row_idx + 1, col_idx + 1].Value = value # ヘッダー行の書式を設定します worksheet.Range["A1:C1"].Style.Font.IsBold = True worksheet.Range["A1:C1"].Style.Color = Color.get_Yellow() # 列幅を設定します worksheet.Range[1, 1].ColumnWidth = 10 worksheet.Range[1, 2].ColumnWidth = 6 worksheet.Range[1, 3].ColumnWidth = 15 # Workbook を Excel ファイルとして保存します workbook.SaveToFile("NestedListToExcel.xlsx", ExcelVersion.Version2016) workbook.Dispose() ポイント 最初のサブリストはヘッダーとして扱う 二重ループで行列を Excel セルにマッピング 出力結果: ヘッダーが太字・黄色で、型が正しく保持された Excel テーブル。 Excel ファイルをよりプロフェッショナルな仕上がりにするために、Spire.XLS for Python を使用して、セルの罫線を追加したり、条件付き書式を設定したり、その他の書式設定オプションを適用したりできます。 辞書型(dict)のリストを Excel に変換する 辞書型のリストは、フィールド名付きのデータ構造を扱う際に一般的です。 以下の例では、顧客情報のリストを Excel に書き出します。 from spire.xls import * from spire.xls.common import * # Workbook オブジェクトを作成します workbook = Workbook() # 既定で作成されるワークシートをすべて削除します workbook.Worksheets.Clear() # 新しいワークシートを追加します worksheet = workbook.Worksheets.Add("顧客データ") # 辞書のリスト customers = [ {"ID": 101, "氏名": "山田 太郎", "メールアドレス": "このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 "}, {"ID": 102, "氏名": "佐藤 花子", "メールアドレス": "このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 "}, {"ID": 103, "氏名": "鈴木 一郎", "メールアドレス": "このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 "} ] # 辞書のキーからヘッダーを取得します headers = list(customers[0].keys()) # ヘッダーを 1 行目に書き込みます for col, header in enumerate(headers): worksheet.Range[1, col + 1].Value = header worksheet.Range[1, col + 1].Style.Font.IsBold = True # ヘッダーを太字に設定します # データ行を書き込みます for row, customer in enumerate(customers, start=2): # 2 行目から開始します for col, key in enumerate(headers): value = customer[key] if isinstance(value, (int, float)): worksheet.Range[row, col + 1].NumberValue = value else: worksheet.Range[row, col + 1].Value = value # 列幅を自動調整します worksheet.AutoFitColumn(2) worksheet.AutoFitColumn(3) # Workbook を Excel ファイルとして保存します workbook.SaveToFile("CustomerDataToExcel.xlsx", ExcelVersion.Version2016) workbook.Dispose() メリット ヘッダーを自動抽出:手動で列名を定義する必要なし 列幅自動調整:内容に合わせて最適化 大規模データでも対応可能 出力結果:ヘッダーが自動生成され、データ型が保持され、列幅が自動調整された Excel ファイル。 Excel 出力を最適化する 4 つのポイント データ型を保持する:数値には NumberValue を使用(Excel 内で計算が正しく機能) 列幅を自動調整する:AutoFitColumn() で手動設定の手間を軽減 シート名を分かりやすくする:"Sheet1" ではなく "Q3 Sales" などに変更 Workbook を破棄する:大量データでは Dispose() によるメモリ解放が重要 まとめ Python のリストを Excel に変換する作業はデータ処理の基本スキルです。 Spire.XLS を利用することで、簡単なリストから複雑な入れ子構造、辞書型データまで、きれいで実用的な Excel ファイルを簡単に生成できます。 より高度な操作(グラフ、数式追加など)については、公式ドキュメントをご覧ください。 FAQs:リストから Excel への変換 Q1: pandas と Spire.XLS の違いは? A: pandas は素早い基本出力に適していますが、書式設定の自由度は低めです。 Spire.XLS は以下の用途に向いています: 色・フォント・罫線などの高度な書式設定 ウィンドウ枠の固定、条件付き書式、グラフなどの Excel 機能を利用 Excel のインストール不要で 単独動作 Q2: Excel ファイルを別形式で保存する方法は? workbook.SaveToFile("output.xlsx", ExcelVersion.Version2016) workbook.SaveToFile("output.xls", ExcelVersion.Version97to2003) Q3: Spire.XLS はデータ型をどのように扱う? .Text:文字列 .NumberValue:数値 .DateTimeValue:日付 .BooleanValue:True/False Q4: なぜデフォルトのワークシートを削除するのですか? A: Workbook を作成すると空のシートが自動生成されるため、 Workbook.Worksheets.Clear() を呼ばないと不要なシートが残ります。 Q5: Excel に正しく表示されない場合の原因は? A: 主な原因は次の通りです: Excel のセルは 1 から始まるインデックスを使用している データ型が適切に設定されていない 保存前に Workbook.Dispose() を呼んでいない