Bax*_*ter 3 c# excel npoi excelpackage epplus
我正在寻找一种方法来创建,修改,读取的.xlsx在C#中的文件,而无需安装Excel或给予用户下载之前在服务器上创建文件.
我发现NPOI http://npoi.codeplex.com/看起来不错但支持.xls而不是.xlsx
我找到了ExcelPackage http://excelpackage.codeplex.com/,它看起来很棒,但是在将文件发送给用户之前,还有额外的开销在服务器上创建文件.有没有人知道这方面的方法?
我找到了EPPlus http://epplus.codeplex.com,但我不确定这是否需要在服务器上创建文件才能发送给用户?
我对此非常陌生,所以任何指导/示例等都会非常感激.
Ant*_*ula 15
使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26045 次 |
最近记录: |