EPPlus与Excel完美的结合
本文转载:http://www.cnblogs.com/olartan/archive/2012/07/14/2591711.html
笔者近期在公司项目中需要生产比较复杂的Excel报表, 问题点是单个Excel文件中必须能包含多个sheet, 按照以前项目的经验, 此情况需要使用MS Office组件实现。但是客观情况是office组件其版本兼容问题比较多(Excel版本不一致导致无法使用、excel进程无法回收、导致w3wp 进程崩溃等), 无法把控摒弃之。
在codeplex上看到EPPlus组件, 好像可以解决上述问题。
EPPlus使用的是Open Office XML Format, 其读写支持Excel 2003/2007。
项目地址:http://epplus.codeplex.com/
在asp.net页面上导出Excel代码如下:
public static void DumpExcel(HttpContext context,string flieName,IDictionary<string,DataTable> dict)
{
using (ExcelPackage pck = new ExcelPackage())
{
foreach (var kp in dict)
{
//Create the worksheet
ExcelWorksheet ws = pck.Workbook.Worksheets.Add(kp.Key);
//Load the datatable into the sheet, starting from cell A1. Print the column names on row 1
ws.Cells["A1"].LoadFromDataTable(kp.Value, true);
////Format the header for column 1-3
//using (ExcelRange rng = ws.Cells["A1:C1"])
//{
// rng.Style.Font.Bold = true;
// rng.Style.Fill.PatternType = ExcelFillStyle.Solid; //Set Pattern for the background to Solid
// rng.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(79, 129, 189)); //Set color to dark blue
// rng.Style.Font.Color.SetColor(Color.White);
//}
////Example how to Format Column 1 as numeric
//using (ExcelRange col = ws.Cells[2, 1, 2 + tbl.Rows.Count, 1])
//{
// col.Style.Numberformat.Format = "#,##0.00";
// col.Style.HorizontalAlignment = ExcelHorizontalAlignment.Right;
//}
}
//Write it back to the client
var data = pck.GetAsByteArray();
context.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
context.Response.AddHeader("content-disposition", "attachment; filename=" + flieName + ".xlsx");
context.Response.AddHeader("Content-Length", data.Length.ToString());
context.Response.BinaryWrite(data);
}
}
参数dict传递的是sheetname和DataTable的键值对!
作者:阿笨
【官方QQ一群:跟着阿笨一起玩NET(已满)】:422315558
【官方QQ二群:跟着阿笨一起玩C#(已满)】:574187616
【官方QQ三群:跟着阿笨一起玩ASP.NET(已满)】:967920586
【官方QQ四群:Asp.Net Core跨平台技术开发(可加入)】:829227829
【官方QQ五群:.NET Core跨平台开发技术(可加入)】:647639415
【网易云课堂】:https://study.163.com/provider/2544628/index.htm?share=2&shareId=2544628
【腾讯课堂】:https://abennet.ke.qq.com
【51CTO学院】:https://edu.51cto.com/sd/66c64
【微信公众号】:微信搜索:跟着阿笨一起玩NET