Кто-нибудь знает, как заблокировать строку в электронной таблице, созданной с помощью Apache POI 3.7? Блокировка означает, что я хочу, чтобы строка заголовка для столбцов оставалась видимой, когда пользователь прокручивает строки. Моя созданная таблица будет содержать 500 строк, и было бы полезно, если бы имена столбцов были всегда видны.
Строки заголовка Apache POI
Ответ 1
В случае, если вам нужно заморозить любую конкретную строку в любом месте листа, который вы можете использовать (внутри org.apache.poi.ss.usermodel.Sheet
) (также доступно в POI 3.7)
Sheet.createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow)
В вашем случае, если вы хотите заморозить только ваши первые x строк, раздел int leftmostColumn, int topRow
будет удален, и вы можете использовать только
Sheet.createFreezePane(int colSplit, int rowSplit)
например
sheet1.createFreezePane(0, 5); // this will freeze first five rows
Ответ 2
Чтобы сделать это, вы можете создать панель замораживания следующим образом:
workbook.getSheetAt(workbook.getActiveSheetIndex()).createFreezePane(0, 1);
Это заморозит первую строку на месте. Там есть другой метод с большим количеством опций, поэтому проверьте API.
Единственное, что нужно отметить, - это использовать книги XSSF - есть упоминание об исправлении в версии 3.8-beta3, в котором исправлено поведение замораживающих панелей с использованием таблиц XSSF:
50884 - XSSF и HSSF заморозки теперь ведут себя одинаково (poi-developers)
Я не знаю подробностей этого, но было бы интересно исследовать, находитесь ли вы в этой лодке.