gpt4 book ai didi

C# 创建/修改/读取 .xlsx 文件

转载 作者:行者123 更新时间:2023-11-30 13:10:33 24 4
gpt4 key购买 nike

我正在寻找一种在 C# 中创建、修改、读取 .xlsx 文件的方法,无需安装 Excel 或在服务器上创建文件,然后再提供给用户下载。

我找到了 NPOI http://npoi.codeplex.com/看起来不错,但支持 .xls 而不是 .xlsx

我找到了 ExcelPackage http://excelpackage.codeplex.com/这看起来不错,但是在将文件发送给用户之前在服务器上创建文件会产生额外的开销。有谁知道解决这个问题的方法吗?

我找到了 EPPlus http://epplus.codeplex.com但我不确定这是否需要在服务器上创建文件才能发送给用户?

我对此很陌生,因此非常感谢任何指导/示例等。

最佳答案

使用 EPPlus 不需要创建文件,您可以使用流完成所有操作,这里是 ASP.NET ashx 处理程序的示例,它将数据表导出到 excel 文件并将其返回给客户端:

  public class GetExcel : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var dt = DBServer.GetDataTable("select * from table");
var ms = GetExcel.DataTableToExcelXlsx(dt, "Sheet1");
ms.WriteTo(context.Response.OutputStream);
context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
context.Response.AddHeader("Content-Disposition", "attachment;filename=EasyEditCmsGridData.xlsx");
context.Response.StatusCode = 200;
context.Response.End();
}

public bool IsReusable
{
get
{
return false;
}
}

public static MemoryStream DataTableToExcelXlsx(DataTable table, string sheetName)
{
var result = new MemoryStream();
var pack = new ExcelPackage();
var ws = pack.Workbook.Worksheets.Add(sheetName);

int col = 1;
int row = 1;
foreach (DataRow rw in table.Rows)
{
foreach (DataColumn cl in table.Columns)
{
if (rw[cl.ColumnName] != DBNull.Value)
ws.Cells[row, col].Value = rw[cl.ColumnName].ToString();
col++;
}
row++;
col = 1;
}
pack.SaveAs(result);
return result;
}
}

关于C# 创建/修改/读取 .xlsx 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com