IRONSOFTWAREHOME

C#でのExcelファイルの作成

C# で Excel ファイルを作成する

Tim Corey

55 分 42 秒

Excelファイルの作成と操作は、レポーティングツール、データエクスポート、ユーザー入力インターフェースを構築するC#開発者にとって重要なスキルです。 この記事では、Tim Coreyがビデオ"Creating Excel files in C#"で提供した詳細なウォークスルーを深く掘り下げます。彼は、C#を使ってExcelファイルを作成し、フォーマットし、データを読み取る方法を実演しています。

リストから新しいExcelワークブックを作成したり、Excelワークシートのセルをフォーマットしたり、アプリケーションに構造化データを読み込んだりする方法をお探しの場合でも、Timの例はC#でのExcelファイル生成の基本をカバーする実践的なチュートリアルとして役立ちます。

ティムのビデオを参照しながら、順を追って説明していきましょう。

イントロダクション: なぜC#でExcelを使用するのか?

ティムはまず、Microsoft Excelがビジネスで最も重要なツールの1つであることを説明します。 Excelファイルはユーザーフレンドリーで汎用性が高く、データを表現するのに最適です。 C#でExcelファイルを作成することで、複雑なレポーティング・ソリューションの代用として、Excelをデフォルトのレポーティング・ツールとして使用できることを強調しています。

目標:C#を使用してExcelアプリケーションを作成し、データを入力し、いくつかの書式を適用し、そのExcelファイルから読み取る。

ソリューション エクスプローラーでプロジェクトを設定する

TimはVisual Studio 2019を開き、コンソールアプリケーション(.NET Core)を選択し、ソリューションにExcelDemoAppという名前を付けます。コンソールアプリを使用することで、Excel関連のコードに純粋に集中できる、クリーンで気が散らない環境を提供します。

オブジェクトのインスタンス化の簡略化など、C# 9の機能を活用するために、ターゲットフレームワークを.NET 5.0にアップグレードしています。

NuGetパッケージからEPPlusを追加する

Excelワークブックを作成するために、TimはNuGet Package Manager経由でEPPlusパッケージをインストールします。 EPPlusは.xlsxファイル(Open XML)で動作するExcelライブラリで、MS OfficeやExcel Interopを必要とせず、チャート、テーブル、スタイル、数式などExcelの全機能をサポートします。

注:EPPlusは非商用利用には無料ですが、商用利用にはライセンスが必要です。

彼は、ランタイムエラーを避けるために、必要な非商用ライセンスの承諾行をコードにコピーし、OfficeOpenXmlを使用して必要なものを追加します; ディレクティブを使用してください。

エクセル ファイルのパスを定義する

System.IO.FileInfoを使用して、Timはハードコードされたファイルパスを設定します:

var file = new FileInfo(@"C:\demos\youtubedemo.xlsx");

このファイルは最初は存在しません-プログラムによって動的に作成されます。

データモデルの作成

Excel ワークシートに入力するために、Tim は以下のプロパティを持つ単純な PersonModel クラスを定義します:

  • int ID

  • 文字列 FirstName

  • 文字列 LastName

彼はヘルパーメソッドGetSetupData()を使用して、Tim Corey、Sue Storm、Jane Smithのようなサンプルデータを入力したList<PersonModel>を返します。

データを Excel ファイルに非同期で保存する

現代の開発では、UIスレッドをブロックすることは容認できません。 そのため、Timは非同期メソッドを定義しています:

static async Task SaveExcelFile(List<PersonModel> people, FileInfo file)

Excelに書き込む前に、ファイルが存在するかどうかをチェックし、名前の衝突を避けるために削除する。

if (file.Exists) file.Delete();

Excelワークシートの作成と書式設定

Timは、適切な廃棄を確実にするために、usingブロック内でEPPlus ExcelPackageオブジェクトを使用しています:

using var package = new ExcelPackage(file);

彼はワークブックに新しいワークシートを追加します:

var ws = package.Workbook.Worksheets.Add("MainReport");

データの読み込み

LoadFromCollectionを使用して、セル "A2 "から始まる人のリストを挿入する:

ws.Cells["A2"].LoadFromCollection(people, true);
  • trueは、ヘッダーが含まれていることを保証します("Id"、"FirstName"、"LastName "など)。

次に、AutoFitColumns() は列幅を自動的に調整します:

ws.Cells[ws.Dimension.Address].AutoFitColumns();

最後に、彼はExcelファイルを保存します:

await package.SaveAsync();

エクセルのセルと行にスタイルを設定する

Excelファイルをより読みやすくするために、Timはスタイルを適用する方法を示しています:

タイトル行

ws.Cells["A1"].Value = "Our Cool Report";
ws.Cells["A1:C1"].Merge = true; ws.Row(1).Style.Font.Size = 24;
ws.Row(1).Style.Font.Color.SetColor(Color.Blue);
ws.Column(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;

ヘッダー行

ws.Row(2).Style.Font.Bold = true;
ws.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;

カスタム列幅

ws.Column(3).Width = 20;

このセクションでは、次のような高度な書式設定を示します:

  • マージされたセル

  • フォントスタイル

  • 背景色

  • 行/列の配置

  • 幅の調整

これらは、典型的なMS Office Excelフォーマット機能を模倣しています。

C#でのExcelファイルからのデータ読み取り

さて、Excelにデータを書き込んだので、次はそれをC#に読み戻す番です

ティムがその方法を紹介します:

static async Task<List<PersonModel>> LoadExcelFile(FileInfo file)

彼は行と列のカウンターを設定します:

int row = 3; // Skip title and header rows int col = 1;

行をループする

whileループを使って、空でないセルをチェックし、値を読み込む:

while (!string.IsNullOrWhiteSpace(ws.Cells[row, col].Value?.ToString()))

ループの中では、値が読み込まれ、解析されます:

p.Id = int.Parse(ws.Cells[row, col].Value.ToString());
p.FirstName = ws.Cells[row, col + 1].Value.ToString();
p.LastName = ws.Cells[row, col + 2].Value.ToString();

List<PersonModel> が入力され、返されます。

インポートされたデータの検証

Tim は、返されたリストをループし、各エントリをコンソールに書き込みます:

foreach (var p in peopleFromExcel)
{
     Console.WriteLine($"{p.Id} {p.FirstName} {p.LastName}");
}

ユーザー入力ツールとしてのエクセルの柔軟性を示すために、ティムは新しいレコード("ビル・スミス"、"メアリー・ホワイト")をエクセルファイルに直接手動で追加します。アプリを再実行すると、これらのエントリーはコードを変更することなくインポートされ、データ入力インターフェースとしてのエクセルの可能性を証明した。

実用的な使用例

ティムは、C# Excelソリューションの使用例を紹介します:

  • データベーステーブルのExcelへのエクスポート

  • エンドユーザーが入力したデータのインポート

  • Excelをレポートダッシュボードとして使用する

  • データ処理のための構造化ワークブックの作成

また、Microsoft.Office.Interop.Excelに頼ることなく、Excelがインストールされている必要があります。

EPPlusとExcelファイルに関する最終的な注意事項

Timは、プログラムで作成された.xlsxファイルは、Excelで開いて保存するまで、すべてのメタデータを含んでいないと説明しています。 そのため、実際のExcelアプリケーションで開くとファイルサイズが大きくなります。

また、EPPlusは洗練された堅牢なライブラリであり、以下の機能をサポートしています:

  • チャート

  • 画像

  • スパークライン

  • 数式

  • ページ設定

  • 国境

  • セルフォーマット

結論

C#でExcelファイルを作成することは、難しくも高くもありません。EPPlus Excelライブラリのおかげで、開発者はMS Officeを必要とせずに、機能豊富なExcelドキュメントをプログラムで作成することができます。ティム・コーリーが示すように、わずか数行のコードで以下のことが可能です:

  • エクセルファイルの作成

  • 行と列の入力

  • スタイリング

  • データを読み返す

  • ユーザー向けのUIとしてExcelを使用

そのため、軽量なレポートツール、データのインポート/エクスポート、または単にユーザーがすでに知っているインターフェイスを提供するための素晴らしい選択肢となります。

今度プロジェクトを構築するときに Excel データを出力または消費する必要がある場合は、Tim Corey の video にあるサンプル コードを実装してみてください。

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

OR
bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。