どうやって?Net CoreによるExcelエクスポート機能の実現
4963 ワード
Webアプリケーションの開発では、Aspでどのようにするかというニーズに直面するかもしれません.Net Coreではexcelまたはwordのインポート・エクスポートが実現されており、NuGetではこのような機能を実現するためのツール・パッケージが多数存在するため、本編ではClosedXMLを用いてExcelデータのエクスポートを実現する方法について議論する.
Excelのエクスポート機能を実現したい場合は、Asp.Net Coreには多くのdllがあり、そのうちの1つはClosedXMLと呼ばれ、ビジュアル化インタフェース
データをCSVファイルに導くのは非常に簡単で、結局各行のデータは
次にauthorsリストにデータをいくつか入力します.次のコードで示します.
Actionのcsvエクスポート機能を実現するためのDownloadCommaSeperatedFileメソッドを定義します.
Excelのworkbookはいくつかのworksheetで構成されており、次のコードはworkbookを生成するために使用できます.
次にワークシートを生成し、ワークシートにデータを入力します.コードは次のとおりです.
最後に、workbookをメモリストリーム(memory stream)に変換してControllerを通過する.ActionのFileContentResultはクライアントに返されます.コードは次のとおりです.
次に、Excelのすべてのビジネスロジックコードをエクスポートします.このActionはExcelエクスポート機能を実現しています.
これはClosedXMLのすべてのコンテンツです.Excelのデータをより複雑に操作したい場合は、EPPlusまたはNPOIを使用します.ClosedXMLの詳細については、https://github.com/ClosedXML/...を参照してください.
翻訳リンク:
https://www.infoworld.com/art...
ClosedXMLのインストール
Excelのエクスポート機能を実現したい場合は、Asp.Net Coreには多くのdllがあり、そのうちの1つはClosedXMLと呼ばれ、ビジュアル化インタフェース
NuGet package manager
でインストールしたり、コマンドラインNuGet package manager console
を使用して次のコマンドを実行したりすることができます.
Install-Package ClosedXML
データをCSVファイルにエクスポート
データをCSVファイルに導くのは非常に簡単で、結局各行のデータは
,
で区切ることができて、NuGetの上のCsvExportあるいはAWright 18を使うことができます.SimpleCSVExporterは実現して、もちろんあなたは自分がとても、自分で刀を操って実現することができると思って、次に私は自分で実現するつもりで、まず以下の定義のAuthor類を見ます.
public class Author
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
次にauthorsリストにデータをいくつか入力します.次のコードで示します.
List authors = new List
{
new Author { Id = 1, FirstName = "Joydip", LastName = "Kanjilal" },
new Author { Id = 2, FirstName = "Steve", LastName = "Smith" },
new Author { Id = 3, FirstName = "Anand", LastName = "Narayaswamy"}
};
Actionのcsvエクスポート機能を実現するためのDownloadCommaSeperatedFileメソッドを定義します.
public IActionResult DownloadCommaSeperatedFile()
{
try
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine("Id,FirstName,LastName");
foreach (var author in authors)
{
stringBuilder.AppendLine($"{author.Id},
{author.FirstName},{author.LastName}");
}
return File(Encoding.UTF8.GetBytes
(stringBuilder.ToString()), "text/csv", "authors.csv");
}
catch
{
return Error();
}
}
データをXLSXファイルにエクスポート
Excelのworkbookはいくつかのworksheetで構成されており、次のコードはworkbookを生成するために使用できます.
var workbook = new XLWorkbook();
次にワークシートを生成し、ワークシートにデータを入力します.コードは次のとおりです.
IXLWorksheet worksheet = workbook.Worksheets.Add("Authors");
worksheet.Cell(1, 1).Value = "Id";
worksheet.Cell(1, 2).Value = "FirstName";
worksheet.Cell(1, 3).Value = "LastName";
for (int index = 1; index <= authors.Count; index++)
{
worksheet.Cell(index + 1, 1).Value = authors[index - 1].Id;
worksheet.Cell(index + 1, 2).Value = authors[index - 1].FirstName;
worksheet.Cell(index + 1, 3).Value = authors[index - 1].LastName;
}
最後に、workbookをメモリストリーム(memory stream)に変換してControllerを通過する.ActionのFileContentResultはクライアントに返されます.コードは次のとおりです.
using (var stream = new MemoryStream())
{
workbook.SaveAs(stream);
var content = stream.ToArray();
return File(content, contentType, fileName);
}
Excelのダウンロード
次に、Excelのすべてのビジネスロジックコードをエクスポートします.このActionはExcelエクスポート機能を実現しています.
public IActionResult DownloadExcelDocument()
{
string contentType = "application/vnd.openxmlformats-
officedocument.spreadsheetml.sheet";
string fileName = "authors.xlsx";
try
{
using (var workbook = new XLWorkbook())
{
IXLWorksheet worksheet =
workbook.Worksheets.Add("Authors");
worksheet.Cell(1, 1).Value = "Id";
worksheet.Cell(1, 2).Value = "FirstName";
worksheet.Cell(1, 3).Value = "LastName";
for (int index = 1; index <= authors.Count; index++)
{
worksheet.Cell(index + 1, 1).Value =
authors[index - 1].Id;
worksheet.Cell(index + 1, 2).Value =
authors[index - 1].FirstName;
worksheet.Cell(index + 1, 3).Value =
authors[index - 1].LastName;
}
using (var stream = new MemoryStream())
{
workbook.SaveAs(stream);
var content = stream.ToArray();
return File(content, contentType, fileName);
}
}
}
catch(Exception ex)
{
return Error();
}
}
これはClosedXMLのすべてのコンテンツです.Excelのデータをより複雑に操作したい場合は、EPPlusまたはNPOIを使用します.ClosedXMLの詳細については、https://github.com/ClosedXML/...を参照してください.
翻訳リンク:
https://www.infoworld.com/art...