Java ApachePOI锁定头行

Java ApachePOI锁定头行,java,apache-poi,Java,Apache Poi,有人熟悉在使用ApachePOI3.7创建的电子表格中锁定行的方法吗?通过锁定,我的意思是,当用户滚动行时,我希望列的标题行保持可见。我创建的电子表格将有500行,如果列名始终可见,这将非常有益。为此,您可以创建一个冻结窗格,如下所示: workbook.getSheetAt(workbook.getActiveSheetIndex()).createFreezePane(0, 1); 这将在适当位置冻结第一行。还有一种方法有更多选项,所以请查看 唯一需要注意的是,如果您使用的是XSSF工作簿

有人熟悉在使用ApachePOI3.7创建的电子表格中锁定行的方法吗?通过锁定,我的意思是,当用户滚动行时,我希望列的标题行保持可见。我创建的电子表格将有500行,如果列名始终可见,这将非常有益。

为此,您可以创建一个冻结窗格,如下所示:

workbook.getSheetAt(workbook.getActiveSheetIndex()).createFreezePane(0, 1);
这将在适当位置冻结第一行。还有一种方法有更多选项,所以请查看

唯一需要注意的是,如果您使用的是XSSF工作簿,那么在版本3.8-beta3中提到了一个错误修复程序,它修复了使用XSSF电子表格冻结窗格的行为:

50884-XSSF和HSSF冻结窗格现在的行为相同(poi开发人员)


我不知道这方面的细节,但如果你在那条船上,那就值得调查了。

如果你需要冻结工作表中任何可以使用的特定行(在
org.apache.poi.ss.usermodel.sheet
中)(也可以在poi 3.7中获得)

在您的情况下,如果您只想冻结前x行,那么
int-leftmostColumn,int-topRow
部分将被删除,您可以使用

Sheet.createFreezePane(int colSplit, int rowSplit)
比如说

sheet1.createFreezePane(0, 5); // this will freeze first five rows

如果不冻结中间行,则不能冻结中间行上方的行

假设有100行,标题行在第50行。您可能认为只有第50行被锁定,因此当从第1-49行滚动时,所有内容都向上滚动,当它到达第50行时,第50行滚动到顶部,并在滚动第51-100行时保持在顶部

但是,有一个解决办法。您可以做的是,将行分组,然后冻结它们

首先,将1-49中的行分组,然后将1-50中的窗格冻结。现在,用户可以最小化组,然后在锁定表头并位于顶部的情况下处理表

sheet.groupRow(0, 49);
sheet.createFreezePane(0, 50);

不过有一个小问题。如果工作表受到保护,MS Excel将不允许您展开/折叠组。为此,您需要编写一个宏。

POI 3.7现在有点旧了,您为什么不使用最新版本?是的,这是我的雇主授权的。我只想冻结我的第1列和第17行,请建议我如何实现这一点。提前谢谢。
sheet.groupRow(0, 49);
sheet.createFreezePane(0, 50);