Apache POI 锁定标头行

2022-08-31 11:03:03

有没有人熟悉在使用Apache POI 3.7创建的电子表格中锁定行的方法?通过锁定,我的意思是我希望当用户滚动浏览行时,列的标题行保持可见。我创建的电子表格将有 500 行,如果列的名称始终可见,那将是有益的。


答案 1

如果您需要冻结工作表中任何特定行,则可以使用(内)(在POI 3.7中也可用)org.apache.poi.ss.usermodel.Sheet

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)

我不知道这个细节,但如果你在那条船上,那就值得调查一下。


推荐