java - 无法将字符串导出为 .xlsx 文件中的超链接 - Java 8 和 POI 3.17

标签 java excel spring-boot apache-poi

我尝试构建一个 Excel 文件,其中第一个单元格每次都是超链接。我在 Spring Boot API 中使用 Java 8 和 POI 3.17。 Excel 导出工作正常,但问题是,第一个单元格现在完全是空的。我没有收到任何警告或错误或其他内容。有问题的代码:

  final XSSFWorkbook wb = exportHelperService.loadWorkbookTemplate(path);
  XSSFHyperlink url_link = wb.getCreationHelper().createHyperlink(HyperlinkType.URL) // definition for Hyperlink


  fillWorkbook(....) {  // here i gonna fill my workbook - everything works fine

    url_link.setAddress("http://www.google.de/");  // definition of url address - checked that its not empty

    exportHelperService.insertHyperlinkValue(url_link, "Cell_1", row);  // calls function that writes into the cell 1 - for all other cells there is NO problem

    // ... code that works fine ...

  }


  public void insertHyperlinkValue(XSSFHyperlink value, String columName, Row row) {
    if (value != null) {
        Cell cell = row.getCell(columnIndexMap.get(columName), CREATE_NULL_AS_BLANK);
        cell.setHyperlink(value); // <--- HERE IS THE PROBLEM
    }
}

我测试了 insertHyperlinkValue() 函数以仅打印字符串并且它工作正常,但是对于超链接它不想工作...我的 false 在哪里?非常感谢您的每一个回答!!!

最佳答案

单元格已包含链接,只是没有文本/样式。

XSSFWorkbook wb = new XSSFWorkbook();
XSSFHyperlink link = wb.getCreationHelper().createHyperlink(HyperlinkType.URL);
XSSFCellStyle hlinkstyle = wb.createCellStyle();
XSSFFont hlinkfont = wb.createFont();
hlinkfont.setUnderline(XSSFFont.U_SINGLE);
hlinkfont.setColor(IndexedColors.BLUE.index);
hlinkstyle.setFont(hlinkfont);
link.setAddress("http://www.google.de/");
Sheet s = wb.createSheet();
Row r = s.createRow(0);
Cell c = r.createCell(0);
c.setHyperlink(link);
c.setCellStyle(hlinkstyle);  //<-- make it look like link
c.setCellValue(link.getAddress());  // <-- important
wb.write(new FileOutputStream(new File("D:\\Test\\hyperlink.xlsx")));
wb.close();

您只需设置单元格文本和样式即可。

关于java - 无法将字符串导出为 .xlsx 文件中的超链接 - Java 8 和 POI 3.17,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59968069/

相关文章:

java - 验证和编码大型 XML 文件?

python - 用Python读取一个excel文件,在不改变样式的情况下进行修改

java - 在实体和 DTO 之间映射非空字段的最佳方法是什么?

java - 为什么 Spring Boot 后端 JAR 文件在 Ubuntu 上只运行一小段时间?如何让它作为服务运行?

java - groupingBy 和 Java 8 - 在 groupingBy 之后将映射转换为对象列表

java - 从 Java 执行时 shell 命令执行失败

python - 使用 ExceltoCi 将数据加载到 Peoplesoft 数据库中

html - 从 vba 打开网站时,谷歌翻译无法在 IE 中翻译

java - H2 org.h2.jdbc.JdbcSQLException 与正确的 DDL sql : error code = [42000-196]

spring-boot - 如何使用Spring Boot配置JMX