有没有人熟悉用Apache POI 3.7创建的电子表格中锁定行的方法?通过锁定,我的意思是我希望当用户在各行之间滚动时,各列的标题行保持可见。我创建的电子表格将有500行,如果该列的名称始终可见,那将是有益的。
Answers:
如果需要冻结工作表中任何位置的任何特定行(在范围内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
您不能冻结中间的行而不冻结上面的行。
假设您有100行,而标题行在第50行。您可能希望只有第50行被锁定,因此从1-49行滚动时,所有内容都会向上滚动,到达50行时,第50行会滚动到当滚动第51-100行时,它会停留在顶部并停留在那里。
但是,有一种解决方法。您可以做的是,对行进行分组,然后冻结它们。
首先,将1-49中的行分组,然后冻结1-50中的窗格。现在,用户可以最小化组,然后在表头锁定且位于顶部的情况下使用表。
sheet.groupRow(0, 49);
sheet.createFreezePane(0, 50);
不过有一个小问题。如果工作表受保护,MS Excel将不允许您展开/折叠组。为此,您需要编写一个宏。