ネットを見てもいろいろ書かれてて分かりにくい…。
Private m_sConn1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\ExcelData1.xls;" & _
"Extended Properties=""Excel 8.0;HDR=YES"""
Private m_sConn2 As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\ExcelData2.xls;" & _
"Extended Properties=""Excel 8.0;HDR=YES"""
Private m_sNorthwind = _
"C:\Program Files\Microsoft Office\Office10\Samples\Northwind.mdb"
-
備忘録として残しておきたかったのは、作成するブックが xls 形式の時は接続文字列の Extended Properties に "Excel 8.0" を、xlsx 形式の時は "Excel 12.0 Xml" を指定するということです。
string connString =
"Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=C:\\workbooks\\test.xlsx;" +
"Extended Properties=\"Excel 12.0 Xml;HDR=YES\"";
上のコードで、接続文字列の Extended Properties="Excel 12.0 Xml;HDR=YES" の
Excel 12.0 Xml の部分はソースデータベースの種類の指定です。HDR=YES は、シートの 1 行目がヘッダであることを指定します。
ソースデータベースの種類は、作成するブックの形式によって、以下のように変わります。
ブック形式 指定する DB 種類
xls Excel 8.0
xlsx Excel 12.0 Xml
xlsb Excel 12.0
xlsm Excel 12.0 Macro
Provider=Microsoft.ACE.OLEDB.12.0;Data Source={ファイルパス};Extended Properties="Excel {ISAMバージョン};HDR={YES/NO}";
ISAMバージョンには、Excel 2003までの形式には8.0を、Excel2007形式には12.0を指定します。
HDRは先頭行をヘッダとして扱うか否かの設定です。
Providerには従来までのJETドライバも使用できますが、その場合2007形式を読むことが出来ません。
Microsoft.ACE.OLEDB.12.0を利用する方が無難です。
あとjetプロバイダは今はあまり使われていないとか。 aceプロバイダらしい(Access2007以降)