我正在尝试通过SSIS ScriptTask读取 Excel 文件以检查该工作表中的某些单元格值。
在代码示例中,您可以看到strSQL设置为“ H4:H4 ”以仅读取一个单元格。这个单元格只能有一个真值或假值。因为我还需要检查B1中的某个字符串值,所以我想扩展这个版本。
string filePath = "c:\\test\\testBoolean.XLSX";
string tabName = "testSheet$";
string strSQL = "Select * From [" + tabName + "H4:H4]";
String strCn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
+ filePath + ";Extended Properties=\"Excel 12.0;HDR=NO;IMEX=1\";";
OleDbConnection cn = new OleDbConnection(strCn);
int iCnt = 0;
OleDbDataAdapter objAdapter = new OleDbDataAdapter(strSQL, cn);
DataSet ds = new DataSet();
objAdapter.Fill(ds, tabName);
DataTable dt = ds.Tables[tabName];
foreach (DataRow row in dt.Rows)
{
iCnt = iCnt + 1;
// some processing....
}
我不明白为什么我用上面的strSQL语句或任何包含相同行号的语句得到一个布尔值,如下所示:
string strSQL = "Select * From [" + tabName + "F4:H4]";
调试输出:
row.ItemArray[2] false object {bool}
但是当我设置一个像这样的不同范围时:
string strSQL = "Select * From [" + tabName + "F1:H4]";
我失去了对 bool 值的认识:
row.ItemArray[2] "FALSE" object {string}
我更愿意将 bool 值用于其他处理任务。
除了读取 B2 值之外,我该如何解决这个问题?