asp.net 读取excel文件的一些方法,NPOI方法
第一种:传统方法,采用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方法相关推荐
- C# 读取EXCEL文件的三种经典方法
1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public D ...
- R读取excel文件乱码 read.xlsx() 解决方法
1. 参考[R语言]R读取含中文excel文件,read.xlsx乱码问题 该文章总结得很好,可以直接跳到最后看博主的总结. 2. 如果依旧是乱码那么用read.xlsx2()去读取excel文件, ...
- Asp.Net读取excel文件的时候 出错提示:外部表不是预期的格式 解决方案
解决方法: 用记事本打开你的excel文件,看看显示是否为乱码. 若是html代码,则表示你的excel文件格式不是标准的excel格式,才会提示"外部表不是预期的格式&qu ...
- java excel 中文乱码_java中读取excel文件中字符串乱码问题解决方法
以前的时候发现直接java读取一个excel文件输出里面的字符串会乱码,中文字符不会乱码,但是遇到英文的时候输出会乱码.这个问题太奇怪了. 我的表格名字为Shirley.xls. 我曾经直接读取exc ...
- asp.net 读取excel文件
//需要连接的Excel文件地址 string excelUrl = this.Server.MapPath(@"App_data\demo.xls"); ...
- C#读取excel文件数据丢失问题
最近在处理C#读取excel文件时碰到了个BT问题,有部分数据读取失败了,翻看了不少资料,终于找到了问题的所在,所以在这里跟大伙分享下: 简要问题分析: 用C#读取excel文件数据时,出现数据丢失现 ...
- pandas 读取excel文件
pandas 读取excel文件 一 read_excel() 的基本用法 二 read_excel() 的常用的参数: 三 示例 1. IO:路径 2. sheet_name:指定工作表名 3. h ...
- Python读取excel文件内容并保存到SqlServer数据库
前面两篇文章<python调用openpyxl包操作excel文件>和<python调用pymssql包操作SqlServer数据库>学习了Python操作excel和Sq ...
- pythonselenium实战 excel读取和写入_Python3.6+selenium2.53.6自动化测试_读取excel文件的方法...
环境: 编辑工具: 浏览器: 安装xlrd 安装DDT 一 分析 1 目录结构 2 导入包 二 代码 import xlrd class ExcelUtil(): def __init__(self, ...
最新文章
- Java项目:在线点餐系统(java+Springboot+Maven+mybatis+Vue+mysql+Redis)
- 手把手教你实现GAN半监督学习
- 浅谈java中的四个核心概念【转】
- PHP 验证码 高洛峰 细说PHP
- Configuring Locales
- ubuntu16.04下面使用graphviz
- 9月第1周国内IT技术类网站:CSDN覆盖数持续走低
- 操作系统Ubuntu(实验一二)
- 微软官方工具_时隔20年再出发!微软官方推出最强Windows工具集
- 自己动手写Docker系列 -- 5.5实现容器停止
- Windows Media Services 9 系列常见问题解答
- git本地项目推动到gitlab远端服务器
- IATF16949认证辅导,IATF16949第六章容易发生的问题点及处理方案
- Iris数据集神经网络训练
- Web自动化漏洞检测工具:Xray
- java floor(),Java floor()用法及代码示例
- 1357:车厢调度(train)
- 超级内存NVDIMM--要和内存说再见?Intel将推存储界新物种NVDIMM内存
- Android studio 生成ARR包
- libjpeg的简单使用
热门文章
- python3连接oracle 11G数据库
- myeclipse每次保存编译全部_Fuchsia编译运行指南
- php 递归实现无限极分类和排序_无限极分类的两种方式,递归和引用
- Install Python 3.6 on Ubuntu 16.04, from source
- mac os 开启FTP Server
- 2019级软件1班安卓实训总结
- 安卓学习笔记04:安卓平台架构
- NOIP2015 写后感
- 【BZOJ3759】【cogs1603】饥饿游戏,博弈
- 用Java通讯录字母排序,按所有Catorgories显示联系人数据库标记,然后按字母顺序排序| PHP SQL...