外部コンポーネントを使用せずにこれを行うための 2 つのアプローチを知っています。
1ファイルをインポートする前に CSV として保存できる場合は、テキスト ファイル ドライバーとschema.iniファイル アプローチを使用できます。これにより、データ型を列ごとに明示的に宣言できます。
schema.ini アプローチは SQL OPENROWSET コマンドでも機能し、途中で C# を使用することなく CSV から SQL に直接インポートでき、列のデータ型を指定することもできます。
2レジストリのハッキングにアレルギーがない場合は、Microsoft の提案があります。
レジストリ キーを変更することをお勧めします。
HKLM\Software\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows
または 64 ビット システムの場合:
HKLM\SOFTWARE\wow6432node\microsoft\jet\4.0\engines\excel\TypeGuessRows
この値を 0 に設定すると、デフォルトの 8 行ではなく、スプレッドシートの最初の 16384 行が型推測のためにスキャンされます。255 文字を超えるテキスト フィールドが検出された場合、それらの列はメモ フィールドと見なされます。
データによっては、適切なデータ型を取得することが100% 保証されているわけではないことに注意してください。
ただし、このキーの HKLM スコープにも注意してください。これは、そのマシン上のプロセスによるすべての OleDB Excel インポートに影響します。
または、レジストリをハッキングせずに:
この問題を (レジストリを変更せずに) 回避する 2 つ目の方法は、255 文字以上のデータを持つフィールドを持つ行が、ソース データ ファイルの最初の 8 行に存在することを確認することです。
これはおそらく不可能です。