【发布时间】:2012-06-25 06:48:00
【问题描述】:
我正在尝试使用 SSIS 脚本组件查找 Excel 行位置以获取我的 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”并获取它的位置。
任何想法/帮助
谢谢
【问题讨论】:
-
我认为列 A 将是索引 0 不是吗(您正在增加每行的列索引)?因此,您根本不需要 iCnt - row[0].ToString() 将是 A 列的内容,那么您可能只需检查您正在寻找的字符串(不过,我曾想过,它会使用 where 子句会更有效,但我不知道这是否可行)。
-
你不是在工作表名称之后和范围之前缺少一个“$”吗?
标签: c#