c#.net读取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 档案可同时支援“读取”与“写入”用途。

3 OleDbConnection myConnection = new OleDbConnection(myConn);

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

5 OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(mySQLstr, myConnection);

6 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个空格,此法管用,但是个人感觉不完美啊。

你可能感兴趣的:(.net)