第一种:传统方法,采用OleDB读取EXCEL文件,

优点,写法简单,老式。缺点 :服务器必须有安装此组建,而且版本必须兼容,否则读取报错,不推荐使用。

  • private DataSet GetConnect_DataSet2(string fileName)
  • {
  • DataSet myDataSet = new DataSet();
  • //创建一个数据链接
  • string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = " + fileName + ";Extended Properties=Excel 8.0";
  • OleDbConnection myConn = new OleDbConnection(strCon);
  • string strCom = " SELECT * FROM [Sheet1$] ";
  • //try
  • //{
  • myConn.Open();
  • //打开数据链接,得到一个数据集
  • OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
  • //创建一个 DataSet对象
  • myDataSet = new DataSet();
  • //得到自己的DataSet对象
  • myCommand.Fill(myDataSet, "CodeTable");
  • //关闭此数据链接
  • myConn.Close();
  • //}
  • //catch (Exception ex)
  • //{
  • //}
  • return myDataSet;
  • }

第二种:通过引用的com组件:Microsoft.Office.Interop.Excel.dll读取Excel文件

开启一个Excel进程,逐行逐cell的处理excel文档,

缺点:数据量大时比较慢,而且影响很明显,及时开启多线程也不理想,大数据慎用。

使用完后需要kill掉excel进程。

第三种:NPOI

先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用。

NPOI 是 POI 项目的 .NET 版本。POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。

使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写。

NPOI采用的是Apache 2.0许可证(poi也是采用这个许可证),这意味着它可以被用于任何商业或非商业项目,你不用担心因为使用它而必须开放你自己的源代码,所以它对于很多从事业务系统开发的公司来说绝对是很不错的选择。

当然作为一个开源许可证,肯定也是有一些义务的,例如如果你在系统中使用NPOI,你必须保留NPOI中的所有声明信息。对于源代码的任何修改,必须做出明确的标识。

/// <summary>

/// 读取Excel文件到table中

/// </summary>

/// <param name="filePath">excel文件路径</param>

/// <returns></returns>

private DataTable ReadExcel(string fileName)

{

DataTable dt = new DataTable();

string filePath = this.Server.MapPath("/Temp/" + fileName);

dt = ImportExcelFile(filePath);

//文件是否存在

if (System.IO.File.Exists(filePath))

{

}

return dt;

}

private DataTable ImportExcelFile(string filePath)

{

HSSFWorkbook hssfworkbook;

try

{

using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))

{

hssfworkbook = new HSSFWorkbook(file);

}

}

catch (Exception e)

{

throw e;

}

ISheet sheet = hssfworkbook.GetSheetAt(0);

System.Collections.IEnumerator rows = sheet.GetRowEnumerator();

DataTable dt = new DataTable();

rows.MoveNext();

HSSFRow row = (HSSFRow)rows.Current;

for (int j = 0; j < (sheet.GetRow(0).LastCellNum); j++)

{

//将第一列作为列表头

dt.Columns.Add(row.GetCell(j).ToString());

}

while (rows.MoveNext())

{

row = (HSSFRow)rows.Current;

DataRow dr = dt.NewRow();

for (int i = 0; i < row.LastCellNum; i++)

{

NPOI.SS.UserModel.ICell cell = row.GetCell(i);

if (cell == null)

{

dr[i] = null;

}

else

{

dr[i] = cell.ToString();

}

}

dt.Rows.Add(dr);

}

return dt;

}

转载于:https://www.cnblogs.com/Charles-xu/p/4745476.html

asp.net 读取excel文件的一些方法,NPOI方法相关推荐

  1. C# 读取EXCEL文件的三种经典方法

    1.方法一:采用OleDB读取EXCEL文件:  把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public D ...

  2. R读取excel文件乱码 read.xlsx() 解决方法

    1. 参考[R语言]R读取含中文excel文件,read.xlsx乱码问题  该文章总结得很好,可以直接跳到最后看博主的总结. 2. 如果依旧是乱码那么用read.xlsx2()去读取excel文件, ...

  3. Asp.Net读取excel文件的时候 出错提示:外部表不是预期的格式 解决方案

    解决方法:     用记事本打开你的excel文件,看看显示是否为乱码.     若是html代码,则表示你的excel文件格式不是标准的excel格式,才会提示"外部表不是预期的格式&qu ...

  4. java excel 中文乱码_java中读取excel文件中字符串乱码问题解决方法

    以前的时候发现直接java读取一个excel文件输出里面的字符串会乱码,中文字符不会乱码,但是遇到英文的时候输出会乱码.这个问题太奇怪了. 我的表格名字为Shirley.xls. 我曾经直接读取exc ...

  5. asp.net 读取excel文件

    //需要连接的Excel文件地址             string excelUrl = this.Server.MapPath(@"App_data\demo.xls"); ...

  6. C#读取excel文件数据丢失问题

    最近在处理C#读取excel文件时碰到了个BT问题,有部分数据读取失败了,翻看了不少资料,终于找到了问题的所在,所以在这里跟大伙分享下: 简要问题分析: 用C#读取excel文件数据时,出现数据丢失现 ...

  7. pandas 读取excel文件

    pandas 读取excel文件 一 read_excel() 的基本用法 二 read_excel() 的常用的参数: 三 示例 1. IO:路径 2. sheet_name:指定工作表名 3. h ...

  8. Python读取excel文件内容并保存到SqlServer数据库

      前面两篇文章<python调用openpyxl包操作excel文件>和<python调用pymssql包操作SqlServer数据库>学习了Python操作excel和Sq ...

  9. pythonselenium实战 excel读取和写入_Python3.6+selenium2.53.6自动化测试_读取excel文件的方法...

    环境: 编辑工具: 浏览器: 安装xlrd 安装DDT 一 分析 1 目录结构 2 导入包 二 代码 import xlrd class ExcelUtil(): def __init__(self, ...

最新文章

  1. Java项目:在线点餐系统(java+Springboot+Maven+mybatis+Vue+mysql+Redis)
  2. 手把手教你实现GAN半监督学习
  3. 浅谈java中的四个核心概念【转】
  4. PHP 验证码   高洛峰 细说PHP
  5. Configuring Locales
  6. ubuntu16.04下面使用graphviz
  7. 9月第1周国内IT技术类网站:CSDN覆盖数持续走低
  8. 操作系统Ubuntu(实验一二)
  9. 微软官方工具_时隔20年再出发!微软官方推出最强Windows工具集
  10. 自己动手写Docker系列 -- 5.5实现容器停止
  11. Windows Media Services 9 系列常见问题解答
  12. git本地项目推动到gitlab远端服务器
  13. IATF16949认证辅导,IATF16949第六章容易发生的问题点及处理方案
  14. Iris数据集神经网络训练
  15. Web自动化漏洞检测工具:Xray
  16. java floor(),Java floor()用法及代码示例
  17. 1357:车厢调度(train)
  18. 超级内存NVDIMM--要和内存说再见?Intel将推存储界新物种NVDIMM内存
  19. Android studio 生成ARR包
  20. libjpeg的简单使用

热门文章

  1. python3连接oracle 11G数据库
  2. myeclipse每次保存编译全部_Fuchsia编译运行指南
  3. php 递归实现无限极分类和排序_无限极分类的两种方式,递归和引用
  4. Install Python 3.6 on Ubuntu 16.04, from source
  5. mac os 开启FTP Server
  6. 2019级软件1班安卓实训总结
  7. 安卓学习笔记04:安卓平台架构
  8. NOIP2015 写后感
  9. 【BZOJ3759】【cogs1603】饥饿游戏,博弈
  10. 用Java通讯录字母排序,按所有Catorgories显示联系人数据库标记,然后按字母顺序排序| PHP SQL...