アプリケーションがファイルからデータをインポートできるようにしたいと考えていXLS
ます。私はすでにCSV
ファイルとXML
ファイルでこれを行っていますが、ユーザーのスコープを開きたいです。ファイルの読み込みに問題があります。XLS
ファイル ( 、CSV
、 ) をデータセットにロードし、XML
そこから処理します。の読み込みコードXLS
は以下のとおりです
FileInfo fi = new FileInfo(filename);
//create and open a connection with the supplied string
OleDbConnection objOleDBConn;
objOleDBConn = new OleDbConnection(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'", fi.FullName));
objOleDBConn.Open();
DataTable dt = objOleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null || dt.Rows.Count == 0)
{
return;
}
string sheet = dt.Rows[0]["TABLE_NAME"].ToString();
//then read the data as usual.
OleDbDataAdapter objOleDBDa;
objOleDBDa = new OleDbDataAdapter(string.Format("select * from [{0}]",sheet), objOleDBConn);
objOleDBDa.Fill(data);
objOleDBConn.Close();
したがって、データは正常に読み込まれますが、さまざまな列のデータ型が設定されているように見えます。これは、列の 1 つに問題があります。これはビット フィールドであり、 、 、 、 、および を受け入れることFalse
をTrue
選択Yes
しNo
ましY
たN
。後でこれをブール値に変換するコードがあります。これはCSV
ファイル (接続文字列が異なる) では正常に機能しますがXLS
、最初の 10 行がFALSE
またはTRUE
であり、11行目が であると言うとYES
、null エントリが取得されます。最初のいくつかのエントリを読み取り、それに基づいてデータ型を決定すると思いますか?
質問: 最初のいくつかのエントリに基づいて列のデータ型を識別するメカニズムをオフにする方法はありますか?