そのワークシートの特定のセル値を確認するために 、 SSIS ScriptTaskを介して Excel ファイルを読み込もうとしています。
コード例では、strSQLが " H4:H4 " に設定され、1 つのセルのみが読み取られることがわかります。このセルは、true または false の値のみを持つことができます。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]";
ブール値の認識を失います:
row.ItemArray[2] "FALSE" object {string}
bool 値を他の処理タスクに使用したいと思います。
B2 値を読み取ることに加えて、これを修正するにはどうすればよいですか?