使用poi导出excel 将同一个单元格内的多个网址变成对应的超链接
// 创建一个Excel文档
Workbook workbook = new XSSFWorkbook();
// 创建一个工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 创建一个行对象
Row row = sheet.createRow(0);
// 创建一个单元格对象
Cell cell = row.createCell(0);
// 在单元格中添加多个网址
String urls = "https://www.google.com,https://www.baidu.com,https://www.yahoo.com";
// 将网址分割成一个字符串数组
String[] urlArray = urls.split(",");
// 遍历网址数组,并将每个网址转换成超链接
for (String url : urlArray) {
// 创建一个超链接对象
CreationHelper createHelper = workbook.getCreationHelper();
Hyperlink hyperlink = createHelper.createHyperlink(HyperlinkType.URL);
// 设置超链接的地址
hyperlink.setAddress(url);
// 在单元格中添加超链接
cell.setHyperlink(hyperlink);
// 将网址添加到单元格中
cell.setCellValue(url);
// 创建一个新的单元格对象,以便在下一个循环中添加超链接
cell = row.createCell(cell.getColumnIndex() + 1);
}
// 将Excel文档写入输出流中
workbook.write(outputStream);
workbook.close();
3 回答2.6k 阅读✓ 已解决
3 回答4.1k 阅读✓ 已解决
8 回答3.6k 阅读
4 回答2.8k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
更新
先来在 excel 中看一个单元格能不能添加多个超链接: multiple-hyperlinks-in-one-cell。
答案很明显是不能,这不是 poi 的问题,excel 本身就没有这种规则。
但是从这里可以了解到有迂回的方法。
翻译过来的大致意思就是:增加一个透明的矩形放置于单元格之上,并设置超链接。
那么怎么用
poi
做到这一点呢?这里给了方法。
但是这个我看到这个方法并没有设置矩形为透明的代码,也就是说这一部分需要你自己去研究了。
如果你能够想到这个方案接下来面临的问题,并且还有兴趣的话,可以告诉我继续帮你找到方法,否则就放弃吧。
接下来还有几个问题:
最后我认为还有更简单的方式,直接放网址进去,都能够识别网址,直接点击,但是不能有别名。
原答案
org.apache.poi.ss.usermodel.Cell
方法setHyperlink
。来源。