是否可以在单个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);
}
}
我的问题是超链接显示/仅适用于最后一行的内容。我的意思是,只有最后一行是可点击的,它会正确地重定向到哪里,而其他行没有设置为超链接? 是否有任何限制,只有一个超链接指向同一个网址?或者我做错了什么?
答案 0 :(得分:3)
每次要创建超链接单元格时,都必须创建新的超链接对象。在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(...
方法调用,可以看出这一点。