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

Java 如何在使用ApachePOI读取时获取excel中冻结或拆分列的信息?,java,excel,apache-poi,Java,Excel,Apache Poi,当我阅读ApachePOI文档时,他们说您可以使用util包中的PanelInformation对象获取冻结或拆分窗格的信息。为此,我需要HSSFSheet类的对象。我能够获取HSSFSHeet对象,但当我尝试使用getPanelInformation方法从中获取PanelInformation时。它返回空值 HSSFWorkbook workbook = new HSSFWorkbook(file); HSSFSheet sheet = workbook.getSheetAt(sheetNum

当我阅读ApachePOI文档时,他们说您可以使用util包中的PanelInformation对象获取冻结或拆分窗格的信息。为此,我需要HSSFSheet类的对象。我能够获取HSSFSHeet对象,但当我尝试使用getPanelInformation方法从中获取PanelInformation时。它返回空值

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

请参阅此处的文档:


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

返回
null
是您的正常行为

返回:

如果未配置窗格或窗格信息,则为null


这表示未为
工作表设置拆分窗格或冻结窗格。如果您确实在正在阅读的工作簿中创建了拆分窗格或冻结窗格,或者使用
createSplitPane
createFriezePane
以编程方式创建了拆分窗格或冻结窗格,那么
getPaneInformation
将返回一个非空的
PaneInformation
对象。

这个问题很老了,所以我把这些信息放在这里是为了分享知识

如前所述,您可以发现某些行是否已冻结:

row.getSheet().getPaneInformation().isFreezePane();
然后,您可以使用以下方法获取非冻结行的第一个索引:

row.getSheet().getPaneInformation().getHorizontalSplitTopRow();
根据Javadoc:

对于水平拆分,返回底部窗格中的顶行

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

 row.getSheet().getVerticalSplitLeftColumn();

我尝试了,但是sheet.getPanelInformation()返回null。同样根据文档,该方法:“如果未配置窗格,则返回null,或者窗格信息。”抱歉,问题出在我的代码中。现在我可以检索窗格信息,并且它不为空。但是我怎么才能知道哪些列或行是冻结的呢?这是我的最终要求。我搜索了很多方法,但还没有点击。我编辑了我的问题以进一步解释。请帮忙。谢谢你的帮助。问题出在我的代码里。现在我可以检索窗格信息,并且它不为空。但是我怎么才能知道哪些列或行是冻结的呢?这是我的最终要求。我搜索了很多方法,但还没有点击。