c#.net读取excel表格

本文介绍如何使用C#通过OleDb连接Excel文件并读取数据,包括设置连接字符串、选择特定工作表的数据列,并展示了如何获取表信息。

 使用的命名空间为:using System.Data.OleDb;

2 连接数据库的字符串为:string myConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\目录.xls;Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\"";      
//*.xsl可以认为是数据库了,HDR表示是否隐藏excel的第一行(因为第一行一般表示字段名称)
//IMEX 参数,因为不同的模式代表著不同的读写行为:当IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。

OleDbConnection myConnection = new OleDbConnection(myConn);

string mySQLstr = "SELECT f1,f2,f5 FROM [Sheet1$]";       //[Sheet1$]就是表格了,选取第1,2,5列,用Fn表示第n列

OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(mySQLstr, myConnection);

DataSet myDS = new DataSet();

7 myDataAdapter.Fill(myDS, "[Sheet1$]");          //原理都跟读取sql是一样O(∩_∩)O

8 DataTable dt = myConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);       //把相关信息记录到datatable中
   string tbname = dt.Rows[0][2].ToString().Trim();              //读取表名信息

【注意】
由于excel每个单元格内数据默认的格式为:varchar(255),因此读取超过255的单元格内容是需要修改注册表,这里提供修改方法:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel]
"TypeGuessRows"="0"

表示从前TypeGuessRows行判断数据的类型,如果还是读取不正确,使用最笨的办法是第一行的该字段后面添加255个空格,此法管用,但是个人感觉不完美啊。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值