4

xls の 1 つの列に混合データ型を使用して、OLEDB リーダーを介して xls ファイルを読み込もうとしています。Oledb は、これらの列の値に対して DBNULL を返します。私は05-06-12この列の最初のセルにあります。フォーマットセルをチェックすると、それが表示custom type with dd-mm-yyされ、他のすべてのセルでは一般フォーマットが表示されます。次の接続文字列を使用しています

mCon.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;data source=" + mstrFilePath + ";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\";");

xlsに次のデータがあります

  • 05-06-12
  • 'abc'
  • 「56565」

OLEDBはこのように読みます

  • 2012 年 6 月 5 日
  • DBNULL
  • DBNULL

何が原因でしょうか? 接続文字列を入れてもIMEX = 1!!!

4

4 に答える 4

1

このように接続文字列に追加Importmixedtypes=textします

mCon.ConnectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1;Importmixedtypes=text;typeguessrows=0;\"",mstrFilePath);
于 2013-06-17T10:24:37.753 に答える
-1

接続文字列が間違っていると思います。Excel のバージョンが 2007 以降 (.xlsx 拡張子) の場合、ACE エンジンを使用する必要があります。xls ファイルの場合 (あなたの場合)、Jet エンジンの接続文字列を使用する必要があります。以下の文字列を既存のものに置き換えてください。問題は解決するはずだと思います。

mCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                  "Data Source=" + FilePath + ";" +
                  "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1' ";
于 2013-06-17T12:39:56.040 に答える