我想允許我的應用程序從XLS
文件導入數據。我已經用CSV
文件和XML
文件執行此操作,但希望爲用戶打開範圍。我在加載文件時遇到問題。我們將文件(XLS
,CSV
,XML
)加載到數據集中並從那裏開始處理。爲XLS
加載代碼如下使用Microsoft Jet引擎讀取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();
所以我的數據被加載好了,但它似乎設置各列的數據類型,這是我的一列的問題。這是一個場,我們選擇接受False
,True
,Yes
,No
,Y
和N
。有一些代碼稍後將其轉換爲布爾值。這工作正常CSV
文件(連接字符串不同),但在XLS
,如果前10行是說FALSE
或TRUE
,然後說第11說YES
,那麼我只是得到一個空條目。我猜它讀取了前幾個條目,並根據它來確定數據類型?
問題:有沒有一種方法可以根據前幾個條目關閉標識列數據類型的機制?
你可以嘗試添加的MaxScanRows = 1到連接字符串的擴展屬性,再有紙張的第一行中的文本字段。我從來沒有嘗試過,但它可能工作? – Tester101 2009-11-25 13:08:56