2016-06-20 14 views
0

私はオブジェクトのリストを持っていると私はすべてのオブジェクトに対して行を捧げることをしようとしていますし、私は、「OfficeオープンXMLライブラリ」を使用しています。このルーチン:それはを言って、エラーをポップしかしExcelでセルをマージするにはどうすればよいですか?

int row = 1, col = 1; 
for (int i = 0; i < MyList.Count * 3; i+=3) 
{ 
    MySheet.Cells[row + i, col, row + i + 1, col].Merge = true; // merge two and get a "result" 
    MySheet.Cells[row + i + 1, col, row + i + 2, col].Merge = true; // merge "result" with third row 
} 

既にマージされたセルをマージすることはできません。

複数のセルをマージする方法 Excelの場合

+0

既にコードを書きましたが、インデックスを変更するだけです。 3行をマージしたい場合は、 'row + i + 1'の代わりに' row + i + 2'を使います。 –

+0

いいえ、それはありません。インデックスは、単一のセルではなく、*領域*を指定します。 Excelのすべてが範囲に基づいています。 1つのセルであっても、単一セルとして扱われます。 –

+0

@pan私はそれが範囲であることを知らず、私は気が気になりません:)))))))))おかげさまで私はそれを見てくれました –

答えて

1

インデックスは、隣接する2つのセルだけでなく、セルの範囲を指定します。 3行全体のセルを結合するには、

MySheet.Cells[row + i, col, row + i + 2, col].Merge = true; 

を書くことができるまたはあなたが

MySheet.Cells[row + i, col, row + i + 2, col+1].Merge = true; 

3x2のブロックをマージすることができますExcelですべてが範囲です。単一の細胞でさえ、単一細胞として扱われる。これにより、単セルの作業がちょっと変わってしまいますが、スタイルや数式を簡単に適用できるようになります。

+0

チャームのように働いていました。 1つのQ、私はその範囲内に/マージされたセルのブロックを書きたい場合。インデックスとしてどのような価値を使用すべきですか? ['row + i'と' row + i + 2'の間の値は正常に動作しますか? –

+1

セルで使用するほとんどのメソッドは、実際にRangeから継承されます。範囲をローカル変数に保存し、範囲の 'Value'を設定します。例えば' var myRange = MySheet.Cells [row + i、col、row + i + 2、col]; myRange.Merge = true; myRange.Value = 5; ' –

+0

クール、私はあなたの方法を使用すると思うが、私はそれをテストし、_ **任意の単一のセルインデックス/範囲の範囲内のマージされたセルは完全に動作します結合されたセルの_ **全体の** _ブロック/範囲へのインデックスとして罰金 –

関連する問題