0

我正在尝试使用 SSIS 脚本组件查找 Excel 行位置以获取我的数据获取范围的 END 点。我在脚本任务中使用 Datatable 来促进这一点。在下面的示例中,我的工作表范围始终以 1 开头。我需要通过在 A2:A10 范围内搜索“数据结束”来获取结束位置

在此处输入图像描述

下面是我正在使用的代码

string currentable ="Sheet1$"
string strSQL = "Select * From ["+currentTable+"A2:A10]";
int iCnt = 0;
OleDbDataAdapter objAdapter = new OleDbDataAdapter(strSQL, excelConnection);
DataSet ds = new DataSet();
objAdapter.Fill(ds, currentTable);
DataTable dt = ds.Tables[currentTable];


foreach (DataRow  row in dt.Rows)
{
    MessageBox.Show("In for Loop");
    iCnt = iCnt + 1;
    MessageBox.Show(row[iCnt].ToString());


}

在这段代码中,我收到以下错误

System.IndexOutOfRangeException:找不到第 1 列。

我需要浏览 excel 的第一列并搜索字符串“End of Data”并获取其位置。

任何想法/帮助

谢谢

4

1 回答 1

0

上面的代码看起来有点错误。用于选择数据的 SQL 选择单行,但当仅存在一列 (row[0]) 时,for 循环会查看第二列 (iCnt + 1)。

无论如何,这样的事情可能会满足您的需求:

var lastRow = dt.Rows.AsEnumerable().Select((row, index) => new { Name = row.ToString(), index }).First(row => row.Name == "End of data").index;
于 2012-06-25T07:14:17.747 回答