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」が 2 番目の列などです。私のアプローチでは、最初の列は常に「A:A」になります。 2列目「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 に答える