2016-06-20 196 views
0

我有對象的列表,我想獻給行的每一個對象,我使用了「的Office Open 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

您已經編寫了該代碼 - 只是更改索引。如果你想合併三行,使用'row + i + 2'而不是'row + i + 1' –

+0

不,它不。索引指定一個*區域*,而不是單個單元格。 Excel中的所有內容都基於範圍。即使一個細胞被視爲單細胞範圍 –

+0

@我不知道這是一個範圍,我覺得愚蠢:)))))謝謝我現在看到它 –

回答

1

索引指定一個單元格範圍,而不僅僅是兩個相鄰的單元格。要合併單元格跨越三排,你可以寫

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

或者你也可以合併一個3x2的塊在Excel

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

一切都是一個範圍。即使是單個細胞也被視爲單細胞。這使得使用單個單元格有點奇怪,但它使應用樣式和公式更容易

+0

工作就像一個魅力。一個Q雖然,如果我想寫入合併單元格的範圍/塊。我應該使用什麼值作爲索引? ['row + i'和'row + i + 2']之間的任何值都可以正常工作? –

+1

您在單元格上使用的大多數方法實際上都是從Range繼承的。將範圍保存到局部變量並設置範圍的「值」,例如'var myRange = MySheet.Cells [row + i,col,row + i + 2,col]; myRange.Merge = TRUE; myRange.Value = 5;' –

+0

很酷,我想我會用你的方式,但只是提及我測試它和_ **任何** _單個單元格索引在一個塊/合併單元格的範圍內將完全工作可以作爲整個合併單元格的整個塊/範圍的索引 –

相關問題