【问题标题】:Apache POI Hyperlink does not open in Microsoft ExcelApache POI 超链接无法在 Microsoft Excel 中打开
【发布时间】:2019-11-13 14:25:09
【问题描述】:

我正在尝试使用指向 URL 的 apache poi 创建超链接。此 URL 返回一个 PDF 文件。我已经编写了如下代码来创建链接

HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL);
link.setAddress(cellValue);
cell.setHyperlink(link);
cell.setCellValue(cellValue);

我在 Excel 表中正确获取了链接,并且能够在除 Microsoft Excel 之外的每个编辑器中打开该链接。它引发错误无法打开链接。我可以在 Google 表格、Open Office 等中打开链接。

请帮帮我,因为我不确定这是一个已知问题还是我缺少的东西

【问题讨论】:

  • 您确定您使用的是最新版本的 Apache POI 来生成文件吗?
  • 我目前使用的是 3.9 版本,最新的是 3.10。我会尝试那个版本。我可以在更改日志中看到一些修复,但与我的问题无关
  • 我尝试了完全相同的代码,我运行,然后我打开生成的 .xls,一开始,它看起来像一个普通的文本。但!如果单击单元格两次(开始编辑单元格值),然后单击其他位置,当编辑单元格值完成时(即使您甚至没有触摸键盘,只需单击单元格的 IN 和 OUT),该链接将自动变为可点击、蓝色、带下划线并正确指向其地址。附言我正在使用 POI 3.10

标签: java excel apache-poi


【解决方案1】:

如果您以 .xls 格式导出 excel,请使用 HSSFHyperlink。对于 .xlxs 使用 XSSFHyperlink 类。它在 apache poi 3.10 中工作

cell.setCellValue("URL Link");
HSSFHyperlink link1 =(HSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_URL);
link1.setAddress("http://www.google.com/");
cell.setHyperlink((HSSFHyperlink) link1);
cell.setCellStyle(hlink_style);

【讨论】:

  • 如果您以 .xls 格式导出 excel,请使用 HSSFHyperlink。对于 .xlxs 使用 XSSFHyperlink 类。它在 apache poi 3.10 中工作
  • 请将您的上述评论添加到您的答案正文中
【解决方案2】:

我使用this Example 创建了超链接。我必须将 .xlsx 更改为 .xls 才能在 MS Excel 2010 中打开文件,但链接工作正常。

但是你的代码看起来也不错。

【讨论】:

    【解决方案3】:

    我认为这是 Apache poi 的问题。如果您有需要登录详细信息的超链接,则不会在 excel 中设置 cookie,这将导致再次登录页面。因此,我尝试通过设置 cookie 来解决问题。

    首先我尝试创建一个 URL 以及编码的用户详细信息 在 excel 中,如果您单击 URL,我会打开另一个页面,该页面将验证用户详细信息并重定向到所需的页面。

    【讨论】:

      猜你喜欢
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 2021-04-29
      相关资源
      最近更新 更多