ASP.NET WebApi 服务端导出数据到Excel
2017-11-07 22:30
260 查看
ASP.NET服务器端导出数据到Excel
在web项目使用过html的拼接成table表格的形式导出数据到excel,但是导出execl表格不能直接修改和保存,存在数据丢失的情况,采用这种文件流的形式就不会出现excel表不能修改的情况了。解决方案中需要引用的类库如下:
ICSharpCode.SharpZipLib.dll
NPOI.dll
NPOI.OOXML.dll
NPOI.OpenXml4Net.dll
NPOI.OpenXmlFormats.dll
NPOI.XML
也就是通过引用NPOI插件,服务器端实现导出数据到Excel。
插件下载地址:
http://download.csdn.net/download/realjh/10108407
项目中用到的代码实现例如:
/// 导出数据到excel /// </summary> /// <param name="dataTable"></param> /// <param name="fileName"></param> /// <param name="sheetName"></param> public static void DataTableExcel(DataTable dataTable, string fileName, string sheetName) { //创建EXCEL工作薄 IWorkbook workBook = new XSSFWorkbook(); //创建sheet文件表 ISheet sheet = workBook.CreateSheet(sheetName); #region 创建Excel表头 //创建表头 IRow header = sheet.CreateRow(0); for (int i = 0; i < dataTable.Columns.Count; i++) { //给表创建列单元格并填充列名称,此处只做首行列Columns创建和填充 ICell cell = header.CreateCell(i); cell.SetCellValue(SetColumnName(dataTable.Columns[i].ColumnName)); } #endregion #region 填充Excel单元格中的数据 //给工作薄中非表头填充数据,遍历行数据并进行创建和填充表格 for (int i = 0; i < dataTable.Rows.Count; i++) { IRow row = sheet.CreateRow(i + 1);//表示从整张数据表的第二行开始创建并填充数据,第一行已经创建。 for (int j = 0; j < dataTable.Columns.Count; j++)//遍历并创建每个单元格cell,将行数据填充在创建的单元格中。 { //将数据读到cell单元格中 ICell cell = row.CreateCell(j); cell.SetCellValue(dataTable.Rows[i][j].ToString());//对数据为null的情况进行处理 } } #endregion #region 工作流创建Excel文件 //工作流写入,通过流的方式进行创建生成文件 MemoryStream stream = new MemoryStream(); workBook.Write(stream); byte[] buffer = stream.ToArray(); using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { try { fs.Write(buffer, 0, buffer.Length); fs.Flush(); } catch { //异常不做任何处理,好处是让客户感觉没有问题,缺点是不利于查找程序的问题,需要日志文件跟踪。 } finally { fs.Dispose();//出现异常时,手动释放fs写对象 stream.Dispose();//出现异常时,手动释放stream流对象,防止卡死的现象 } } #endregion } /// <summary> /// 辅助方法拼接列名,当然这个列名称可以直接在sql语句中采用column as "中文列名称"即可 /// </summary> /// <param name="name"></param> /// <returns></returns> private static string SetColumnName(string name) { string columnName = string.Empty; #region 匹配列名称 switch (name) { case "YUANQU": columnName = "院区"; break; case "HISCODE": columnName = "院区编号"; break; case "DEPT_NAME": columnName = "科室名称"; break; case "USER_ID": columnName = "员工工号"; break; case "USER_NAME": columnName = "员工姓名"; break; case "LX_NAME": columnName = "类型"; break; case "AVESCORE": columnName = "平均成绩"; break; case "SCORE": columnName = "综合表现"; break; case "TB_DATE": columnName = "评价日期"; break; case "KHJG": columnName = "评价标准"; break; case "PJLB_NAME": columnName = "评价类型"; break; } #endregion return columnName; }
相关文章推荐
- asp.net mvc 数据导出excel表及自excel表导入数据到相应表
- asp.net<Web版> ---GridView 数据导出到excel表,系列问题<一>---导出的Excel文件格式与文件扩展名指定的格式不一致
- ASP.NET导出数据到Excel的实现方法
- C# ASP.net 将GridView中的数据导出到Excel中的代码
- asp.net_GridView导出数据到Excel/Word
- ASP.net 把 DataGrid 数据导出到 Excel .
- asp.net DataSet数据导出到Excel中
- C#数据库数据导入导出系列之一 ASP.NET Excel导入Sql Server数据库
- ASP.NET导出数据到Excel
- Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- asp.net导出Excel/Csv格式数据最优方案(C#)
- [转] Asp.Net 导出 Excel 数据的9种方案
- asp.net实现Gradview绑定数据库数据并导出Excel的方法
- Asp.net导出Excel/Csv文本格式数据
- asp.net导出数据到Excel的几种方法(1/3)
- ASP.NET 数据导出至EXCEL
- ASP.NET(C#)将数据导出到Word或Excel
- asp.net从数据库导出数据到word、excel、txt文本文件
- Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- ASP.NET(C#) DataSet数据导出到Excel