首页 >后端开发 >C++ >如何使用EPPlus高效导出数据到Excel?

如何使用EPPlus高效导出数据到Excel?

Barbara Streisand
Barbara Streisand原创
2025-01-05 15:28:40264浏览

How to Efficiently Export Data to Excel Using EPPlus?

如何将数据导出到 Excel

提供的指南演示了使用表格生成 HTML 文件的解决方法,但这种方法在以下情况下可能不可靠: Excel 解释并导入这些文件。更有效的方法是使用 EPPlus 等库创建专用 Excel 文件。

使用 EPPlus

EPPlus 提供 LoadFromDataTable 和 LoadFromCollection 方法来填充 Excel 范围分别使用数据表或通用集合中的数据。列或属性名称在加载期间用作标题。

示例代码:

public ActionResult ExportData()
{
    DataTable dataTable = GetData(); // Method to retrieve data

    using (ExcelPackage package = new ExcelPackage())
    {
        var ws = package.Workbook.Worksheets.Add("My Sheet");
        ws.Cells["A1"].LoadFromDataTable(dataTable, true); // Load with true to include headers

        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);
    }
}

格式和样式:

加载数据后,您可以进一步自定义 Excel 并设置样式range:

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

自定义输出:

为了缓解创建大文件时的潜在问题,或避免重复写入,您可以为 EPPlus 创建自定义 FileResult 处理程序packages:

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

这个自定义结果可以在控制器中使用action:

public FileResult ExportData()
{
    ExcelPackage package = new ExcelPackage();
    var ws = package.Workbook.Worksheets.Add("My Sheet");
    ... // Load and format data

    return new EpplusResult(package) { FileDownloadName = "SomeFile.xlsx" };
}

此方法可确保直接写入输出流,从而优化大文件的性能。

以上是如何使用EPPlus高效导出数据到Excel?的详细内容。更多信息请关注PHP中文网其他相关文章!

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