使用第三方.Net NPOI实现.net mvc使用FileResult导出excel(下载到客户端)
来源:互联网 发布:企业办公通讯软件 编辑:程序博客网 时间:2024/05/16 16:03
这个功能直观来讲,就是表格导出(至excel)功能。此功能主要涉及到的技术有.NET第三方库NPOI,C#的MemoryStream,DataTable操作与使用以及.net mvc的FileResult。
一, .NET第三方库NPOI
NPOI库有七个,分別是:
NPOI.DLL:NPOI
NPOI.DDF.DLL:NPOI
NPOI.HPSF.DLL:NPOI
NPOI.HSSF.DLL:NPOI Excel BIFF
NPOI.Util.DLL:NPOI
NPOI.POIFS.DLL:NPOI OLE
ICSharpCode.SharpZipLib.DLL
二,和FileStream一样,MemoryStream和BufferedStream都派生自基类Stream,因此它们有很多共同的属性和方法,但是每一个类都有自己独特的用法。这两个类都是实现对内存进行数据读写的功能,而不是对持久性存储器进行读写。
1、Read():读取MemoryStream流对象,将值写入缓存区。
2、ReadByte():从MemoryStream流中读取一个字节。
3、Write():将值从缓存区写入MemoryStream流对象。
4、WriteByte():从缓存区写入MemoytStream流对象一个字节。
5、Seek(Int64, SeekOrigin)将当前流中的位置设置为指定值。
关于memoryStream的官方api:微软api说明
三,datatable在代码中已经使用了基本用法,关于具体的说明请参考官方api:微软api说明
代码:
public static MemoryStream Export(List<DataTable> listDT,int[] widths){ //先创建一个流 MemoryStream ms = new MemoryStream(); if(listDT!=null&&listDt.Count!=0){ try{ //新建一个excel HSSFWorkbook workbook = new HSSFWorbook(); //excel样式 HSSFCellStyle style = (HSSFCellStyle)workbook.CreateCellStyle(); foreach(DataTable dt in listDT){ //创建一个sheet ISheet sheet = workbook.CreateSheet(dt.TableName); //给指定sheet的内容设置每列宽度(index从0开始,width1000相当于excel设置的列宽3.81) for(int i = 0 ;i <widths.Length;i++){ sheet.SetColumnWidth(i,width[i]); } //在sheet里创建行 NPOI.SS.UserModel.IRow row1 = sheet.CreateRow(0); //第一行,列名 for(var i=0;i<dt.Columns.Count;i++){ row1.CreateCell(i).SetCellValue(dt.Columns[i].ColumnName); } for(var r=0;r<dt.Rows.Count;r++){ var row_r =sheet1.CreatRow(r+1); for(int i = 0;i<dt.Columns.Count;i++){ row_r.CreateCell(i).SetCellValue(dt.Rows[r][i].ToString()); } } } //写入流 workbook.Write(ms); ms.Flush(); return ms; } catch(Exception ex){ // } } return null; }
下面这个方法是.net mvc中的controller中的action
public FileResult Export(){//参数随业务场景从前台获取的不一样 ResponseData rsp = new ResponseData(); List<ExportExcelModel> _list = new List<ExportExcelModel>(); //ExportExcelModel为表格抽象对象,具体数据来自前端或数据库 DataTable Dt = new DataTable("表名"); Dt.Columns.Add("序号",System.Type.GetType("System.Int32")); Dt.Columns.Add("列名1"); Dt.Columns.Add("列名2"); Dt.Columns.Add("列名3"); Dt.Columns.Add("列名4"); Dt.Columns.Add("列名5"); int i = 1; foreach(var item in _list){ DataRow newDr = Dt.NewRow(); newDr["序号"] = i; newDr["列名1"] = item.filed1; newDr["列名2"] = item.filed2; newDr["列名3"] = item.filed3; newDr["列名4"] = item.filed4; newDr["列名5"] = item.filed5; i++; Dt.Rows.Add(newDr); } List<DataTable> Ld = new List<DataTable>(); Ld.Add(Dt); int widths={2000,2000,2000,2000,2000,2000}; MemoryStream ms = Export(Ld,Widths);//调用前一个方法 ms.Seek(0,SeekOrigin.Bengin); return File(ms,"application/ms-excel","文件名.xls"); }
- 使用第三方.Net NPOI实现.net mvc使用FileResult导出excel(下载到客户端)
- Asp.Net MVC 使用FileResult导出Excel数据文件
- Asp.Net MVC 使用FileResult导出Excel数据文件
- Asp.Net MVC 使用FileResult导出Excel数据文件
- ASP.NET使用NPOI加载Excel模板并导出下载
- MVC 使用FileResult导出excel文件实例
- .net 使用NPOI或MyXls把DataTable导出到Excel
- .net 使用NPOI或MyXls把DataTable导出到Excel
- .net 使用NPOI或MyXls把DataTable导出到Excel
- .net 使用NPOI或MyXls把DataTable导出到Excel
- asp.net 使用NPOI实现导出Excel功能
- 在NET中使用NPOI导出Excel
- ASP.Net使用NPOI导出Excel
- .NET 使用NPOI导入导出标准Excel
- .net使用NPOI导出Excel封装
- 在Winform中使用NPOI第三方组件导出Excel
- ASP.NET使用NPOI类库导出Excel(收藏)
- .net 使用NPOI或MyXls把DataTable导出到Excel Excel导入及导出
- 第五届蓝桥杯JavaA组第四题
- 代码块、类、属性、方法
- DNS 原理入门
- photoshop设置----web切图
- CCF之交通规则(java)
- 使用第三方.Net NPOI实现.net mvc使用FileResult导出excel(下载到客户端)
- 第一篇 python(安装 到 hello world)
- KMP算法详解
- 配置apache2 https
- Android Volley 适配 android 6.0
- String和StringBuffer的区别
- JavaEE 轻量级常用框架原理
- Java基础知识
- nodejs+socket.io实现websocket通信初探