3

Excel シートの特定の列を取得し、そのセルを反復処理したいと考えています。私はそれを次のようにしたい:

Excel.Workbook workbook = app.Workbooks.Open(svDropPath);
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)workbook.Sheets["Sheet Name"];
var col = xlWorkSheet.UsedRange.Columns["C:C", Type.Missing]; // I want the 3rd column
foreach(Cell c in col)
....

この foreach ループを実際に作成するにはどうすればよいですか?

4

2 に答える 2

7

ループは次のようになります。

    foreach (Excel.Range item in col.Cells)
    {
        //whatever you want to do with your cells, here- msgbox of cells value
        MessageBox.Show(Convert.ToString(item.Value));
    }
于 2013-08-05T12:13:32.140 に答える
5

問題のインデックスをループして、セルまたは行のいずれかを使用する以外に、それを行う良い方法はないと思います。

for (int i = 1; i <= max; i++)
{
  Range cell = col.Cells[i, 1];
  // or
  Range cell = col.Rows[i];
}

ただし、すべてのセルの読み取りおよび/または書き込みを行っている場合は、オブジェクトの配列との間で列全体を読み取り/書き込みしてから、配列項目をループする方がはるかに優れていることに注意してください。 //stackoverflow.com/a/18058144/1737957 . これははるかに高速であるだけでなく、単純な C# 配列を扱っているため、ループに優れた言語構造を使用することもできます。

このAFAIKを実行するのではなくループする必要がある唯一の理由は、セルの内容だけでなく、条件付き書式などにアクセスしていて、それらの範囲全体を1つのステートメントで記述できない場合です。ただし、配列を使用してこれらを行う方法もあるかもしれません。

于 2013-08-05T12:35:55.580 に答える