1

OleDb と C# を使用して CSV ファイルを読み込もうとしています。ほとんどのファイルを完全に読み取ることができますが、値が存在する場合でも、空のセル値が得られる場合があります(このファイルでも、一部のセル値が来ていますが、すべてではありません)。oleDB および CSV ファイルでこのような問題に直面した人はいますか?? はいの場合、解決策を教えてください。

4

1 に答える 1

2

OLEDB は、最初の数行で見つかった値に基づいてデータ型を推測するのが好きで、推測後にそのデータ型に適合しないものはすべて null/空に戻ります。

したがって、次のようなcsvがある場合...

1,A
2,B
3,C
4,D
5A,E
5B,F
6,G
7,H

レジストリ設定によっては (Excel の場合はこの問題に精通していますが、CSV の場合と同じように構成されているかどうかはわかりません)、OLEDB は最初の 8 レコードを読み取り、最初の列が数値であると判断する可能性があります。これは、データの大部分が数値、2 番目は char であり、これらのデータ型を設定すると、最初の列の数値以外の値を読み取ると、エラーはスローされず、値が null として返されます。

これが問題である場合は、接続文字列で IMEX=1 を使用して混合データを強制的にテキストとして読み取ることで回避できると思います。その後、値を取得するときは、GetString または GetValue ではなく、常に GetValue を使用します。 GetDoubleなど

于 2012-08-20T15:51:52.713 に答える