C#迭代Excel中的一行

时间:2013-08-11 10:37:04

标签: c# excel

我需要迭代特定的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循环?

1 个答案:

答案 0 :(得分:1)

你几乎就在那里,你的循环只需要一些调整:

  //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.Range类型,然后依赖于内置属性{{ 1}}),虽然我认为这可能更令人困惑。示例:如果输入范围为C1:H5,则“C:C”为第一列,“D:D”为第二列,等等。根据我的方法,第一列将始终为“A:A”,第二栏“B:B”等。

迭代给定范围(Columns)中的列的示例:

inputRange