1

我需要遍历特定的 excel 行。现在我有一个迭代列的代码,我希望它与此类似。它看起来像这样:

int columnLength = xlWorkSheet.UsedRange.Rows.Count;
string lastCell = Regex.Replace(CONST_FIRST_CELL, @"\d+", columnLength.ToString()); //will give me the last cell in the column
var excelColumn = xlWorkSheet.Range[CONST_FIRST_CELL, lastCell ];
    if (excelColumn == null)
    {
      throw new Exception("bad col");
    }
    for (int i = 1; i < columnLength ; i++)
    {
      Excel.Range currentValue = excelColumn [i];
      ....DO SOME STUFF....
    }

如何迭代特定行?我不确定如何获得最后一列,就像我在上面的实现中得到最后一行单元格一样,从那时起我只需要用长度切换一个数字,但现在我需要以某种方式获取正确的最后一行单元格(其中意味着以某种方式切换字母,即 C4 到 AD4)以获得第一个单元格行和最后一个单元格的范围......

我猜最好的解决方案是以某种方式涉及一个 foreach 循环?

4

1 回答 1

2

你快到了,你的循环只需要一些调整:

  //Input all the Int values you want
  int targetRow = 1; 
  int startCol = 1;
  int maxCol = 10; //With this value the loop below will iterate until column 9 (inclusive)
  for (int i = startCol; i < maxCol ; i++)
  {
      Excel.Range currentRange = (Excel.Range)xlWorkSheet.Cells[targetRow, i];
      if (currentRange.Value2 != null)
      {
          string curVal = currentRange.Value2.ToString();
      }
  }

IMO 这是迭代单元格的最佳方式(通过考虑行和/或列)。您可以以不同的方式进行操作(根据您尝试的方式):在给定范围的列中进行迭代(您需要将范围定义为Excel.RangeType 然后依赖内置属性Columns),尽管我认为这可能更令人困惑。示例:如果您有输入范围 C1:H5,“C:C”是第一列,“D:D”是第二列,依此类推。使用我的方法,第一列将始终是“A:A”,第二列“B:B”等。

遍历给定范围 ( inputRange) 中的列的示例:

foreach(Excel.Range curCol in inputRange.Columns)
{
    if (curCol.Value2 != null) 
    {
       //As far as each column only has one row, each column can be associated with a cell
        string curVal = curCol.Value2.ToString();
    }
}
于 2013-08-11T11:11:08.070 回答