データ型が混在しているExcelファイルをC#で読み取ろうとしています。以下は私の接続文字列です
var path = //xls location
var MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties='Excel 8.0;IMEX=1;'");
Extended Properties
調査によると、接続文字列の完全なものは
Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text
ただし、接続文字列では、値がレジストリから直接取得されるため、TypeGuessRows=0
は意味がないことが通知されました。したがって、キーを手動で変更し、このプロパティを接続文字列から削除する必要があります。
関与した特定のレジストリキーは次のとおりです。
道:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Excel
鍵:
TypeGuessRows
元の値= 8、それを機能させるために= 0に変更します
これを行わないと、私がに追加するのがIMEX
難しい場合でも機能しません。TypeGuessRows=0
Extended Properties
ただし、私の会社ではレジストリ値の変更を(厳密に)禁止しています。私はこれを行う代替案を見つけるように言われました。
要するに:
レジストリキーを変更せずに混合データ型Excelファイルを読み取る方法はありますか(これは非常に一般的な方法です)?
さらなるトピック:
これを経験したことがありますか?TypeGuessRows=0
レジストリキーを変更せずに接続文字列からのみ設定できる可能性はありますか(上記の前提をキャンセルします)。
うまくいかない場合OleDb
:
ほかに選択肢はありOleDb
ますか?
アドバイスや提案をいただければ幸いです。
よろしく