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

我正在寻找一种在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文件 的全部内容, 来源链接: utcz.com/qa/424063.html

回到顶部