NPOI功能强大,不用装Excel,就可以操作表格中数据----Excel.Sheet------>DataTable

  1. private IWorkbook workbook = null;
  2. private ISheet sheet = null;
  3. private string fileName = "";//文档路径
  4. private FileStream fs = null;
  5.  
  6. public ExcelHelper()
  7. {
  8. }
  9. //构造函数
  10. public ExcelHelper(string file)
  11. {
  12. this.fileName = file;
  13. }
  14. /// <summary>
  15. /// 用NPOI从Excel到DatTable
  16. /// </summary>
  17. /// <returns></returns>
  18. public DataTable ExcelToDataTable()
  19. {
  20. DataTable dt = new DataTable();
  21. fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
  22. if (System.IO.Path.GetExtension(fileName) == ".xls")
  23. {
  24. workbook = new HSSFWorkbook(fs);
  25. }
  26. else if (System.IO.Path.GetExtension(fileName) == ".xlsx")
  27. {
  28. workbook = new XSSFWorkbook(fs);
  29. }
  30. else
  31. {
  32. throw new Exception("文件类型错误");
  33. }
  34. sheet = workbook.GetSheetAt();
  35. if (sheet != null)
  36. {
  37. IRow firstRow = sheet.GetRow();
  38.  
  39. //表头
  40. for (int i = firstRow.FirstCellNum; i < firstRow.LastCellNum; i++)
  41. {
  42. ICell cell = firstRow.GetCell(i);
  43. if (cell != null)
  44. {
  45. DataColumn column = new DataColumn(cell.StringCellValue);
  46. dt.Columns.Add(column);
  47. }
  48. }
  49. //表数据 Access数据库时,加“等号”-j <= sheet.LastRowNum
  50. for (int j = sheet.FirstRowNum + ; j <= sheet.LastRowNum; j++)
  51. {
  52. IRow row = sheet.GetRow(j);
  53. if (row == null)
  54. {
  55. continue;
  56. }
  57. DataRow dataRow = dt.NewRow();
  58. for (int i = row.FirstCellNum; i < firstRow.LastCellNum; i++)
  59. {
  60. ICell cell = row.GetCell(i);
  61. //加日期处理
  62. if (cell.CellType == CellType.Numeric && DateUtil.IsCellDateFormatted(cell))
  63. {
  64. dataRow[i] = cell.DateCellValue.ToString();
  65. }
  66. else
  67. {
  68. dataRow[i] = cell.ToString();
  69. }
  70. }
  71. dt.Rows.Add(dataRow);
  72. }
  73. }
  74. return dt;
  75. }

用NPOI从Excel到DataTable的更多相关文章

  1. 使用NPOI读取Excel到DataTable

    一.NPOI介绍: 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office ...

  2. NPOI操作Excel导入DataTable中

    using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.Data; using System.IO; using NPOI.X ...

  3. NPOI 读取excel到DataTable 读取隐藏列 读取公式列

    处理思路: 1.打开excel 用NPOI进行读取: 2.读取第一个Sheet: 读取过程中: a.先设置相应列 不隐藏 b.读取Cell时 先判断是否的包含公式 相应代码如下: public sta ...

  4. NPOI导入excel为datatable (xls xlsx xlsm)

    使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中 http://www.cnblogs.com/songrun/p/3547738.html NPOI 2.0教程 – 自动 ...

  5. NPOI 将excel转换为datatable或者将datatable转换为excel

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. NPOI对Excel的操作(Sheet转DataTable、List<T>)

    通过NPOI对Excel进行操作,这里主要是读取的操作.封装到ExcelHelper操作类中. 1 using System.Collections.Generic; 2 using NPOI.HSS ...

  7. [转].net 使用NPOI或MyXls把DataTable导出到Excel

    本文转自:http://www.cnblogs.com/yongfa365/archive/2010/05/10/NPOI-MyXls-DataTable-To-Excel-From-Excel.ht ...

  8. Excel操作--使用NPOI导入导出Excel为DataTable

    1.ExcelHelper封装 namespace NPOI操作Excel { public class ExcelHelper { /// <summary> /// DataTable ...

  9. 利用npoi把多个DataTable导入Excel多个sheet中

    { 题外拓展:把datatable插入dataset DataTable fuben = new DataTable();//定义的datatablefuben = table.Tables[0].C ...

随机推荐

  1. (linux)main.c中的初始化

    main.c中的初始化 head.s在最后部分调用main.c中的start_kernel() 函数,从而把控制权交给了它. 所以启动程序从start_kernel()函数继续执行.这个函数是main ...

  2. 装饰器模式(IO流案例)

    装饰器模式,也成为包装模式,顾名思义,就是对已经存在的某些类进行装饰,以此来扩展一些功能.其结构图如下: Component为统一接口,也是装饰类和被装饰类的基本类型. ConcreteCompone ...

  3. CentOS7 安装和配置 mysql5.7

    1.下载 mysql源安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 2.安装mysql源 ...

  4. Docker安装 人生第一次

    Ubuntu 系列安装 Docker 通过系统自带包安装 Ubuntu 14.04 版本系统中已经自带了 Docker 包,可以直接安装. $ sudo apt-get update $ sudo a ...

  5. macbook pro 下eclipse配置svn插件

    eclipse中最常使用的SVN插件是subclipse,先到subclipse官网:http://subclipse.tigris.org下载该插件.   如上图,点击“Download and I ...

  6. BZOJ1499 单调队列+DP

    1499: [NOI2005]瑰丽华尔兹 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 1560  Solved: 949[Submit][Status] ...

  7. HBase之四--(1):Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

  8. border-collapse

    表格边框,对于别的元素加上的边框不起作用 border-collapse : separate(默认) | collapse | inherit separate : 边框独立 效果图: collap ...

  9. Java简单高精度合集

    第一个Java的算法程序.记得可以使用Alt+'/'自动补全sysout和main之类的. BigInteger在java.math.BigInteger中. import java.math.Big ...

  10. 位运算【C++学习(计蒜客)】

    C++提供了位运算操作符,使程序可以直接对内存进行操作.C++的这个特色大大提高了C++程序的执行能力.例如使用位操作运算可以将一个存储单位中的各个二进制位左移或右移一位,也可以将一个存储单位中所有的 ...