ASP.NET Core3.0でExcelにデータをエクスポートする方法
Webアプリケーションを構築する場合、WordまたはExcelドキュメントとの間でデータをインポートまたはエクスポートする必要があることがよくあります。これを実現するにはいくつかの方法があり、WordまたはExcelで動作するNuGetパッケージがたくさんあります。この記事では、ASP.NET CoreでClosedXMLを使用して、データをExcelにエクスポートする方法について説明します。
この記事で提供されているコード例を使用するには、システムにVisual Studio2019がインストールされている必要があります。まだコピーをお持ちでない場合は、こちらからVisual Studio2019をダウンロードできます。
VisualStudioでASP.NETCoreMVCプロジェクトを作成します
まず、Visual Studio2019でASP.NETCoreプロジェクトを作成しましょう。VisualStudio2019がシステムにインストールされていると仮定して、以下に概説する手順に従って、VisualStudioで新しいASP.NETCoreプロジェクトを作成します。
- Visual StudioIDEを起動します。
- 「新しいプロジェクトの作成」をクリックします。
- [新しいプロジェクトの作成]ウィンドウで、表示されたテンプレートのリストから[ASP.NET CoreWebアプリケーション]を選択します。
- [次へ]をクリックします。
- 「新しいプロジェクトの構成」ウィンドウで、新しいプロジェクトの名前と場所を指定します。
- 必要に応じて、[ソリューションとプロジェクトを同じディレクトリに配置する]チェックボックスをオンにします。
- [作成]をクリックします。
- 次に示す[新しいASP.NETCore Webアプリケーションの作成]ウィンドウで、ランタイムとして.NET Coreを選択し、上部のドロップダウンリストからASP.NET Core 2.2(またはそれ以降)を選択します。ASP.NET Core3.0を使用します。
- プロジェクトテンプレートとして「Webアプリケーション(Model-View-Controller)」を選択して、新しいASP.NET CoreMVCアプリケーションを作成します。
- ここではこれらの機能を使用しないため、[Dockerサポートを有効にする]チェックボックスと[HTTPS用に構成する]チェックボックスがオフになっていることを確認してください。
- 認証も使用しないため、[認証]が[認証なし]に設定されていることを確認してください。
- [作成]をクリックします。
これらの手順に従うと、VisualStudioで新しいASP.NETCoreMVCプロジェクトが作成されます。このプロジェクトを使用して、以下のセクションでExcel用のデータのエクスポートについて説明します。
ClosedXMLNuGetパッケージをインストールします
データをExcelにエクスポートする場合は、いくつかのライブラリから選択できます。それらの1つはClosedXMLという名前です。このパッケージは、Visual Studio 2019 IDE内のNuGetパッケージマネージャーを介して、またはNuGetパッケージマネージャーコンソールで次のコマンドを実行することにより、インストールできます。
インストールパッケージClosedXML
ASP.NET Core3.0からCSVファイルとしてデータをエクスポートします
データをコンマ区切り(CSV)ファイルとしてエクスポートするのは簡単です。これを実現するには、CsvExportやAWright18.SimpleCSVExporterなどのNuGetパッケージを利用するか、手動で行うことができます。簡単にするために、CSVファイルを手動で生成します。Authorという名前の次のクラスについて考えてみます。
パブリッククラス作成者{{
public int Id {get; セットする; }
public string FirstName {get; セットする; }
パブリック文字列LastName {get; セットする; }
}
次に、以下のコードスニペットに示すように、作成者のリストにデータを入力できます。
リスト作成者=新しいリスト{{
新しい作成者{Id = 1、FirstName = "Joydip"、LastName = "Kanjilal"}、
新しい作成者{Id = 2、FirstName = "Steve"、LastName = "Smith"}、
新しい作成者{Id = 3、FirstName = "Anand"、LastName = "Narayaswamy"}
};
次のコードスニペットは、コントローラーのアクションメソッドでCSVファイルを生成する方法を示しています。
public IActionResult DownloadCommaSeperatedFile(){{
試してみてください
{{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine( "Id、FirstName、LastName");
foreach(著者のvar著者)
{{
stringBuilder.AppendLine($ "{author.Id}、
{author.FirstName}、{author.LastName} ");
}
File(Encoding.UTF8.GetBytesを返す
(stringBuilder.ToString())、 "text / csv"、 "authors.csv");
}
キャッチ
{{
Error();を返します。
}
}
ASP.NET Core3.0でXLSXファイルとしてデータをエクスポートする
Excelのブックは、いくつかのワークシートで構成されています。次のコードを使用してExcelブックを作成できます。
var workbook = new XLWorkbook();
次に、IXLWorkSheetインターフェイスを利用して、以下に示すようにワークシートを作成してブックに追加できます。
IXLWorksheetワークシート= workbook.Worksheets.Add( "Authors");ワークシート.Cell(1、1).Value = "Id";
ワークシート.Cell(1、2).Value = "FirstName";
ワークシート.Cell(1、3).Value = "LastName";
for(int index = 1; index <= authors.Count; index ++)
{{
ワークシート.Cell(インデックス+1、1)。値=作成者[インデックス-1] .Id;
ワークシート.Cell(インデックス+1、2)。値=作成者[インデックス-1] .FirstName;
ワークシート.Cell(インデックス+ 1、3).Value = authors [index-1] .LastName;
}
最後に、ブックをメモリストリームとして保存してから、以下に示すようにFileContentResultインスタンスを作成できます。
using(var stream = new MemoryStream()){{
workbook.SaveAs(stream);
var content = stream.ToArray();
File(content、contentType、fileName);を返します。
}
ASP.NET Core3.0でExcelドキュメントをダウンロードします
これは、Excelドキュメントのダウンロードに使用できるアクションメソッドの完全なソースコードです。
public IActionResult DownloadExcelDocument(){{
string contentType = "application / vnd.openxmlformats-
officedocument.spreadsheetml.sheet ";
string fileName = "authors.xlsx";
試してみてください
{{
using(var workbook = new XLWorkbook())
{{
IXLWorksheetワークシート=
workbook.Worksheets.Add( "Authors");
ワークシート.Cell(1、1).Value = "Id";
ワークシート.Cell(1、2).Value = "FirstName";
ワークシート.Cell(1、3).Value = "LastName";
for(int index = 1; index <= authors.Count; index ++)
{{
ワークシート.Cell(インデックス+ 1、1).Value =
著者[インデックス-1] .Id;
ワークシート.Cell(インデックス+ 1、2).Value =
著者[インデックス-1] .FirstName;
ワークシート.Cell(インデックス+ 1、3).Value =
著者[インデックス-1] .LastName;
}
using(var stream = new MemoryStream())
{{
workbook.SaveAs(stream);
var content = stream.ToArray();
File(content、contentType、fileName);を返します。
}
}
}
catch(例外例)
{{
Error();を返します。
}
}
この記事ではClosedXMLを使用しましたが、ASP.NET CoreでExcelデータを読み取り、書き込み、操作するためのパッケージが他にもいくつかあります。これには、EPPlusやNPOIが含まれます。ClosedXMLの詳細については、GitHubの//github.com/ClosedXML/ClosedXMLをご覧ください。今後の投稿で、ASP.NETCoreアプリケーションへのExcelデータのインポートについて説明します。
ASP.NETおよびASP.NETCoreでさらに多くのことを行う方法:
- ASP.NETCoreでメモリ内キャッシュを使用する方法
- ASP.NET WebAPIでエラーを処理する方法
- 複数のパラメーターをWebAPIコントローラーメソッドに渡す方法
- ASP.NET WebAPIで要求と応答のメタデータをログに記録する方法
- ASP.NETでHttpModuleを操作する方法
- ASP.NET Core WebAPIの高度なバージョン管理
- ASP.NETCoreで依存性注入を使用する方法
- ASP.NETでセッションを操作する方法
- ASP.NETでHTTPHandlerを操作する方法
- ASP.NETCoreでIHostedServiceを使用する方法
- ASP.NETCoreでWCFSOAPサービスを利用する方法
- ASP.NETCoreアプリケーションのパフォーマンスを向上させる方法
- RestSharpを使用してASP.NETCore WebAPIを使用する方法
- ASP.NETCoreでのログインの操作方法
- ASP.NETCoreでMediatRを使用する方法
- ASP.NETCoreでセッション状態を操作する方法
- ASP.NETCoreでナンシーを使用する方法
- ASP.NET WebAPIのパラメーターバインディングを理解する
- ASP.NET CoreMVCでファイルをアップロードする方法
- ASP.NET Core WebAPIでグローバル例外処理を実装する方法
- ASP.NETCoreでヘルスチェックを実装する方法
- ASP.NETでのキャッシュのベストプラクティス
- .NETでApacheKafkaメッセージングを使用する方法
- WebAPIでCORSを有効にする方法
- WebClientとHttpClientとHttpWebRequestをいつ使用するか
- .NETでRedisキャッシュを操作する方法
- .NETでTask.WaitAllとTask.WhenAllを使用する場合