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プロジェクトを作成します。

  1. Visual StudioIDEを起動します。
  2. 「新しいプロジェクトの作成」をクリックします。
  3. [新しいプロジェクトの作成]ウィンドウで、表示されたテンプレートのリストから[ASP.NET CoreWebアプリケーション]を選択します。
  4. [次へ]をクリックします。
  5. 「新しいプロジェクトの構成」ウィンドウで、新しいプロジェクトの名前と場所を指定します。
  6. 必要に応じて、[ソリューションとプロジェクトを同じディレクトリに配置する]チェックボックスをオンにします。
  7. [作成]をクリックします。
  8. 次に示す[新しいASP.NETCore Webアプリケーションの作成]ウィンドウで、ランタイムとして.NET Coreを選択し、上部のドロップダウンリストからASP.NET Core 2.2(またはそれ以降)を選択します。ASP.NET Core3.0を使用します。 
  9. プロジェクトテンプレートとして「Webアプリケーション(Model-View-Controller)」を選択して、新しいASP.NET CoreMVCアプリケーションを作成します。 
  10. ここではこれらの機能を使用しないため、[Dockerサポートを有効にする]チェックボックスと[HTTPS用に構成する]チェックボックスがオフになっていることを確認してください。
  11. 認証も使用しないため、[認証]が[認証なし]に設定されていることを確認してください。
  12. [作成]をクリックします。 

これらの手順に従うと、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を使用する場合