1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using System.IO;
  7. using NPOI.XSSF.UserModel;
  8. using NPOI.SS.UserModel;
  9.  
  10. namespace NetLib
  11. {
  12. public static class NPOIHelper
  13. {
  14. public static void ExportToFile(DataSet dataSet, string fileFullPath)
  15. {
  16. List<DataTable> dts = new List<DataTable>();
  17. foreach (DataTable dt in dataSet.Tables) dts.Add(dt);
  18. ExportToFile(dts, fileFullPath);
  19. }
  20. public static void ExportToFile(DataTable dataTable, string fileFullPath)
  21. {
  22. List<DataTable> dts = new List<DataTable>();
  23. dts.Add(dataTable);
  24. ExportToFile(dts, fileFullPath);
  25. }
  26. public static void ExportToFile(IEnumerable<DataTable> dataTables, string fileFullPath)
  27. {
  28. IWorkbook workbook = new XSSFWorkbook();
  29. int i = ;
  30. foreach(DataTable dt in dataTables)
  31. {
  32. string sheetName = string.IsNullOrEmpty(dt.TableName)
  33. ? "Sheet " + (++i).ToString()
  34. : dt.TableName;
  35. ISheet sheet = workbook.CreateSheet(sheetName);
  36.  
  37. IRow headerRow = sheet.CreateRow();
  38. for (int j = ; j < dt.Columns.Count; j++)
  39. {
  40. string columnName = string.IsNullOrEmpty(dt.Columns[j].ColumnName)
  41. ? "Column " + j.ToString()
  42. : dt.Columns[j].ColumnName;
  43. headerRow.CreateCell(j).SetCellValue(columnName);
  44. }
  45.  
  46. for (int a = ; a < dt.Rows.Count; a++)
  47. {
  48. DataRow dr = dt.Rows[a];
  49. IRow row = sheet.CreateRow(a + );
  50. for (int b = ; b < dt.Columns.Count; b++)
  51. {
  52. row.CreateCell(b).SetCellValue(dr[b] != DBNull.Value ? dr[b].ToString() : string.Empty);
  53. }
  54. }
  55. }
  56.  
  57. using (FileStream fs = File.Create(fileFullPath))
  58. {
  59. workbook.Write(fs);
  60. }
  61. }
  62.  
  63. public static List<DataTable> GetDataTablesFrom(string xlsxFile)
  64. {
  65. if (!File.Exists(xlsxFile))
  66. throw new FileNotFoundException("文件不存在");
  67.  
  68. List<DataTable> result = new List<DataTable>();
  69. Stream stream = new MemoryStream(File.ReadAllBytes(xlsxFile));
  70. IWorkbook workbook = new XSSFWorkbook(stream);
  71. for (int i = ; i < workbook.NumberOfSheets; i++)
  72. {
  73. DataTable dt = new DataTable();
  74. ISheet sheet = workbook.GetSheetAt(i);
  75. IRow headerRow = sheet.GetRow();
  76.  
  77. int cellCount = headerRow.LastCellNum;
  78. for (int j = headerRow.FirstCellNum; j < cellCount; j++)
  79. {
  80. DataColumn column = new DataColumn(headerRow.GetCell(j).StringCellValue);
  81. dt.Columns.Add(column);
  82. }
  83.  
  84. int rowCount = sheet.LastRowNum;
  85. for (int a = (sheet.FirstRowNum + ); a < rowCount; a++)
  86. {
  87. IRow row = sheet.GetRow(a);
  88. if (row == null) continue;
  89.  
  90. DataRow dr = dt.NewRow();
  91. for (int b = row.FirstCellNum; b < cellCount; b++)
  92. {
  93. if (row.GetCell(b) == null) continue;
  94. dr[b] = row.GetCell(b).ToString();
  95. }
  96.  
  97. dt.Rows.Add(dr);
  98. }
  99. result.Add(dt);
  100. }
  101. stream.Close();
  102.  
  103. return result;
  104. }
  105. }
  106. }

NPOI 项目: http://npoi.codeplex.com/

本地下载:http://files.cnblogs.com/bruceleeliya/NPOI2.1.1.zip

NPOIHelper.cs (NPOI 2.1.1)的更多相关文章

  1. C#利用NPOI处理excel的类 NPOIHelper.cs

    个人的NPOIHelp类,包括datatable导出到excel,dataset导出到excel,excel导入到datatable,excel导入到dataset, 更新excel中的数据,验证导入 ...

  2. C# 或 JQuery导出Excel

    首先要添加NPOI.dll文件 然后添加类:NPOIHelper.cs using System; using System.Data; using System.Configuration; usi ...

  3. [转]NPOI TestFunctionRegistry.cs

    本文转自:https://github.com/tonyqus/npoi/blob/master/testcases/main/SS/Formula/TestFunctionRegistry.cs   ...

  4. Topshelf+Quartz.net+Dapper+Npoi(二)

    quartznet 上篇说到quartznet这个东东,topshelf+quartznet有很多不错的文章,可以查看七七同学的文章(http://www.cnblogs.com/jys509/p/4 ...

  5. .Net操作Excel —— NPOI

    近期的两个项目都有关于NPOI的功能,经过了一点学习,自己也摸索了一会,感觉还有点意思.现在将部分代码分享一下.一部分是C#代码,一部分是VB.Net的,懒得修改了,基本上都是从项目文件中copy出来 ...

  6. 基于NPOI的Excel数据导入

    从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请 ...

  7. 基于NPOI导出和导入Excel

    概述 NPOI,顾名思义,就是POI的.NET版本.NPOI就是用.NET语言编写的一套数据导出Excel的开源项目,支持XML.xls.xlsx.ppt等格式..NET不仅实现Excel导出还可以实 ...

  8. (C#)使用NPOI导出Excel

    在做业务型的软件时,经常需要将某些数据导出,本文介绍了在Winform或Asp.net中使用NPOI(POI 项目的 .NET 版本)来操作Excel文件,而无需安装Office. 首先,需要获取NP ...

  9. NPOI操作Excel辅助类

    /// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper { #region ...

随机推荐

  1. 替换系统数据库解决SQLSERVER服务启动不了的问题

    替换系统数据库解决SQLSERVER服务启动不了的问题 当遇到SQLSERVER服务启动不起来的时候,我们试过把系统的四个数据库master ,model ,tempdb,msdb 替换掉,Windo ...

  2. 使用Js脚本 修改控制IE的注册表相关设置(activex等)

    使用Js脚本 修改控制IE的注册表相关设置(activex等) 分类: PHP2012-12-05 18:51 2035人阅读 评论(2) 收藏 举报 脚本写法: <SCRIPT LANGUAG ...

  3. git删除push到远程服务器的commit

    如果不小心把不该提交的代码或者敏感的数据(如密码)提交到远程git服务器上,可以使用git reset回滚到上一个commit,并且commit history不留下任何痕迹. 具体做法: # 1.通 ...

  4. [游戏模版11] Win32 动画 时间消息

    >_<:This time we will study a new way to operate your picture.That is running your picture by ...

  5. [JS2] JS是弱类型

    <html> <head> <title>JavaScript 是弱类型的</title> <Script Language="Java ...

  6. [BTS] The value "" for the property InboundId is invalid

    Microsoft.ServiceModel.Channels.Common.MetadataException: Retrieval of Operation Metadata has failed ...

  7. 【Android】混淆器(ProGuard)

    混淆器(ProGuard) 混淆器通过删除从未用过的代码和使用晦涩名字重命名类.字段和方法,对代码进行压缩,优化和混淆.结果是一个比较小的.apk文件,该文件比较难进行逆向工程.因此,当你的应用程序对 ...

  8. [jQuery学习系列六]6-jQuery实际操作小案例

    前言最后在这里po上jQuery的几个小案例. Jquery例子1_占位符使用需求: 点击第一个按钮后 自动去check 后面是否有按钮没有选中, 如有则提示错误消息. <html> &l ...

  9. Java的从浅至深绕坑而行的学习

    package day02; /** * 1:java初学习,避免面试时一些HR挖的坑. * @author biexiansheng * */ public class Test02 { publi ...

  10. javaweb学习总结(十六)——JSP指令

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...