ホームページ >バックエンド開発 >C++ >適切な MIME タイプと形式で DataTable データを Excel (.xlsx) ファイルにエクスポートする方法

適切な MIME タイプと形式で DataTable データを Excel (.xlsx) ファイルにエクスポートする方法

DDD
DDDオリジナル
2025-01-05 21:18:45841ブラウズ

How to Export DataTable Data to an Excel (.xlsx) File with Proper MIME Type and Formatting?

適切な方法を使用してテーブル データを Excel にエクスポートし、Excel (xlsx) ファイルに正しい MIME タイプを設定するにはどうすればよいですか?

提供されているガイドでは、Excel ファイルの作成方法は説明されていません。代わりに、テーブルを含む HTML ファイルを生成する回避策が採用されています。 Excel では、デフォルト設定に準拠していないテーブルを含む CSV または HTML ファイルをインポートしようとすると、書式設定エラーが発生することがあります。

EPPlus を使用すると、正規の Excel ファイルの作成が大幅に簡単になります。 EPPlus の LoadFromDataTable および LoadFromCollection を使用して、DataTable または汎用コレクションからのデータを Excel 範囲に設定できます。ヘッダーはそれぞれ列名またはプロパティ名を使用して生成されます。

public ActionResult ExportData()
{
    // Load data into 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;

Additionally 、表のスタイルを範囲に適用できます:

ws.Cells[1,1].LoadFromDataTable(table, true, TableStyles.Light1);

書式設定、数式、ピボットテーブルとテーブルの処理については、ライブラリの GitHub wiki ですべて見つけることができます。

MemoryStream への保存は、(メモリと出力ストリームへの) 重複したデータ書き込みのため、大きなシートには理想的ではない可能性があります。ただし、MVC アクションから直接 FileResult を返すことはお勧めできません。解決策は、EPPlus パッケージに合わせた FileResult を作成することです:

public class EpplusResult: FileResult
{
    public EpplusResult(ExcelPackage package)
        : base("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
    {
        Package = package;
    }

    public ExcelPackage Package { get; private set; }

    protected override void WriteFile(HttpResponseBase response)
    {
        Package.SaveAs(response.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"};
}

以上が適切な MIME タイプと形式で DataTable データを Excel (.xlsx) ファイルにエクスポートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。