C#用ado.net访问EXCEL的常见问题及解决方法

C#用ado.net访问EXCEL的常见问题及解决方法,除了像sql server,access常见的数据库,其实Excel文件也能够作为数据库访问。sql

ado.net访问excel的实例:数据库

OleDbConnection cn = new OleDbConnection(); cn.ConnectionString = @"provider=Microsoft.jet.oledb.4.0;data source=[excel文件路径];Extended Properties=""Excel 8.0;HDR=YES;"""; cn.Open(); OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", cn); dtCode = new DataSet(); oda.Fill(dtCode); dataGridView1.DataSource = dtCode.Tables[0].DefaultView;ide

注意:this

一、Excel的工做簿名做为表名,如Sheet1书写为[Sheet1$],[]和$都不能省略spa

二、访问方式为oledb方式,provider=Microsoft.jet.oledb.4.0 ,特别是Extended Properties=""Excel 8.0;HDR=YES;"" 不能省略,省略就错了。HDR=YES表示excel表格的第一行数据做为表的字段名,实际数据从第二行开始。.net

我在第一次作的时候碰到两个问题。excel

(1)提示"找不到可安装的ISAM"code

这个是因为链接字符串缺乏Extended Properties=""Excel 8.0;HDR=YES;"" 致使的。server

(2)提示"索引103开始处,初始化字符串的格式不符合规范"blog

这是因为链接字符串书写错误形成的,请参考正确的格式。这个错误的提示对应的连接字符串以下:

"provider=Microsoft.jet.oledb.4.0;data source=[excel文件路径];Extended Properties=""Excel 8.0;HDR=YES;" 能够看到错误是因为Extended Properties的值是由""括起来的,因为丢失了右边的括号,形成不符合规范。

若是您用的 EXCEL2010,注意链接串须要修改:

strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;" +   @"Data Source=" + excelFilename + ";" +   "Extended Properties=\"Excel 12.0 Xml;HDR=No\"";

 

复制代码
 1 /// <summary>
 2 /// 将CSV转化为DataTable
 3 /// </summary>
 4 /// <param name="strFilePath"></param>
 5 /// <returns></returns>
 6         public static DataTable CSVToDataTable(string strFileFullPath)
 7         {
 8             if (string.IsNullOrEmpty(strFileFullPath))
 9             {
10                 return null;
11             }
12             DataTable dt = new DataTable();
13             try
14             {
15                 //获得路径
16                 string strFilePath = Path.GetDirectoryName(strFileFullPath);
17                 //获得文件名
18                 string strFileName = Path.GetFileNameWithoutExtension(strFileFullPath);
19                 //读取CSV文件
20                 string connString = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + strFilePath + ";Extensions=asc,csv,tab,txt;";
21                 using (OdbcConnection odbcConn = new OdbcConnection(connString))
22                 {
23                     odbcConn.Open();
24                     OdbcCommand oleComm = new OdbcCommand();
25                     oleComm.Connection = odbcConn;
26                     oleComm.CommandText = "select * from [" + strFileName + "#csv]";
27                     OdbcDataAdapter adapter = new OdbcDataAdapter(oleComm);
28                     adapter.Fill(dt);
29                     dt.TableName = strFileName;
30                     odbcConn.Close();
31                 }
32             }
33             catch (Exception)
34             {
35                 throw;
36             }
37             return dt;
38         }
复制代码
相关文章
相关标签/搜索