首页 >后端开发 >C++ >如何使用 EPPlus 将数据从 ASP.NET MVC 应用程序高效导出到 Excel?

如何使用 EPPlus 将数据从 ASP.NET MVC 应用程序高效导出到 Excel?

Linda Hamilton
Linda Hamilton原创
2025-01-05 15:24:39606浏览

How to Efficiently Export Data to Excel from an ASP.NET MVC Application Using EPPlus?

如何将数据导出到 Excel

概述

本问题重点介绍从 ASP.NET MVC 应用程序将数据导出到 Excel。虽然提供的指南建议了 HTML 到 Excel 的转换方法,但本文探讨了如何使用 EPPlus(一个 Excel 包库)来创建正确的 Excel 文件。

使用 EPPlus 创建 Excel

EPPlus 提供LoadFromDataTable 和 LoadFromCollection 等方法可使用数据填充 Excel 区域。以下是创建 Excel 文件的示例:

using (ExcelPackage package = new ExcelPackage())
{
    var ws = package.Workbook.Worksheets.Add("My Sheet");
    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);
}

格式和样式

EPPlus 允许对导出的数据进行格式化和应用表格样式。例如:

var range = ws.Cells["A1"].LoadFromDataTable(table);
range.Style.Numberformat.Format = "#,##0.00";
range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;

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

EPPlus 的自定义文件结果

为了避免流处理问题,可以创建自定义 FileResult 类来管理 EPPlus 包响应:

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)
    {
        Stream outputStream = response.OutputStream;
        using (Package)
        {
            Package.SaveAs(outputStream);
        }
    }
}

Action Controller 中的实现

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 将数据从 ASP.NET MVC 应用程序高效导出到 Excel?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn