質問

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

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

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

編集

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

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

役に立ちましたか?

解決

データはExcelスプレッドシートにテキストとして保存されているに違いありません。セルにネイティブに先行ゼロがないため(セルを表示するようにフォーマットすることはできますが)。OleDbはExcelにどのデータ型を要求していて、Excelはそれらを文字列と見なします。

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

ihisが該当する場合(またはそうでない場合でも、フォーマットされていないデータが必要な場合)、私の頭の一番上の方法は、ワークシートを別のワークシートにコピーし、Val(アドレス)でExcel列を変換することです機能し、先行ゼロなしで再フォーマットします。それから読んでください。

他のヒント

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

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

その後、ドライバーは、列全体が数値であるという判断呼び出しを行っています。適合しないデータに出くわすと窒息します。これはおそらくNULLまたは0として表示されます。

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

行" sample size"を増やす方法はありますが、接続文字列で使用するキーワードを思い出せません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top