2016-06-20 3 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

@pan Я не знал, что это был диапазон, и я чувствую себя немым :))))) спасибо, я вижу его сейчас –

ответ

1

Индексы указывают диапазон ячеек, а не только две соседние ячейки. Чтобы объединить ячейки в трех строках вы можете написать

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

Или вы можете объединить 3x2 Заблокировать

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

Все в Excel является диапазон. Даже одна ячейка рассматривается как одноячеечная. Это делает работу с отдельными ячейками немного странной, но упрощает применение стилей и формул.

+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

Прохладный, я думаю, что буду использовать свой путь, но просто упомянуть, что я его протестировал, и _ ** Любой ** индекс одиночной ячейки в пределах диапазона блоков/диапазона объединенных ячеек будет работать полностью штраф как индекс для _ ** всего ** _ блока/диапазона объединенных ячеек –

Смежные вопросы