当前位置: 首页 > 知识库问答 >
问题:

使用apache poi超链接到同一工作簿中的不同工作表

金晨
2023-03-14

我使用Apache POI生成包含多个工作表的excel工作簿。我想创建一个从一张图纸到另一张图纸的超链接。如何做到这一点?我找到了一些解决方案,可以建立到网站的超链接,甚至是其他excel文件,但不能链接到同一工作簿中的其他工作表。Apache POI允许我们这样做吗?

共有3个答案

宰父淳
2023-03-14

我找到了正确的方法。在poi 3.16上进行了测试,解决了链接中不允许有空格的恼人问题(图纸名称可以有空格)。如果尝试链接,则会出现错误。setAddress(“ExcelWrite.xlsx#'表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);
颛孙钱青
2023-03-14

您还可以使用POI链接到另一个工作表中的单元格地址。

将链接创建为类型Hyperlink。LINK_文件。然后以以下格式向setHyperlink()发送一个字符串

文件:/E:/项目/某些文件/ExcelFileName.xlsx#“ExcelSheetName”!B5

这将奏效——至少对XSSF是这样。

使用aFile。toURI()。toString()在字符“#”之前构建filepart。不要忘记添加#、'和!字符(与我的示例完全相同),否则它将不起作用。

我没有看到这种技术演示在(否则很好)POI留档。

长孙阳焱
2023-03-14

是的,Apache POI允许您创建指向同一工作簿中另一个工作表的超链接。根据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);

这将创建一个单元格,其中包含一个类型为“LINK\u DOCUMENT”的超链接,单元格引用的地址可以在同一个工作表或另一个工作表中。然后将单元样式设置为现有单元样式(在代码示例的前面创建),使其看起来像一个超链接。

 类似资料:
  • 2,3和6-12被跳过。下面是我的代码: 我认为这个问题与行“wb1.sheets(1).Range(”a“&Range(”a1“).end(xlDown).row+1)”有关,但我不知道如何解决这个问题。有什么建议吗?谢谢!

  • 我目前有一个工作簿,可以在excel中打开多个txt文件,过滤所有数据,只从中导入我需要的内容。每次导入都会进入不同的excel表“1”、“2”、“3”……到“31”(天)。 所有工作表具有相同的列数,但行数不同。我需要做的是将所有工作表合并到同一工作簿中的“ALL”工作表中。 帮助?!

  • 我有一段巧妙的代码,它根据指定单元格中的特定文本输入隐藏/隐藏表。在Book1中的Sheet1中(比方说),如果我改变单元格A1中的文本(比方说文本是苹果、橘子等),我会在同一本书中的sheet2上得到某些表格(让我们称之为答题卡)。 现在,在另一本书中,我有一个表,其中包含所有可能的文本值(Apple,oranges,等等)。我想写一个代码,首先通过这个表,使值在book1.sheet1(“sh

  • 我有一个Excel工作簿,其中包含36个不同的工作表,我每两周收到一次,工作表在所有标签上都有共同的标题,并且每个标签上都有不同的唯一标题,但每条记录都有一个唯一的ID,可以有多个记录。 我要做的是从所有的工作表中提取唯一的id,然后将每个工作表中的数据提取到一个工作表中,其中包含所有的公共标题和唯一标题。 我正在考虑使用下面帖子中的代码将其导入Access。连接表并将其导出回Excel中的一个工

  • 问题内容: 我有一个较大的电子表格文件(.xlsx),正在使用python pandas处理。碰巧我需要那个大文件中两个标签中的数据。其中一个标签包含大量数据,另一个标签仅包含几个方形单元格。 当我在 任何 工作表上使用pd.read_excel()时,在我看来整个文件都已加载(不仅仅是我感兴趣的工作表)。因此,当我两次使用该方法(每张纸一次)时,我实际上不得不使整个工作簿被读两次(即使我们仅使用