Excel 连接字符串

来源:互联网 发布:亚裔 美国 知乎 编辑:程序博客网 时间:2024/06/06 04:49
 

Microsoft Jet OLE DB 4.0

类型: OLE DB Provider
用法: Provider=Microsoft.Jet.OLEDB.4.0
制造商:  Microsoft

标准连接
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";
64位环境下如何使用 JET >
标准连接的另一种语法
上面的语法如果不能正常工作时,可以下面的尝试这种语法,一些反馈中提到,Excel 2003需要附加在连接字符串首添加 OLEDB
OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";
重点提示!
双引号 " 需要在你的编程语言中进行字符转义处理
c#, c++   \"
VB6, VBScript   ""
xml (web.config 等)   "
或者使用 ' 

HDR=Yes,代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES

"IMEX=1;" 通知驱动程序以文本格式读取混合型的列(如数字、日期、字符串等)。需要注意的是,这个选项可能会导致Excel文件的写入拒绝

SQL 语法 "SELECT [列名1], [列名12] FROM [Sheet1$]". 即Excel工作表名后加上"$",在"[ ]"内加入列名

检查本地注册表键值[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel]子键,找到其中的 "TypeGuessRows"(REG_DWORD数据类型)键。这个数值表示,决定ISAM驱动程序从前n条数据采样确定数据类型,默认为8,将这个值改成0,可以对所有行进行采样,不过性能开销很大。另请注意,有些时候,设置选项IMEX=1可能会导致IMEX驱动程序只进行8行采样。用IMEX=0代替可以确定注册表值TypeGuessRows=0起效

如果Excel设置了密码保护,将不能打文件开读取数据,哪怕是在连接字符串中配置了正确的密码,你会收到这样的错误信息 "Could not decrypt file"

ACE OLEDB 12.0

类型: OLE DB Provider
用法: Provider=Microsoft.ACE.OLEDB.12.0
制造商:  Microsoft

Excel 97-2003 .xls文件
可以在连接字符串中使用 Office 2007 OLEDB 驱动程序 (ACE 12.0) 连接老版的 97-2003 Excel 工作簿
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myOldExcelFile.xls;Extended Properties="Excel 12.0;HDR=YES";
HDR=Yes,代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES

.NET Framework Data Provider for OLE DB

类型: .NET Framework Wrapper Class Library
用法: System.Data.OleDb.OleDbConnection
制造商:  Microsoft


桥接到 Jet OLE DB 4.0
这里仅仅展示了一个OdbcConnection类的连接字符串例子,这个类封装了底层的OLEDB提供程序。结合本例,可以了解各种OLE DB提供程序的更多连接字符串。
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

Microsoft Excel ODBC Driver

类型: ODBC Driver
用法: Driver={Microsoft Excel Driver (*.xls)}
制造商:  Microsoft

标准连接
Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:\MyExcel.xls;DefaultDir=c:\mypath;
SQL 语法 "SELECT [列名1], [列名12] FROM [Sheet1$]". 即Excel工作表名后加上"$",在"[ ]"内加入列名
关闭只读连接
[Microsoft][ODBC Excel Driver] 当操作必须要使用一个可更新的查询时,使用这种连接字符串可以避免错误
Driver={Microsoft Excel Driver (*.xls)};Dbq=C:\MyExcel.xls;ReadOnly=0;
Excel 的 ODBC 连接默认为只读,ReadOnly = 0 表示连接可更新
view plaincopy to clipboardprint?
  1. String cnnstring = cnnstring = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + xlsFilePath + ";Extended Properties=\"Excel 12.0;HDR=No;IMEX=1\"";  
  2. DataSet ds = new DataSet();  
  3.               
  4. System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(cnnstring);  
  5. System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", conn);  
  6. try  
  7. {  
  8.      adapter.Fill(ds);  
  9. }  
  10. catch (System.Exception ex)  
  11. {  
  12.      ds = null;  
  13. }  
原创粉丝点击