Замораживание столбцов в EPPlus (функция разделения Excel)
Я много работал с EPPlus, чтобы сгенерировать файлы Excel для того количества экспортов, которое требуется от моего проекта. Большая часть экспорта, который они хотят, как правило, идеально совпадает с экспортом, который они уже имеют в своей прежней системе. Один из них, однако, они хотят другого. Они хотят, чтобы он выглядел точно так же, как один из экспортов из прежней системы, после того, как он сделал некоторые типичные и специфические правки.
Однако некоторые изменения, которые они делают, делают каждую строку намного длиннее, чем они хотят, поэтому они хотят сохранить часть информации о столбцах заблокированной на экране, в то время как остальные столбцы можно прокручивать как обычно. (т.е. функция разделения Excel). Я попытался заблокировать столбцы с ws.Column(6).Style.Locked = true
, но это не похоже на работу. Я также пытался установить диапазон ячеек Locked
свойство к истине, но это также не сработало.
Как я могу заморозить столбцы на месте?
2 ответа
Оказывается, что EPPlus имеет встроенную функцию для этого на Worksheet
сам объект называется FreezePanes
, Эта функция имеет 2 параметра, оба из которых int
: Строка и столбец. Это приведет к замораживанию любых строк или столбцов, которые вы хотите заблокировать на месте при просмотре листа.
Один из примеров на веб-сайте EPPlus использует его, хотя он не является основным направлением примера / Этот пример можно найти здесь.
Однако есть одна проблема с этой функцией, о которой вы должны знать: число, которое вы используете для параметра строки или столбца, фактически является первым столбцом, который НЕ зафиксирован на месте. Другими словами, если вы хотите, чтобы первые 5 столбцов были заморожены, вам нужно сделать следующий вызов:
ws.View.FreezePanes(1,6)
(Где 6 - первый столбец, который не заморожен)
Я понял это при использовании предложения @IronMan84, если вас интересует только строка, а не столбец. Ты можешь использовать
ws.View.FreezePanes(3, 1); // (Freeze Row 2 and no column)