使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中

http://www.cnblogs.com/songrun/p/3547738.html

NPOI 2.0教程 – 自动识别Excel 2003或2007格式

http://tonyqus.sinaapp.com/archives/482

NPOI 2.0 教程

http://tonyqus.sinaapp.com/npoi2tutorial

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Data;
  6. using System.IO;
  7. using NPOI.HSSF.UserModel;
  8. using NPOI.SS.UserModel;
  9. using NPOI.XSSF.UserModel;
  10. using NPOI.POIFS.FileSystem;
  11. using NPOI.OpenXml4Net.OPC;
  12.  
  13. namespace weirManagement.BaseClass
  14. {
  15. public class NPOIHelper : BaseClass
  16. {
  17. //public class WorkbookFactory
  18. //{
  19. // public static IWorkbook Create(POIFSFileSystem fs){...}
  20. // public static IWorkbook Create(OPCPackage pkg){...}
  21. // public static IWorkbook Create(Stream inputStream){...}
  22. // public static IFormulaEvaluator CreateFormulaEvaluator(IWorkbook workbook){...}
  23. //}
  24.  
  25. /// <summary>
  26. /// Excel某sheet中内容导入到DataTable中
  27. /// 区分xsl和xslx分别处理
  28. /// </summary>
  29. /// <param name="filePath">Excel文件路径,含文件全名</param>
  30. /// <param name="sheetName">此Excel中sheet名</param>
  31. /// <returns></returns>
  32. //public DataTable ExcelSheetImportToDataTable(string filePath, string sheetName)
  33. public DataTable ExcelImportToDataTable(string filePath)
  34. {
  35. DataTable dt = new DataTable();
  36. //.xlsx //.xlsm
  37. #region .xlsx文件处理:XSSFWorkbook
  38. try
  39. {
  40. using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
  41. {
  42. IWorkbook wb = WorkbookFactory.Create(file);
  43. ISheet sheet = wb.GetSheetAt();//.GetSheet(sheetName);
  44. System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
  45. IRow headerRow = sheet.GetRow();
  46. //一行最后一个方格的编号 即总的列数
  47. for (int j = ; j < sheet.GetRow().LastCellNum; j++)
  48. {
  49. //SET EVERY COLUMN NAME
  50. ICell cell = headerRow.GetCell(j);
  51. if (cell != null && cell.ToString() != "")
  52. {
  53. dt.Columns.Add(cell.ToString());
  54. }
  55. else { continue; }
  56.  
  57. }
  58. int colCount = dt.Columns.Count;
  59.  
  60. while (rows.MoveNext())
  61. {
  62. //IRow row = (XSSFRow)sheet.GetRow(j);
  63. IRow row = (IRow)rows.Current;
  64. DataRow dr = dt.NewRow();
  65. bool addDR = false;
  66. if (row.RowNum == ) continue;//The firt row is title,no need import
  67. for (int i = ; i < colCount; i++)
  68. {
  69. //cell count>column count,then break //每条记录的单元格数量不能大于表格栏位数量 20140213                 
  70. //cell count>column count,then break //每条记录的单元格数量不能大于DataTable的title
  71. if (i >= colCount){ break; }
  72.  
  73. ICell cell = row.GetCell(i);
  74.  
  75. if ((i == ) && (string.IsNullOrEmpty(cell.ToString()) == true))//每行第一个cell为空,break
  76. {
  77. break;
  78. }
  79. if (cell != null)
  80. {
  81. object o = cell;
  82. //读取Excel格式,根据格式读取数据类型
  83. switch (cell.CellType)
  84. {
  85. case CellType.Blank: //空数据类型处理
  86. o = "";
  87. break;
  88. case CellType.String: //字符串类型
  89. o = cell.StringCellValue;
  90. break;
  91. case CellType.Numeric: //数字类型
  92. if (DateUtil.IsCellDateFormatted(cell))
  93. { o = cell.DateCellValue; }
  94. else
  95. {
  96. o = cell.ToString();
  97. }
  98. break;
  99. case CellType.Formula:
  100. //HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(hssfworkbook);
  101. IFormulaEvaluator e = WorkbookFactory.CreateFormulaEvaluator(wb);
  102. o = e.Evaluate(cell).StringValue;
  103. break;
  104. default:
  105. o = "";
  106. break;
  107. }
  108. dr[i] = Convert.ToString(o);//row.GetCell(j).StringCellValue;
  109. addDR = true;
  110. }
  111. }
  112. if (addDR)
  113. {
  114. dt.Rows.Add(dr);
  115. }
  116. }
  117. }
  118. }
  119. catch (Exception e)
  120. {
  121. throw e;
  122. }
  123. #endregion
  124. return dt;
  125. }
  126.   }
  127. }

NPOI导入excel为datatable (xls xlsx xlsm)的更多相关文章

  1. ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库

    使用NPOI导入Excel 首先在MVC项目中导入NPOI 查询NPOI安装,排序依据,选择:最高下载量,选择第一个. 在控制器中创建ExcelController 在Index视图中写入代码: @u ...

  2. 使用npoi导入Excel - 带合并单元格--附代码

    之前我们在使用npoi导入excel表格的时候,往往会遇见那种带有合并单元格的数据在导入的时候出现合并为空的问题, 也就是只有第一条有数据,其余均为空白.在网上翻了半天也没有找到合适的解决方案,最后还 ...

  3. 使用NPOI导入Excel注意日期格式和数字格式

    //使用NPOI导入Excel public static DataTable importExcelToDataSetUsingNPOI(string FilePath, string fileNa ...

  4. NPOI 导入Excel和读取Excel

    1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...

  5. 用NPOI从Excel到DataTable

    NPOI功能强大,不用装Excel,就可以操作表格中数据----Excel.Sheet------>DataTable private IWorkbook workbook = null; pr ...

  6. .Net Core 使用 NPOI 导入Excel

    由于之前在网上查阅一些资料发现总是不能编译通过,不能正常使用,现把能正常使用的代码贴出: /// <summary> /// Excel导入帮助类 /// </summary> ...

  7. NPOI导入excel

    1.引用NPOI: using NPOI.HSSF.UserModel;using NPOI.HSSF.Util;using NPOI.SS.UserModel; 2.导出excel 1 privat ...

  8. NPOI写Excel,Spire.XLS for.NET组件转换Excel为PDF

    首先要引用NPOI动态库和Microsoft.Office.Interop.excel.dll (Microsoft.Office.Interop.excel.dll  最好使用使用NuGet下载 , ...

  9. POI异步导入Excel兼容xsl和xlsx

    项目架构:spring+struts2+hibernate4+oracle 需求:用户导入excel文件,导入到相应的数据表中,要求提供导入模板,支持xls和xlsx文件 思路分析: 1.提供一个下载 ...

随机推荐

  1. Linux 字符串处理函数

    1 strchr 函数原型:extern char *strchr(char *str,char character) 参数说明:str为一个字符串的指针,character为一个待查找字符.     ...

  2. KVM虚拟化平台环境部署

    一:安装依赖包 二:配置网卡 三:配置环境 实验环境: KVM01   192.168.200.10 关闭防火墙及相关的安全机制 [root@KVM01 ~]# systemctl stop fire ...

  3. Memo-Tech

    Qt install Qt on Ubuntu Download *.run file; Click downloaded file to install. Note that gcc module ...

  4. 01-复杂度2 Maximum Subsequence Sum

    01-复杂度2 Maximum Subsequence Sum   (25分) 时间限制:200ms 内存限制:64MB 代码长度限制:16kB 判题程序:系统默认 作者:陈越 单位:浙江大学 htt ...

  5. 4.shell基本操作简介

    判断一个命令是不是内置命令,可以用type命令 1.printf :冒号 #:〉 test.txt 这里会建立一个空文件test.txt set -o|grep  emacs 查看 emacs 模式是 ...

  6. cookie ,session 和localStorage的区别详解

    2019独角兽企业重金招聘Python工程师标准>>> cookie ,session 和localStorage的区别详解 博客分类: js 当你在浏览网站的时候,WEB 服务器会 ...

  7. 对包含HttpContext.Current.Cache的代码进行单元测试

    假设我们如下代码调用了HttpContext.Current.Cache 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class CacheManager { ...

  8. 【阅读笔记】Ranking Relevance in Yahoo Search (四 / 完结篇)—— recency-sensitive ranking

    7. RECENCY-SENSITIVE RANKING 作用: 为recency-sensitive的query提高排序质量: 对于这类query,用户不仅要相关的还需要最新的信息: 方法:rece ...

  9. codeforce 225B Code Parsing

      Little Vitaly loves different algorithms. Today he has invented a new algorithm just for you. Vita ...

  10. 上传组件Fine Uploader在ASP.NET中的应用

    现如今,世面上流行着许多前端上传组件,例如:Uploadify(http://www.uploadify.com/),Fine Uploader,等等.这篇博客从头开始,介绍如何在ASP.NET MV ...