如何在使用apache poi阅读时在excel中获取冻结或拆分列的信息?

当我通过apache poi文档时,他们说你可以使用util包中的PanelInformation对象来获取冻结或拆分窗格的信息。 为此,我需要HSSFSheet类的对象。 我能够获得HSSFSHeet对象,但是当我试图从getPanelInformation方法获取PanelInformation。 它返回我空。

HSSFWorkbook workbook = new HSSFWorkbook(file); HSSFSheet sheet = workbook.getSheetAt(sheetNumber); workbook.setActiveSheet(sheetNumber); System.out.println(sheet.getPaneInformation()); 

请参阅这里的文档:

https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Sheet.html

你正在寻找的方法我相信是getPaneInformation()方法,它会告诉你,你当前正在查看的窗格是冻结还是拆分窗格。

返回nullgetPaneInformation方法的正常行为。

返回:

如果没有configuration窗格,或者窗格信息为null。

这表明您的工作Sheet没有设置拆分窗格和冻结窗格。 如果您确实在您正在阅读的工作簿中创build了拆分窗格或冻结窗格,或者使用createSplitPanecreateFreezePane编程,则getPaneInformation将返回非null PaneInformation对象。

这个问题是相当古老的,所以我把这些信息为了分享知识。

如前所述,您可以查看是否某些行被冻结:

 row.getSheet().getPaneInformation().isFreezePane(); 

然后,你可以得到非冻结行的第一个索引:

 row.getSheet().getPaneInformation().getHorizontalSplitTopRow(); 

根据Javadoc:

对于水平分割,返回BOTTOM窗格中的顶行。

在垂直分割的情况下,必须使用:

  row.getSheet().getVerticalSplitLeftColumn();