C# 使用数据表查找excel工作表数据的结束范围的C代码

C# 使用数据表查找excel工作表数据的结束范围的C代码,c#,C#,我正在尝试使用SSIS脚本组件查找Excel行位置,以获取Excel数据提取范围的终点。我在脚本任务中使用Datatable来实现这一点。 在下面的示例中,我的图纸范围始终以1开始。我需要通过搜索A2:A10范围内数据的末尾来获得端点位置 下面是我正在使用的代码 string currentable ="Sheet1$" string strSQL = "Select * From ["+currentTable+"A2:A10]"; int iCnt = 0; OleDbDataAdapter

我正在尝试使用SSIS脚本组件查找Excel行位置,以获取Excel数据提取范围的终点。我在脚本任务中使用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的第一列,搜索数据的字符串结尾并获取其位置

有什么想法/帮助吗


谢谢

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

无论如何,这样的东西可能适合您的需要:

var lastRow = dt.Rows.AsEnumerable().Select((row, index) => new { Name = row.ToString(), index }).First(row => row.Name == "End of data").index;

我认为列A应该是索引0,不是吗?您正在根据它的外观为每行增加列索引?因此,您根本不需要iCnt—行[0]。ToString将是A列的内容,然后您可能只需检查您正在查找的字符串,我想,使用where子句会更有效,但我不知道这是否有效。您的工作表名称之后和范围之前是否缺少$a?是的,您是对的。我想它会让我返回10行。我在试你给我的密码。它给出的错误是System.Data.DataRowCollection不包含AsEnumerable的定义。我是否需要为此导入任何类。我没有与Linq相关的DLL文件。是否有一种方法可以使用For循环转换此代码。请让我知道