C#用ado.net访问EXCEL的常见问题及解决方法
2013-10-21 19:41
776 查看
C#用ado.net访问EXCEL的常见问题及解决方法,除了像sql server,access常见的数据库,其实Excel文件也可以做为数据库访问。
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;
注意:
1、Excel的工作簿名作为表名,如Sheet1书写为[Sheet1$],[]和$都不能省略
2、访问方式为oledb方式,provider=Microsoft.jet.oledb.4.0 ,特别是Extended Properties=""Excel 8.0;HDR=YES;"" 不能省略,省略就错了。HDR=YES表示excel表格的第一行数据作为表的字段名,实际数据从第二行开始。
我在第一次做的时候碰到两个问题。
(1)提示"找不到可安装的ISAM"
这个是由于连接字符串缺少Extended Properties=""Excel 8.0;HDR=YES;"" 导致的。
(2)提示"索引103开始处,初始化字符串的格式不符合规范"
这是由于连接字符串书写错误造成的,请参考正确的格式。这个错误的提示对应的链接字符串如下:
"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\"";
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;
注意:
1、Excel的工作簿名作为表名,如Sheet1书写为[Sheet1$],[]和$都不能省略
2、访问方式为oledb方式,provider=Microsoft.jet.oledb.4.0 ,特别是Extended Properties=""Excel 8.0;HDR=YES;"" 不能省略,省略就错了。HDR=YES表示excel表格的第一行数据作为表的字段名,实际数据从第二行开始。
我在第一次做的时候碰到两个问题。
(1)提示"找不到可安装的ISAM"
这个是由于连接字符串缺少Extended Properties=""Excel 8.0;HDR=YES;"" 导致的。
(2)提示"索引103开始处,初始化字符串的格式不符合规范"
这是由于连接字符串书写错误造成的,请参考正确的格式。这个错误的提示对应的链接字符串如下:
"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\"";
/// <summary> /// 将CSV转化为DataTable /// </summary> /// <param name="strFilePath"></param> /// <returns></returns> public static DataTable CSVToDataTable(string strFileFullPath) { if (string.IsNullOrEmpty(strFileFullPath)) { return null; } DataTable dt = new DataTable(); try { //得到路径 string strFilePath = Path.GetDirectoryName(strFileFullPath); //得到文件名 string strFileName = Path.GetFileNameWithoutExtension(strFileFullPath); //读取CSV文件 string connString = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + strFilePath + ";Extensions=asc,csv,tab,txt;"; using (OdbcConnection odbcConn = new OdbcConnection(connString)) { odbcConn.Open(); OdbcCommand oleComm = new OdbcCommand(); oleComm.Connection = odbcConn; oleComm.CommandText = "select * from [" + strFileName + "#csv]"; OdbcDataAdapter adapter = new OdbcDataAdapter(oleComm); adapter.Fill(dt); dt.TableName = strFileName; odbcConn.Close(); } } catch (Exception) { throw; } return dt; }
相关文章推荐
- C#用ado.net访问EXCEL(含EXCEL2010)的常见问题及解决方法
- Ado.Net操作Excel文件数据常见问题及解决
- Ado.Net操作Excel文件数据常见问题及解决
- ASP.NET(C#) 读取EXCEL另加解决日期问题的方法分享
- ASP.NET(C#) 读取EXCEL另加解决日期问题的方法分享
- Ado.Net操作Excel文件数据常见问题及解决
- Asp.net MVC Razor常见问题及解决方法
- ASP.NET 访问Excel 失败的解决方法
- C# ASP.NET 连接mysql数据库存入的中文乱码问题解决方法
- Ado.Net读取Excel常见问题总结
- ASP.NET访问Excel受限的解决方法
- 【ASP.NET 问题】Win7中IIS被防火墙阻止导致外网无法访问的解决方法。
- Asp.Net里面调用Microsoft Excel Application DCOM问题终极解决方法
- C#.NET常见问题(FAQ)-方法参数带ref是什么意思
- Ado.Net读取Excel常见问题总结
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题(非原创,摘自书中)
- ASP.NET导入Excel文件,提示“拒绝访问。”解决方法。
- (转)ASP.NET(C#) 读取EXCEL ——另加解决日期问题
- ASP.NET中使用FCKeditor 2.6.3碰到些常见问题的解决方法
- ASP.NET --WEB应用程序 App_Code中新的类无法访问的问题解决方法