ホームページ >バックエンド開発 >C++ >EPPlus を使用してデータを Excel ファイルに効率的にエクスポートするにはどうすればよいですか?

EPPlus を使用してデータを Excel ファイルに効率的にエクスポートするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-05 21:30:41326ブラウズ

How to Efficiently Export Data to an Excel File Using EPPlus?

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 サイトの他の関連記事を参照してください。

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