首页 > 代码库 > NPOI的使用
NPOI的使用
简介:NPOI是POI(APATCH的一个开源项目)项目的.NET版本,最初的POI只用于JAVA来操作EXCEL or WORD等微软OLE2组件项目。使用NPOI可以完成在你没有安装Office或者相应环境的机器上对WORD/EXCEL文档进行读写。
使用案例分享(NPOI针对DATATABLE导出EXCEL):
完成此任务应该准备的DLL:NPOI.DLL ,官网下载链接:http://npoi.codeplex.com/
1.将npoi.dll引用到项目的bin目录中:
2.添加完成之后,代码例子开始:
(对于这种以后项目里可能会经常使用到的工具类,本人建议直接创建一个公共的Respository,相信你懂我的用意)
这里我创建了一个ExcelHelper.cs类,其中需要引用以下几个npoi相关的namespace
using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;
导出的测试代码:(经过测试,可正常使用,这个方法需要优化的地方挺多,有兴趣的话可以自己拿去改善)
1 public static void TableToExcelForXLS(DataTable dt, string file,string entityName) //dt:你需要导出的数据,file:导出路径,entityName:实体名称 2 { 3 HSSFWorkbook hssfworkbook = new HSSFWorkbook(); 4 ISheet sheet = hssfworkbook.CreateSheet("Test"); 5 6 //表头 7 IRow row = sheet.CreateRow(0); 8 //for (int i = 0; i < dt.Columns.Count; i++) 9 //{10 string[] str = { "a", "b", "c", "d", "e", "f" };11 string[] sysSelect = {"A", "B", "C", "D"};12 if (entityName == "XuDaxia")13 {14 //表头15 for (int j = 0; j < str.Count(); j++)16 {17 ICell cell = row.CreateCell(j);18 cell.SetCellValue(str[j]);19 }20 //数据21 for (int i = 0; i < dt.Rows.Count; i++)22 {23 IRow row1 = sheet.CreateRow(i + 1);24 for (int j = 0; j < dt.Columns.Count; j++)25 {26 ICell cell = row1.CreateCell(j);27 cell.SetCellValue(dt.Rows[i][j].ToString());28 }29 }30 }31 else32 {33 //表头34 for (int j = 0; j < sysSelect.Count(); j++)35 {36 ICell cell = row.CreateCell(j);37 cell.SetCellValue(sysSelect[j]);38 }39 //数据40 for (int i = 0; i < dt.Rows.Count; i++)41 {42 IRow row1 = sheet.CreateRow(i + 1);43 for (int j = 0; j < dt.Columns.Count; j++)44 {45 ICell cell = row1.CreateCell(j);46 cell.SetCellValue(dt.Rows[i][j].ToString());47 }48 }49 }50
方法调用:
1 protected void btn_ExportExcel(object sender, ImageClickEventArgs e)2 {3 var name = DateTime.Now.ToString("yyyyMMdd") + new Random(DateTime.Now.Second).Next(10000);//导出的Excel默认名称4 var path = Server.MapPath("XUDAXIA_TEST/" + name + ".xls");//导出路径5 var dt = list.ToDataTable();6 string ef= "Xudaxia";7 ExcelHelper.x2003.TableToExcelForXLS(dt, path, ef); //2003 版Excel示例8 downloadfile(path);9 }
输出参数配置:
void downloadfile(string s_path) { System.IO.FileInfo file = new System.IO.FileInfo(s_path); HttpContext.Current.Response.ContentType = "application/ms-download"; HttpContext.Current.Response.Clear(); HttpContext.Current.Response.AddHeader("Content-Type", "application/octet-stream"); HttpContext.Current.Response.Charset = "utf-8"; HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(file.Name, System.Text.Encoding.UTF8)); HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString()); HttpContext.Current.Response.WriteFile(file.FullName); HttpContext.Current.Response.Flush(); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.End(); }
NPOI的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。