Подтвердить что ты не робот

Замораживание столбцов в EPPlus (функция разделения Excel)

Я много работал с EPPlus для генерации файлов Excel для количества экспортируемых мной проектов. Большая часть экспорта, который они хотят, как правило, идеально сочетается с экспортом, который у них уже есть в их прежней системе. Один из них, однако, хочет другого. Они хотят, чтобы он выглядел точно так же, как один из экспорта из унаследованной системы после того, как они сделали некоторые типичные и конкретные изменения.

Тем не менее некоторые из изменений, которые они делают, делают каждую строку намного длиннее, чем они хотят, поэтому они хотят, чтобы какая-либо информация о столбце была заблокирована на месте, в то время как остальные столбцы могут быть прокручивается как обычно (т.е. функция разделения Excel). Я попытался заблокировать столбцы с ws.Column(6).Style.Locked = true, но это не работает. Я также попытался установить свойство ячейки Locked в значение true, но это также не сработало.

Как я могу заморозить столбцы на месте?

4b9b3361

Ответ 1

Оказывается, EPPlus имеет встроенную функцию для этого в самом объекте Worksheet, называемом FreezePanes. Эта функция имеет 2 параметра, оба из которых int: строка и столбец. Выполнение этого приведет к замораживанию любых строк или столбцов, которые вы хотите заблокировать при просмотре рабочего листа.

Один из примеров на веб-сайте EPPlus использует его, хотя это не основное внимание в примере/Этот пример может быть найден здесь.

Существует одна информация с этой функцией, о которой вы должны знать, хотя: число, которое вы используете для параметра row или column, фактически является первым столбцом, который NOT заморожен на месте. Другими словами, если вы хотите, чтобы первые 5 столбцов были заморожены, вам необходимо сделать следующий вызов:

ws.View.FreezePanes(1,6) (где 6 - первый столбец, который не заморожен)

Ответ 2

Я понял, что при использовании предложения @IronMan84, если вас интересует только строка, но не столбец. Вы можете использовать

ws.View.FreezePanes(3, 1); // (Freeze Row 2 and no column)