アプリケーションがファイルからデータをインポートできるようにしたいと考えてい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 エントリが取得されます。最初のいくつかのエントリを読み取り、それに基づいてデータ型を決定すると思いますか?
質問: 最初のいくつかのエントリに基づいて列のデータ型を識別するメカニズムをオフにする方法はありますか?