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

时间:2014-04-11 05:54:40

标签: java excel apache-poi

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

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

3 个答案:

答案 0 :(得分:1)

请参阅此处的文档:

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

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

答案 1 :(得分:1)

返回nullthe getPaneInformation method的正常行为。

  

<强>返回:

     如果没有配置窗格,则

为null,或窗格信息。

这表示您的Sheet既未设置拆分窗格也未设置冻结窗格。如果您确实在正在阅读的工作簿中创建了拆分窗格或冻结窗格,或者使用createSplitPanecreateFreezePane以编程方式创建了分页窗格或冻结窗格,那么getPaneInformation将返回非{{1} }} null对象。

答案 2 :(得分:0)

这个问题已经很老了,所以为了分享知识,我把这些信息放了。

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

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

然后,您可以使用以下命令获取非冻结行的第一个索引:

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

根据Javadoc:

  

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

如果是垂直拆分,必须使用:

 row.getSheet().getVerticalSplitLeftColumn();