写在前面:
asp.net是微软公司开发的一种搭建动态网站页面的脚本语言。
Excel文件是微软office办公软件中的表格文件。
这里说明一下,为什么读取Excel文件要这么麻烦,虽然文件本身就是很多很多个二进制组成的,但是有特定的存储规则,不遵守这个规则去拿数据,是拿不到文件里面的真实数据的,只能是乱码。所以就要根据微软给出的规则去读取。
有些企业特别是采购业有很多的数据存放在Excel表格文件中,人员对表格的数据进行检索获得想要的数据,检索过程很多都是重复的步骤,说到重复的事情就应该想到要写个程序让机器帮我们做,以此提高工作效率。
最近接触到一个需求就是要用asp.net上传Excel文件,并且将Excel文件中的数据读取出来放到mysql数据库中。
在这个过程中有很多需要注意的地方,在此分享出来。
下面是asp.net读取Excel的具体代码。
string cmdText = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + "; Extended Properties='Excel 12.0;HDR=No;IMEX=1'";
/*
* Microsoft.ACE.OLEDB.12.0——》微软提供的Excel数据库连接组件,有了它才能访问Excel文件
* Data Source——》指定Excel文件的路径
* Extended Properties——》指定一些访问Excel文件的属性,就是说怎么来读这个文件
* Excel 12.0——》指定引用库版本 连接Excel文件用的
* HDR:如果为Yes表示Excel表格第一行是标题,不去读取,如果是No表示从第一行也是数据,也要读取,(不写默认是Yes所以要注意了)
* IMEX:如果单元格有文字和数字,将单元格格式当做文本读取,这样可以避免因为格式的问题读取不到数据
*/
//创建一个连接对象
OleDbConnection conn = new OleDbConnection(cmdText);
//打开连接
if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)
{
conn.Open();
}
//拿到Excel表中的所有表格
DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
//查询名称为Sheet1的表
string strSql = "select * from [Sheet1$]";
//创建一个数据适配器
OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
//创建一个数据集对象
DataSet ds = new DataSet();
//将数据放到数据集对象中
da.Fill(ds);
//创建数据表对象,将数据集中第一个表给了数据表对象
DataTable dt = new DataTable();
dt = ds.Tables[0];
到此你就能得到了Excel文件中的数据了,然后想怎么显示都可以了。
读取的过程可能会遇到的报错:
1未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
这个需要安装微软提供的一个软件即可解决
软件可自行去百度上搜索下载地址
注意:一般安装第一个32位的才行,我的64位笔记本安装了64位的还是报错
本文系网站原创,转载请注明文章链接地址