Excel にエクスポートするにはどうすればよいですか?
このガイドでは Excel ファイルの作成方法は示されていません。テーブルを含む HTML ファイルを作成するハックが示されています。 。 Excel は、デフォルト設定を使用してテーブルを含む CSV または HTML ファイルをインポートしようとしますが、失敗することがよくあります。
EPPlus のようなライブラリを使用して、適切な Excel ファイルを作成する方がはるかに簡単です。
Iこれは以前に回答されていると思いますが、データから Excel ファイルを作成する方法と、xlsx の適切なコンテンツ タイプを設定する方法の両方を示す回答が見つかりません。 file.
EPPlus は、DataTable または汎用コレクションから取得したデータを Excel 範囲に入力するための LoadFromDataTable メソッドと LoadFromCollection メソッドを提供します。列名またはプロパティ名はそれぞれヘッダーとして使用されます。
public ActionResult ExportData() { //Somehow, load data to a DataTable using (ExcelPackage package = new ExcelPackage()) { var ws = package.Workbook.Worksheets.Add("My Sheet"); //true generates headers ws.Cells["A1"].LoadFromDataTable(dataTable, true); var stream = new MemoryStream(); package.SaveAs(stream); string fileName = "myfilename.xlsx"; string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; stream.Position = 0; return File(stream, contentType, fileName); } }
LoadFromDataTable または LoadFromCollection は、テーブルの書式設定に使用できる Excel のセル範囲を返します。
var range=ws.Cells["A1"].LoadFromDataTable(table); range.Style.Numberformat.Format = "#,##0.00"; range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
を適用することもできます。テーブル スタイルを範囲に渡すか、目的のスタイルを LoadFromDataTable または LoadFromCollection に渡します。例:
ws.Cells[1,1].LoadFromDataTable(table, true, TableStyles.Light1);
ライブラリの Githup wiki には、結果の書式設定、数式の生成、ピボットテーブル、テーブルの処理などの方法が示されています。
比較的大きなシート。同じデータを 2 回書き込み、1 回目は MemoryStream に書き込み、次にそれを出力にコピーすると、サイクルが無駄になります。ただし、MVC アクションから出力ストリームに直接書き込むのは悪い習慣です。秘訣は、EPPlus パッケージを処理するカスタム FileResult を作成し、File によって返される FileResult の代わりにそれを返すことです。例:
public class EpplusResult:FileResult { public EpplusResult(ExcelPackage package) : base("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { if (package == null) { throw new ArgumentNullException("package"); } Package = package; } public ExcelPackage Package { get; private set; } protected override void WriteFile(HttpResponseBase response) { // grab chunks of data and write to the output stream Stream outputStream = response.OutputStream; using (Package) { Package.SaveAs(outputStream); } } }
これにより、次のアクションを記述できます:
public FileResult ExportData() { ExcelPackage package = new ExcelPackage(); var ws = package.Workbook.Worksheets.Add("My Sheet"); ... ws.Cells[1,1].LoadFromDataTable(table, true, TableStyles.Light1); return new EpplusResult(package){FileDownloadName = "SomeFile.xlsx"}; }
以上がEPPlus を使用してデータを Excel ファイルに効率的にエクスポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。