我想允许我的应用程序从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