我想允许我的应用程序从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();
所以我的数据加载正常,但它似乎设置了各种列的数据类型,这对于我的一个列来说是个问题。这是一个位字段,我们选择接受False
, True
, Yes
, No
, Y
, 和N
。稍后有代码将其转换为布尔值。这在一个CSV
文件(连接字符串不同)中工作正常,但在一个文件中XLS
,如果前 10 行是FALSE
or TRUE
,然后说第 11行是YES
,那么我只会得到一个空条目。我猜它会读取前几个条目并根据它确定数据类型?
问题: 有没有办法关闭根据前几个条目识别列数据类型的机制?