今天下午开始整理excel这块, 微软弄的那些库简直是个坑, 什么com注册之类的净是些报错.

在网上搜资料偶然碰见npoi ,好东西,值得使用

NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。
NPOI是一个开源的C#读写Excel、WORD等微软OLE2组件文档的项目。
https://github.com/tonyqus/npoi
我是在项目里边nuget 里直接搜npoi  安装直接就能用了
网上一个比较好的程序
using System;
using System.Data;
using System.IO;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using NPOI.HSSF.UserModel;namespace MakeData
{public class ReadExcelHelper{/// <summary>/// 将excel导入到datatable/// </summary>/// <param name="filePath">excel路径</param>/// <param name="isColumnName">第一行是否是列名</param>/// <returns>返回datatable</returns>public static DataTable ExcelToDataTable(string filePath, bool isColumnName){DataTable dataTable = null;FileStream fs = null;DataColumn column = null;DataRow dataRow = null;IWorkbook workbook = null;ISheet sheet = null;IRow row = null;ICell cell = null;int startRow = 0;try{using (fs = File.OpenRead(filePath)){// 2007版本if (filePath.IndexOf(".xlsx") > 0)workbook = new XSSFWorkbook(fs);// 2003版本else if (filePath.IndexOf(".xls") > 0)workbook = new HSSFWorkbook(fs);if (workbook != null){sheet = workbook.GetSheetAt(0);//读取第一个sheet,当然也可以循环读取每个sheetdataTable = new DataTable();if (sheet != null){int rowCount = sheet.LastRowNum;//总行数if (rowCount > 0){IRow firstRow = sheet.GetRow(0);//第一行int cellCount = firstRow.LastCellNum;//列数//构建datatable的列if (isColumnName){startRow = 1;//如果第一行是列名,则从第二行开始读取for (int i = firstRow.FirstCellNum; i < cellCount; ++i){cell = firstRow.GetCell(i);if (cell != null){if (cell.StringCellValue != null){column = new DataColumn(cell.StringCellValue);dataTable.Columns.Add(column);}}}}else{for (int i = firstRow.FirstCellNum; i < cellCount; ++i){column = new DataColumn("column" + (i + 1));dataTable.Columns.Add(column);}}//填充行for (int i = startRow; i <= rowCount; ++i){row = sheet.GetRow(i);if (row == null) continue;dataRow = dataTable.NewRow();for (int j = row.FirstCellNum; j < cellCount; ++j){cell = row.GetCell(j);if (cell == null){dataRow[j] = "";}else{//CellType(Unknown = -1,Numeric = 0,String = 1,Formula = 2,Blank = 3,Boolean = 4,Error = 5,)switch (cell.CellType){case CellType.Blank:dataRow[j] = "";break;case CellType.Numeric:short format = cell.CellStyle.DataFormat;//对时间格式(2015.12.5、2015/12/5、2015-12-5等)的处理if (format == 14 || format == 31 || format == 57 || format == 58)dataRow[j] = cell.DateCellValue;elsedataRow[j] = cell.NumericCellValue;break;case CellType.String:dataRow[j] = cell.StringCellValue;break;}}}dataTable.Rows.Add(dataRow);}}}}}return dataTable;}catch (Exception ex){string mess = ex.Message;if (fs != null){fs.Close();}return null;}}}
}

转载于:https://www.cnblogs.com/zuochanzi/p/9058568.html

c#NPOI读取excel 比interop和Microsoft.Jet.OLEDB.4.0 之类 的好的多相关推荐

  1. “Microsoft.Jet.OLEDB.4.0” 解决方法

    方法一. 1.命令行键入: cscript.exe %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32 ...

  2. Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别

    Jet 引擎,可以访问 Office 97-2003,但不能访问 Office 2007. ACE 引擎是随 Office 2007 一起发布的数据库连接组件,既可以访问 Office 2007,也可 ...

  3. Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的适用版本

    Jet   可以访问 Office 97-2003,但不能访问 Office 2007. ACE 既可以访问 Office 2007,也可以访问 Office 97-2003. 另外:Microsof ...

  4. asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册Microsoft.Jet.OLEDB.4.0 提供程序...

    笔者在项目中做做了一个从Excel表格中导入数据的模块.大体上asp.net项目中导入Excel大体分成三类: 1)采用c#内置方案System.Data.OleDb(限制较小, 通用) 2)采用Ex ...

  5. 连接Excel文件时,未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    问题与解决 未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"提供程序 错误. 1 string strCon = " Provider = Micr ...

  6. Excel导入数据,未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

    Excel导入数据,未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0"提供程序: .NET在导入Excel时,使用了一个Microsoft.Jet.OLEDB. ...

  7. The 'Microsoft Jet OLEDB 4.0 Provider' is not registered on the local machine

    在一台Win7 64位的操纵系统上部署的C# Web系统,操作Excel,批量导入数据,报错,提示错误信息: The 'Microsoft Jet OLEDB 4.0 Provider' is not ...

  8. 调用Microsoft.Jet.OLEDB.4.0需要MDAC2.7支持

    asp.net进行Excel导入时需要调用Microsoft.Jet.OLEDB.4.0 strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data S ...

  9. 无法初始化链接服务器 (null) 的 OLE DB 访问接口 Microsoft.Jet.OLEDB.4.0 的数据源对象。

    SQL Server 与 Excel之间导数据时候执行SQL遇到问题 执行如下SQL语句 select * from openrowset('Microsoft.Jet.OLEDB.4.0', 'Ex ...

最新文章

  1. xBIM 实战01 在浏览器中加载IFC模型文件
  2. MyBatis源码- SqlSession门面模式 selectList 源码解析
  3. 【Qt】2D绘图之涂鸦板
  4. UnpooledHeadByteBuf源码分析
  5. 5.1.2全景声音箱摆位_全景声音响系统音箱应该如何摆位(5.1.2、5.1.4篇)
  6. 苹果测试集了成语音识别和人脸识别的智能家居?
  7. 使用socket方式连接Nginx优化php-fpm性能
  8. transition的合理运用
  9. 试验设计第二版茆诗松课后题答案_试验设计习题及答案
  10. 直流可逆调速控制系统matlab,逻辑无环流直流可逆调速系统的Matlab仿真
  11. mac 安装ffmpeg以及各种编码器
  12. iOS平台上aa(见缝插针)游戏的简易实现
  13. arcgis坐标转换
  14. 计算机网络软件系统不包括,1period;计算机软件系统一般分为lpar; A rpar;两大部分...
  15. python中compile函数
  16. 如何在eclipse配置服务器server (java ee)
  17. 数电课程设计——电子钟
  18. 通灵学院|游戏设计研习8:游戏空间设计★(800字)
  19. 8.2. Monetary Types
  20. 爱迪尔门锁系统怎么连接服务器,爱迪尔门锁设置方法是什么?

热门文章

  1. OpenAI的GPT-3花费了1200万美元,现在放出商用API,人人皆可用
  2. SAP MM 没有启用QM的前提下可以从QI库存里退货给Vendor?
  3. 同一订单类型用多个号码段
  4. 卷积神经网络四种卷积类型
  5. 费米悖论的三十种解释 | 观点
  6. 哈佛大学惊人发现:新冠对人类未来影响巨大!
  7. 新基建的内涵、意义和隐忧 ,基于互联网大脑模型的分析
  8. 机载雷达发展简史:从蝙蝠到机载相控阵
  9. 什么是启发式?什么是产生式?
  10. 福布斯发布2019全球品牌价值100强:华为上榜苹果夺冠