Apache POI 中的多个超链接

问题描述 投票:0回答:2

是否可以在一个 Excel 工作表中多次使用相同的超链接?

Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_URL);
link.setAddress("http://poi.apache.org/");

我使用上面的代码创建超链接,并使用以下代码生成 Excel 工作表的行和列。

 Row title = null;
 Cell reportNames = null;

   /*
       I am processing some queries here
   */


      while(rs.next()){
            title = sheet.createRow(idx); 
            reportNames = title.createCell(0);
            reportNames.setCellValue(rs.getString(1));
            reportNames.setHyperlink(link); 
            idx++;
            sheet.autoSizeColumn(0);

          }
        }

我的问题是超链接仅显示/仅适用于最后一行的内容。我的意思是,只有最后一行是可单击的,并且它会正确地重定向我,因为其他行没有设置为超链接? 是否有任何限制,只能有一个超链接指向同一网址?还是我做错了什么?

java excel apache-poi
2个回答
4
投票

每次要创建超链接单元格时,都必须创建一个新的超链接对象。当您对 Cell 对象调用 setHyperlink 时,它会设置对自身的超链接引用。以下是

org.apache.poi.xssf.usermodel.XSSFCell
类的摘录(版本 3.9 中的第 913 - 921 行):

public void setHyperlink(Hyperlink hyperlink) {
    XSSFHyperlink link = (XSSFHyperlink)hyperlink;

    // Assign to us
    link.setCellReference( new CellReference(_row.getRowNum(), _cellNum).formatAsString() );

    // Add to the lists
    getSheet().addHyperlink(link);
}

通过查看

link.setCellReference(...
方法调用就可以明显看出。


0
投票

嘿,你解决这个问题了吗?如果解决了,请更新并发送该代码一次。提前致谢。投票赞成

© www.soinside.com 2019 - 2024. All rights reserved.