0

OleDb を使用して、Excel ファイルから DataSet にデータを読み取るプロセスがあります。先頭に 0 があるデータが表示されるまで、すべてがうまく機能していました。テキストは、一般またはテキストとしてフォーマットされます。

OleDb 接続で IMEX=1 を設定しましたが、先頭が 0 の各エントリのデータセットで null 値が取得されます。

誰かがこれを回避する方法を知っていますか?

編集

ちょっとした追加情報として、先頭の 0 を保持する必要があり、列は General としてフォーマットされています。テキストも試しました。

先行ゼロを持つ最初のエントリは行 11 にあり、NULL が返されます。この特定のシートの他のすべてのデータは、この列の数値です。

4

3 に答える 3

0

データは Excel スプレッドシートにテキストとして保存されているに違いありません。OleDb が Excel にデータ型を尋ねていることを期待しており、Excel はそれらが文字列であると認識しています。

Excel セルの 1 つを見て、上部のデータ入力ストリップに読み込みゼロがあるかどうかを確認します。または、先頭のアポストロフィなどがありますか?

これが当てはまる場合 (またはそうでない場合でも、フォーマットされていないデータが必要な場合)、頭のてっぺんから離れた方法の 1 つは、ワークシートを別のワークシートにコピーし、Val(address) 関数を使用して Excel 列を変換することです。先行ゼロなしで再フォーマットします。そこから読みます。

于 2009-01-13T06:16:31.387 に答える
0

最初の 10 行は純粋な数値データですか?

次に、ドライバーは、列全体が数値であるという判断を下しています。適合しないデータに遭遇すると、チョークします。おそらく、これは NULL または 0 として表示されます。

私は試してみます:
1)IMEXをドロップします-それなしで実験します
2)その列のすべてのデータの最初の文字として単一引用符を追加してみてください。
これは、Excel で「テキストを強制」します。テストとして、最初の 11 行で試してみてください。
これにより、ドライバーは列をテキストとして表示するようになります。NULL は消えるはずです。

行の「サンプルサイズ」を増やす方法はいくつかあります...しかし、接続文字列で使用するキーワードを思い出せません。

于 2009-01-14T00:59:58.233 に答える
0

私が見ることができる最も良いことは、事前にフォーマットされたExcelファイルを作成し、必要なデータに使用する必要があるということです.

于 2009-01-13T07:38:48.287 に答える