超链接到同一工作簿中使用apache poi不同的工作表
我正在使用Apache POI来生成包含多个工作表的Excel工作簿。 我想创build一个从一个表到另一个超链接。 如何做到这一点? 我find了build立超链接到网站的解决scheme,甚至是其他excel文件,但是没有到同一工作簿中的其他表格。 Apache POI是否允许我们这样做?
是的,Apache POI允许您创build超链接到同一工作簿中的其他工作表。 根据Apache POI快速指南 :
cell = sheet.createRow(3).createCell((short)0); cell.setCellValue("Worksheet Link"); Hyperlink link2 = createHelper.createHyperlink(Hyperlink.LINK_DOCUMENT); link2.setAddress("'Target Sheet'!A1"); cell.setHyperlink(link2); cell.setCellStyle(hlink_style);
这将创build一个单元格,其中包含LINK_DOCUMENT
types的超链接,其单元格引用的地址可以位于同一个表单或另一个表单中。 然后它将单元格样式设置为现有的单元格样式(在代码示例中早先创build),以便它看起来像超链接。
您还可以使用POI链接到另一个工作表中的单元格地址。
创buildtypes为Hyperlink.LINK_DOCUMENT的链接。 然后发送setHyperlink()这个格式的string:
文件:/ E:/PROJECTS/SomePrj/ExcelFileName.xlsx#'ExcelSheetName“B5!
这将起作用 – 至less对于XSSF来说。
使用aFile.toURI()。toString()在“#”字符之前构buildfilepart。 不要忘记添加# , '和! 字符(正如我的例子),否则将无法正常工作。
我没有看到这种技术在(否则很好)POI文件中显示。
我find了正确的方法。 testingpoi 3.16,并解决了不允许在链接空间(表名可以有空间)的恼人的问题。 如果您尝试使用link.setAddress("ExcelWrite.xlsx#'Sheet 1'!A2");
将会出错link.setAddress("ExcelWrite.xlsx#'Sheet 1'!A2");
正确的代码:
cell = sheet.createRow(1).createCell(0); cell.setCellValue("File Link"); XSSFHyperlink link = (XSSFHyperlink) createHelper.createHyperlink(HyperlinkType.FILE); link.setAddress("ExcelWrite.xlsx"); link.setLocation("'Sheet 1'!A2"); cell.setHyperlink(link); cell.setCellStyle(hlink_style);