20

私が抱えている問題は、データ アダプターが各列の最初の行だけを見て、データ型を判断していることです。私の場合、最初の列「SKU」は最初の 500 行の数字であり、数字と文字が混在する SKU があります。そのため、SKU 列の行は空白のままになりますが、各列の行の他の情報は取得できます。

それを制御するのは接続文字列であり、現在の設定では機能するはずですが、そうではありません。

接続文字列:

conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nick\Desktop\Pricing2.xlsx" + @";Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1;ImportMixedTypes=Text;TypeGuessRows=0""";


ImportMixedTypes=Text;TypeGuessRows=0

重要なキーワードである必要があります。0 行を見て、すべての値の型としてテキストを使用してください。

私がこれに付けた「応急処置」は、スプレッドシートの最初の行を文字と数字の混合物にし、具体的にはクエリでその行を除外することです。

4

1 に答える 1

31

残念ながら、これらの設定はレジストリで定義されているため、接続文字列からImportMixedTypesまたは設定することはできません。TypeGuessRowsACE OleDb ドライバーの場合、それらは次の場所に保存されます。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\Excel

レジストリで。したがって、接続文字列を次のように単純化できます。

conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Nick\Desktop\Pricing2.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1;""";

TypeGuessRowsレジストリでto0ImportMixedTypestoを設定するとText、期待どおりの動作が得られるはずです。ただし、インポートのパフォーマンスが理想的とは言えない場合は、0 ではなく 1000 などの適切な大きな数値を使用することを検討してください。

于 2011-01-11T23:02:21.693 に答える