チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»Python»Spire.XLS for Python»文書操作»Python で Excel ファイルに書き込む|データ自動化ガイド
2025-09-19

Python で Excel ファイルに書き込む|データ自動化ガイド

Python コードで Excel ワークシートにデータを書き込む方法のチュートリアル

Excel は、データの整理・分析・可視化において最も広く利用されているツールのひとつです。財務報告書から業務ダッシュボードに至るまで、多くのワークフローで Excel へのデータ出力が必要とされます。手動で情報を入力する代わりに、Python で Excel ファイルを書き込む処理を自動化すれば、処理がより迅速で、信頼性が高く、スケーラブルになります。

本チュートリアルでは、Python を使って Excel ファイルにデータを書き込む方法を解説します。構造化データの挿入、書式設定、エクスポートまでをカバーしており、例ではプログラムからワークブックを生成・カスタマイズできる Python の Excel ライブラリを使用しています。

本チュートリアルの内容:

環境のセットアップ

Python で Excel ファイルを書き込むには、ワークブックの作成・読み込み・保存をプログラム的に行えるライブラリが必要です。Spire.XLS for Python はこれらの操作に対応した完全な API を提供し、レポート作成やデータ処理を自動化できます。

pip を使ってインストールします:

pip install spire.xls

インストール後は、次の 3 つの基本操作が可能になります:

  • 新しいワークブックを作成Workbook() で新規 Excel ドキュメントを初期化。
  • 既存のワークブックを読み込みLoadFromFile() で既存の Excel ファイルを開く。
  • ワークブックを保存SaveToFile() でワークブックを .xlsx、.xls、CSV など任意の形式にエクスポート。

これらの操作が、Python におけるデータ書き込み、書式設定、複数シート管理の基礎となります。

Python で Excel ファイルにデータを書き込む

実際のビジネスシーンでは、新しい Excel ファイルの作成、既存レポートの更新、テキスト・数値・日付・数式などさまざまな種類のデータ書き込みが必要です。このセクションでは、これらのケースにおける効率的な Python での Excel データ操作を紹介します。

既存の Excel ファイルにデータを追加する

最新の売上データや在庫情報などを既存の Excel ワークブックに追記したい場合、ファイルを開いてプログラムで新しいデータ行を追加し、既存の内容を保持したまま保存できます。

from spire.xls import Workbook, ExcelVersion

workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")
sheet = workbook.Worksheets[0]

# 新しい行を追加
sheet.Range["A4"].Value = "ノートパソコン"
sheet.Range["B4"].NumberValue = 5
sheet.Range["C4"].NumberValue = 120000

sheet.Range["A5"].Value = "モニター"
sheet.Range["B5"].NumberValue = 10
sheet.Range["C5"].NumberValue = 30000

workbook.SaveToFile("output/updated_excel.xlsx", ExcelVersion.Version2016)

ポイントとなる要素:

  • LoadFromFile() – 既存の Excel ファイルをワークブックに読み込む。
  • Range["セル名"] – シート内の特定セルを参照。
  • Value / NumberValue – セルにテキストや数値を代入。
  • SaveToFile() – 指定形式でファイルを保存。

この方法により、既存のレポートを保持したまま継続的にデータを更新できます。

Python で既存の Excel ファイルに行を追加する例

新しい Excel ファイルに複数行・列を書き込む

大規模なデータセットを扱う場合、セル単位で更新するよりも複数行・列を一括で書き込む方が効率的です。この方法は処理速度の向上だけでなく、ワークシート全体のデータ整合性を確保できます。

from spire.xls import Workbook, ExcelVersion

# 新しい Excel ワークブックを作成
workbook = Workbook()
sheet = workbook.Worksheets[0]

orders = [
    ["注文ID", "顧客名", "商品名", "数量", "単価", "ステータス"],
    [1001, "佐藤", "ノートパソコン", 2, 120000, "発送済み"],
    [1002, "鈴木", "モニター", 1, 30000, "保留中"],
    [1003, "高橋", "キーボード", 5, 4500, "配達済み"],
    [1004, "田中", "マウス", 3, 2500, "発送済み"],
    [1005, "伊藤", "タブレット", 1, 45000, "保留中"]
]

for row_index, row_data in enumerate(orders, start=1):
    for col_index, value in enumerate(row_data, start=1):
        if isinstance(value, (int, float)):
            sheet.Range[row_index, col_index].NumberValue = value
        else:
            sheet.Range[row_index, col_index].Value = value

workbook.SaveToFile("output/orders.xlsx", ExcelVersion.Version2016)

注目すべき要素:

  • enumerate() – ループ処理で行番号・列番号を取得。
  • Range[row, col] – 行・列インデックスでセルを参照。

バッチ書き込みは、データベースのクエリ結果や業務レポートのエクスポートに特に有効です。

Python で複数行・列を一括で Excel に書き込む例

複数のデータ型を書き込む

Excel のセルは、テキスト・数値・日付・数式など多様なデータ型を扱えます。正しいプロパティを使うことで、各データ型が適切に保存・表示され、計算や書式設定が正確に行われます。

from spire.xls import Workbook, ExcelVersion, DateTime, TimeSpan

workbook = Workbook()
sheet = workbook.Worksheets[0]

# 一般的な値
sheet.Range[2, 2].Text = "一般的な例"
sheet.Range[2, 3].Value = "サンプル123"

# 数値
sheet.Range[3, 2].Text = "数値の例"
sheet.Range[3, 3].NumberValue = 1234.56
sheet.Range[3, 3].NumberFormat = "0.000"

# 日付
sheet.Range[4, 2].Text = "日付の例"
sheet.Range[4, 3].DateTimeValue = DateTime.get_UtcNow()

# 数式
sheet.Range[5, 2].Text = "数式の例"
sheet.Range[5, 5].NumberValue = 1234.56
sheet.Range[5, 6].NumberValue = 6543.21
sheet.Range[5, 3].Formula = "=SUM(E5:F5)"

# テキスト
sheet.Range[6, 2].Text = "文字列の例"
sheet.Range[6, 3].Text = "テキスト"

# 真偽値
sheet.Range[7, 2].Text = "真偽値の例"
sheet.Range[7, 3].BooleanValue = True

sheet.AllocatedRange.Style.Font.FontName = "Yu Gothic UI"
sheet.AllocatedRange.AutoFitColumns()

workbook.SaveToFile("output/value_types.xlsx", ExcelVersion.Version2016)

主な関数・プロパティ:

  • Value – 一般的な値を設定または取得。テキストや混在データ向け。
  • NumberValue – 数値を設定・取得し、計算や数値書式を正確に扱う。
  • DateTimeValue – 日付や時刻を設定・取得。正しいフォーマットで表示。
  • Formula – 数式を設定または取得し、動的な計算を可能にする。
  • BooleanValue – True/False のブール値を設定。
  • Text – 書式適用後の表示テキストを取得。

異なるデータ型を正しく扱うことは、ビジネス計算やレポートの精度を維持するために不可欠です。対応するデータ型の詳細は XlsRange API リファレンス を参照してください。

Python でテキスト・数値・日付・数式を Excel に書き込む例

Python で Excel データを書き込みながら書式設定する

Excel レポートをわかりやすく、プロフェッショナルに仕上げるには、データ入力や更新と同時に書式を適用することが重要です。このセクションでは、セルのスタイル、数値フォーマット、列幅・行高の調整方法を解説します。

セルスタイルの適用

フォント・罫線・背景色などのスタイルを適用することで、シートの可読性と視覚的な訴求力を高められます。

from spire.xls import Workbook, Color, FontUnderlineType, ExcelVersion, BordersLineType, LineStyleType

workbook = Workbook()
sheet = workbook.Worksheets[0]

# 見出し
sheet.Range["A1"].Value = "商品"
sheet.Range["B1"].Value = "カテゴリ"
sheet.Range["C1"].Value = "価格"
sheet.Range["D1"].Value = "数量"
sheet.Range["E1"].Value = "合計"

# データ行
sheet.Range["A2"].Value = "ノートパソコン"
sheet.Range["B2"].Value = "パソコン"
sheet.Range["C2"].NumberValue = 150000
sheet.Range["D2"].NumberValue = 1
sheet.Range["E2"].Formula = "=C2*D2"

sheet.Range["A3"].Value = "スマートフォン"
sheet.Range["B3"].Value = "モバイル"
sheet.Range["C3"].NumberValue = 90000
sheet.Range["D3"].NumberValue = 2
sheet.Range["E3"].Formula = "=C3*D3"

# ヘッダーのスタイル
header = sheet.Range["A1:E1"]
header.Style.Font.FontName = "Yu Gothic UI"
header.Style.Font.Size = 12.0
header.Style.Font.IsBold = True
header.Style.Font.Underline = FontUnderlineType.Single
header.Style.Interior.Color = Color.get_LightGray()
header.Style.Borders[BordersLineType.EdgeRight].LineStyle = LineStyleType.Medium

主な構成要素:

  • Style.Font – フォント関連の設定(太字、下線など)。詳細は Style.Font API ドキュメント を参照。
  • FontUnderlineType.Single – 一重下線を適用。
  • Interior.Color – 背景色を設定。
  • Borders.LineStyle – セルに罫線を追加。

スタイルを使うことで、重要な部分を強調し、レポート全体の見栄えを向上させられます。

Excel セルの数値フォーマットを設定

数値はフォーマットを適切に指定することで、通貨・パーセンテージ・整数など読みやすい形で表示できます。CellRange.NumberFormat を利用して、値の見せ方を制御します。

# 数値のフォーマット(円表示)
sheet.Range["C2:C3"].NumberFormat = "¥#,##0"   # 通貨
sheet.Range["D2:D3"].NumberFormat = "0"        # 整数
sheet.Range["E2:E3"].NumberFormat = "¥#,##0"

ポイント:

  • NumberFormat – 表示形式を設定・取得。データはそのまま保持しつつ見た目だけを変えることが可能。
  • フォーマットコードで通貨記号、小数点、桁区切り、割合表示などを柔軟に設定可能。

適切な数値フォーマットにより、財務データが理解しやすく、よりプロフェッショナルに見えます。詳細は Python で Excel セルの数値フォーマットを設定する方法 を参照してください。

列幅と行高の調整

列幅や行高を適切に設定することで、内容を見やすく表示できます。自動調整や固定値の指定が可能です。

# 列幅と行の高さを自動調整
for col in range(1, 5):
    sheet.AutoFitColumn(col)
for row in range(1, 3):
    sheet.AutoFitRow(row)
#sheet.Range["A1:E3"].AutoFitColumns()
#sheet.Range["A1:E3"].AutoFitRows()

# 固定の列幅と行の高さを設定
sheet.Columns[1].Width = 150
sheet.Rows[1].Height = 30

workbook.SaveToFile("output/formatted_excel.xlsx", ExcelVersion.Version2016)

ポイント:

  • AutoFitColumn(colIndex) / AutoFitRow(rowIndex) – 指定列や行を自動調整。
  • CellRange.AutoFitColumns() / AutoFitRows() – 指定範囲の列や行を一括調整。
  • Columns[colIndex].Width / Rows[rowIndex].Height – 固定値を設定してレイアウトを統一。

動的データには自動調整、定型レイアウトには固定値を用いることで、見やすさと一貫性を両立できます。

Python でスタイルと自動調整を適用した Excel ヘッダー例

より高度な Excel 書式設定(フォント・色・罫線・条件付き書式など)については、Python で Excel を書式設定する方法 を参照してください。

Python で複数のワークシートを管理する

Excel では、複数のワークシートを使うことで関連情報を分離し、管理しやすくできます。たとえば、売上・仕入・在庫を同じワークブック内の別シートに整理できます。このセクションでは、Python で 複数シートを作成・参照・管理する方法を紹介します。

from spire.xls import Workbook, ExcelVersion

workbook = Workbook()
# 新しく作成されたワークブックには、
# デフォルトのワークシートが3つ含まれています

# ワークシート名を日本語に設定
sheet = workbook.Worksheets[0]
sheet.Name = "売上データ"

sheet1 = workbook.Worksheets["Sheet2"]
sheet1.Name = "仕入データ"

sheet2 = workbook.Worksheets.Add("在庫データ")
sheet2.Range["A1"].Value = "商品ID"
sheet2.Range["B1"].Value = "在庫数"
sheet2.Range["A2"].Value = "P001"
sheet2.Range["B2"].NumberValue = 100
sheet2.Range["A3"].Value = "P002"
sheet2.Range["B3"].NumberValue = 50

workbook.Worksheets.RemoveAt(2)

workbook.SaveToFile("output/multi_sheet.xlsx", ExcelVersion.Version2016)

主な操作:

  • Worksheets[Index] – インデックスでシートにアクセス。反復処理や先頭・末尾シート参照に便利。
  • Worksheets["シート名"] – 名前でシートにアクセス。順序変更の影響を受けにくく可読性が高い。
  • Worksheets.Add("シート名") – 新しいシートを作成し、部門・地域・カテゴリごとにデータを整理可能。

これにより、Excel ファイルを論理的に構成し、関連データを分離して明確かつ管理しやすくできます。

Python で複数の Excel ワークシートを作成・管理する例

Python で Excel ファイルを書き込む際のベストプラクティス

効率性・一貫性・使いやすさを確保するため、以下のベストプラクティスに従うことを推奨します:

  • 「Sheet1」ではなく「Sales_2024」のような 意味のあるシート名を使用する。
  • 大量データはバッチ処理で書き込み、セル単位更新は避ける。
  • 見出しや合計列などに 一貫した書式設定を適用する。
  • Excel の数式を活用して動的計算を維持する。
  • データ型を検証し、グラフや数式での誤解釈を防ぐ。
  • 対象に適したファイル形式を選択:最新環境では .xlsx、互換性が必要な場合のみ .xls。
  • シートを論理的に整理し、関連データをグルーピングする。

これらを実践することで、再利用可能でプロフェッショナルなレポートを効率的に作成できます。

まとめ

Python で Excel 書き込みを自動化すれば、レポート作成が大幅に効率化されます。ワークブック作成、データの効率的な書き込み、スタイル適用、シート管理、多様なデータ型の処理を組み合わせることで、一貫性・正確性・プロフェッショナル性を備えた Excel レポートが実現できます。さらに詳しく試すには、無料の一時ライセンスを申請するか、Free Spire.XLS for Python を利用できます。

Python での Excel 書き込み FAQ

Q1: Python で既存の Excel ファイルに書き込めますか?

はい、既存のワークブックを読み込み、データを追加・修正した上で保存できます。既存の内容は保持されます。

Q2: 大規模データを効率的に処理する方法は?

複数行のバッチ書き込みと、書式設定を最小限に抑えた挿入で、数千行規模でも高いパフォーマンスを維持できます。

Q3: 数式を Excel ファイルに含められますか?

はい、=SUM() などの基本数式から複雑な計算式まで挿入でき、レポートを動的に更新できます。

Q4: 対応している Excel 形式は?

Spire.XLS for Python は .xlsx、.xls、CSV、さらに PDF へのエクスポートにも対応しており、一般的な利用シナリオと互換性要件をカバーします。

Read 7 times