2016-02-29 207 views
3

我使用Apache POI來生成包含多個工作表的Excel工作簿。我想創建一個從一張到另一張的超鏈接。如何做到這一點?我發現了一些解決方案,用於建立與網站的超鏈接,甚至是其他Excel文件,但不包括同一工作簿中的其他工作表。 Apache POI是否允許我們這樣做?超鏈接到同一工作簿中使用apache poi的不同工作表

回答

3

是的,Apache POI允許您創建超鏈接到同一工作簿中的另一張工作表。根據Apache POI Quick Guide

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); 

這將創建LINK_DOCUMENT類型的在它的超鏈接的小區,與小區的參考的地址,其可以是相同的片材或片材的另一個。然後它將單元格樣式設置爲現有單元格樣式(在代碼示例中早先創建),以便它看起來像超鏈接。

0

您還可以鏈接到使用POI的另一個工作表中的單元格地址。

將您的鏈接創建爲Hyperlink.LINK_DOCUMENT類型。那麼在這種格式發送setHyperlink()的字符串:

文件:/ E:/PROJECTS/SomePrj/ExcelFileName.xlsx#'ExcelSheetName「B5

,將工作 - 至少XSSF!

使用aFile.toURI()。toString()在'#'字符之前構建filepart。不要忘記同時添加,'字符(正好在我的例子中)或它不會工作。

我沒有看到這種技術在(否則很好)POI文檔中演示。

+0

對不起剪切和粘貼小鬼 - 在您需要定義的聯繫,Hyperlink.LINK_URL另一個工作表鏈接到一個單元格地址。使用Hyperlink.LINK_DOCUMENT會限制您在同一文檔中的鏈接 –

0

我找到了正確的方法。測試poi 3.16並解決了不允許鏈接空間的問題(表名可以有空格)。如果您嘗試 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); 
相關問題