フッターコンテンツにスキップ
EXCEL ツール

Python で Excel ファイルを書く方法

Excel ファイルは、さまざまな分野のデータ分析、レポート作成、保存に不可欠です。 Python にはオープンソース モジュールの幅広いエコシステムがあるため、開発者にはプログラムで Excel ファイルを作成する場合の選択肢が豊富にあります。 これらのライブラリは、幅広いユースケースと設定をサポートし、高レベルの抽象化と Excel ドキュメントのきめ細かな制御を提供します。

これにより、開発者は Excel 関連のプロセスを簡単に自動化し、動的なレポートを作成し、データをエクスポートできるようになります。 C# で Excel ファイルを作成する場合に、IronXL が Python ライブラリの強力な代替手段となる理由について説明します。

その機能、使いやすさ、パフォーマンス上の利点を検証し、その力を強調する便利なコード サンプルを紹介します。 また、Python を使用して、さまざまなオープンソース ライブラリで Excel ファイルを作成します。

PythonでExcelファイルを書く方法

  1. 必要なライブラリをインポートします。
  2. データを準備するか、提供します。
  3. ワークブックまたはデータ フレームと呼ばれるオブジェクトを作成します。
  4. オブジェクト内にデータを配置します。
  5. 適切な手法を使用して、オブジェクトを Excel ファイルに保存します。
  6. 必要に応じて、さらに書式設定やカスタマイズを行います。

パンダ

Pandas は、ユーザーフレンドリーで多用途であるという評判があり、堅牢な Python データ操作パッケージです。 Pandas は主に DataFrames に重点を置いていますが、Excel ファイル作成機能も備えています。

開発者は、to_excel() API を使用して、DataFrame を Excel 形式に簡単にエクスポートできます。 DataFrames を使用して別のシートにエクスポートすることもできます。

タブライブラリ Python の表形式データは、Pandas のデータ形式、インデックスの可視性、シート名の選択により、簡単に Excel ファイルに変換できます。

! PythonでExcelファイルを書く方法: 図1

XLWT

このライブラリを使用すると、古い .xls 形式の Excel ファイルにデータと書式情報を書き込むことができます。 Xlwt は、積極的に開発されていない場合でも、以前の Excel バージョンまたはレガシー システムとの互換性が必要な状況では依然として実行可能なソリューションです。

開発者は xlwt の機能を使用して、セルにデータを書き込んだり、ワークシートを追加したり、Workbook オブジェクトを構築したりできます。 Xlwt は、最近のツールと比較すると制限はあるものの、Python で Excel ファイルを作成するための基本的な機能を提供します。

! PythonでExcelファイルを書く方法: 図2

タブライブラリ

この柔軟なライブラリは、Excel を含むさまざまな形式の表形式データを処理できます。 Tablib はデータの処理とシリアル化に主眼を置いていますが、Excel 形式でデータをエクスポートする機能も備えています。

Tablib が提供するメソッドを使用すると、開発者は Dataset オブジェクトを簡単に構築し、データを追加し、Excel ファイルにエクスポートできます。 Tablib は汎用性と使いやすさに優れているため、単純な Excel ファイルの作成を伴う Python ジョブに適しています。

PythonでExcelファイルを書く方法:図3

エゾドフ

スプレッドシートやその他の OpenDocument Format (ODF) ファイルは、 ezodfライブラリを使用して操作できます。 ezodf は Excel ファイルを考慮して設計されているわけではありませんが、Python ユーザーにスプレッドシート ドキュメントを作成して操作する機能を提供します。

開発者は、ezodf のテクニックを使用して、ワークシートを追加したり、Excel シートのセルにデータをプログラムで書き込んだり、ODS (OpenDocument Spreadsheet) ファイルを作成したりできます。 それほど普及していませんが、ezodf は、Python でスプレッドシート ドキュメントを扱いながら Excel ファイルを作成するオプションを提供します。

! PythonでExcelファイルを書く方法: 図4

pyxlsb

pyxlsbと呼ばれる Python パッケージは、Excel バイナリ ワークブック (.xlsb) ファイルの読み取りと書き込みに使用されます。 ワークシートの追加、バイナリ Excel 形式でのセルへのデータの書き込み、Workbook オブジェクトの生成などの機能を提供します。

.xlsb ファイルのサポートは .xlsx や .xls ほど広範囲ではありませんが、pyxlsb はバイナリ Excel ファイルを操作する Python 機能を提供し、Excel のバイナリ形式との互換性が必要な特定のユースケースに対応します。

! PythonでExcelファイルを書く方法: 図5

IronXL

IronXL は、Excel ファイルを操作するための機能豊富な C# ライブラリです。 Iron Software によって作成された IronXL は、Excel ドキュメントを動的に作成、フォーマット、および入力するための包括的な機能を提供します。 IronXL は、ユーザーフレンドリーな API と包括的なドキュメントを使用して C# での Excel のやり取りを合理化し、開発者に Excel 関連のアクティビティのスムーズなエクスペリエンスを提供します。

IronXLの特徴

  • Excel の幅広いサポート: IronXL は、csv、ファイル、xls ファイル、xlsx ファイルなど、さまざまな Excel 形式の幅広い Excel ファイルを開いて操作できます。 IronXL の強力な解析機能により、開発者は古い Excel ファイルと最新の Excel ファイルの両方を使用して、既存の Excel ファイルからデータを効率的に抽出できます。 *高速*: IronXL は速度の最適化を最優先に考えています。 効果的なアルゴリズムとメモリ管理技術を使用して、信頼性が高く高速な Excel 対話を実現します。 IronXL は最適化された処理速度とメモリ オーバーヘッドの削減を実現するため、開発者は大きな Excel ファイルを簡単に処理できます。 シンプルで使いやすい API : IronXL は、わかりやすくユーザーフレンドリーな API を備えているため、さまざまな経験レベルの開発者に適しています。 IronXL は、Excel ファイルの読み取り、Excel ブックへのアクセス、セルからのデータの取得を簡単に行う方法を提供することで、C# 開発者の学習曲線を下げ、既存のファイルの作成と読み取りのプロセスを効率化します。 きめ細かな制御: 他の高レベルライブラリとは異なり、IronXL では開発者が Excel ドキュメントをきめ細かに制御できるため、Excel スプレッドシートをセル レベルまで操作できます。 開発者は特定のセル、行、列、スプレッドシートにアクセスできるため、ニーズにぴったり合うようにデータを抽出したり変更したりできます。 クロスプラットフォームの互換性**: IronXL は、Windows、Linux、macOS などのさまざまなオペレーティング システムで動作するため、クロスプラットフォームの C# 開発に適しています。 デスクトップ、Web、モバイルのいずれのアプリケーションを開発する場合でも、開発者は IronXL を利用して、複数のコンテキストにわたって一貫した Excel 操作を提供できます。

IronXLのドキュメントについてもっと知りたい場合はこちらを参照してください。

IronXLのインストール

IronXL をインストールするには、次の手順とコマンド ラインを使用します。

Visual Studio で、[ツール] -> [NuGet パッケージ管理] -> [パッケージ マネージャー インターフェイス] に移動します。

パッケージ マネージャーのコンソール タブに次のコードを入力します。

pip install IronXL

ファイルはダウンロードされ、現在のプロジェクトにインストールされた後、使用できるようになります。

C# で IronXL を使用して Excel データを書き込む

それでは、C# で IronXL を使用して Excel ドキュメントにデータを書き込む方法を示す実際のコード サンプルを詳しく見ていきましょう。 新しい Excel ブックを開き、ワークシートにデータを入力して、データをファイルに保存する方法を説明します。

using IronXL; // Include IronXL namespace

class Program
{
    static void Main(string[] args)
    {
        // Create a new WorkBook object in .xlsx format
        WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
        // Add a new WorkSheet named "Sheet1" to the workbook
        WorkSheet workSheet = workBook.CreateWorkSheet("Sheet1");

        // Define sample data
        string[,] data = {
            { "Name", "Age", "City" },
            { "John ", "25", "New York" },
            { "Smith", "30", "Los Angeles" },
            { "Johnson", "35", "Chicago" }
        };

        // Populate the worksheet with data
        for (int row = 0; row < data.GetLength(0); row++)
        {
            for (int col = 0; col < data.GetLength(1); col++)
            {
                workSheet.SetCellValue(row, col, data[row, col]);
            }
        }

        // Save the workbook to a .xlsx file named "Demo.xlsx"
        workBook.SaveAs("Demo.xlsx");

        // Close the workbook to free resources
        workBook.Close();
    }
}
using IronXL; // Include IronXL namespace

class Program
{
    static void Main(string[] args)
    {
        // Create a new WorkBook object in .xlsx format
        WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
        // Add a new WorkSheet named "Sheet1" to the workbook
        WorkSheet workSheet = workBook.CreateWorkSheet("Sheet1");

        // Define sample data
        string[,] data = {
            { "Name", "Age", "City" },
            { "John ", "25", "New York" },
            { "Smith", "30", "Los Angeles" },
            { "Johnson", "35", "Chicago" }
        };

        // Populate the worksheet with data
        for (int row = 0; row < data.GetLength(0); row++)
        {
            for (int col = 0; col < data.GetLength(1); col++)
            {
                workSheet.SetCellValue(row, col, data[row, col]);
            }
        }

        // Save the workbook to a .xlsx file named "Demo.xlsx"
        workBook.SaveAs("Demo.xlsx");

        // Close the workbook to free resources
        workBook.Close();
    }
}
Imports IronXL ' Include IronXL namespace

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Create a new WorkBook object in .xlsx format
		Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
		' Add a new WorkSheet named "Sheet1" to the workbook
		Dim workSheet As WorkSheet = workBook.CreateWorkSheet("Sheet1")

		' Define sample data
		Dim data(,) As String = {
			{ "Name", "Age", "City" },
			{ "John ", "25", "New York" },
			{ "Smith", "30", "Los Angeles" },
			{ "Johnson", "35", "Chicago" }
		}

		' Populate the worksheet with data
		For row As Integer = 0 To data.GetLength(0) - 1
			For col As Integer = 0 To data.GetLength(1) - 1
				workSheet.SetCellValue(row, col, data(row, col))
			Next col
		Next row

		' Save the workbook to a .xlsx file named "Demo.xlsx"
		workBook.SaveAs("Demo.xlsx")

		' Close the workbook to free resources
		workBook.Close()
	End Sub
End Class
$vbLabelText   $csharpLabel

このコード サンプルでは、まず IronXL のCreate()関数を使用して新しい WorkBook オブジェクトを作成し、必要な Excel ファイル タイプ (この場合は .xlsx) を指定します。 次に、新しいワークシートを作成し、2 次元配列にいくつかのサンプル データを定義します。

次に、ネストされたループを使用してさまざまなセルの値にアクセスして設定し、ワークシートにサンプル データを入力します。

最後に、 SaveAs()関数を使用して、ワークブックをターゲット ファイル名"Demo.xlsx"に保存し、ワークブックを閉じてシステム リソースを解放します。 同様に、ターゲット ファイルに複数のシートを作成することもできます。

以下は出力されたExcelファイルです。Excelファイルの書き方について詳しくは、こちらをご覧ください。

! PythonでExcelファイルを書く方法: 図6

結論

Python は、幅広いニーズと嗜好を満たす、Excel ファイルをプログラムで作成するための無料のオープンソース ライブラリを豊富に提供しています。 これらのライブラリを使用すると、表形式のデータの操作、レポートの作成、Excel へのデータのエクスポートなど、Excel 書き込みタスクを迅速かつ効率的に実行できます。

IronXL は、C# 開発者にとって Microsoft Excel の強力な代替品であり、Excel の完全なサポート、優れた速度、.NET フレームワークとのスムーズなインターフェイスを提供します。 IronXL は、ユーザーフレンドリーな API と Excel ドキュメントのきめ細かな制御により、C# での Excel 作成を簡素化します。

これにより、開発者は動的なレポートの作成、データのエクスポート、Excel 関連の操作の自動化が容易になります。 C# 開発者は、デスクトップ、オンライン、モバイル アプリのいずれの Excel ファイルを作成するかに関係なく、IronXL を使用して Excel にリンクされた操作を最適化し、C# アプリケーションで Excel の機能をフルに活用できます。

IronXL は、起動時に$799で利用できます。 ユーザーは、アップデートや製品サポートを受けるために、1年間の会員費を支払うこともできます。IronXLは、追加料金を支払うことで、無制限の再配布に対する保護を提供します。 おおよその費用については、こちらのページをご覧ください。Iron Softwareの詳細については、こちらをご覧ください。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。