Poi 创建带有超链接单元格的 excel?
使用poi导出excel 将同一个单元格内的多个网址变成对应的超链接
回答:
更新
先来在 excel 中看一个单元格能不能添加多个超链接: multiple-hyperlinks-in-one-cell。
答案很明显是不能,这不是 poi 的问题,excel 本身就没有这种规则。
但是从这里可以了解到有迂回的方法。
- Click Insert in the ribbon, and then click Shape, then you can select a rectangle shape
- Drawing a rectangle in the text that you want to insert hyperlink. And the rectangle will shade the text. See screenshot
- hen click the rectangle and right-click, and choose the Format Shape from the menu, and then a Format Shape dialog box will pop out. Click Fill in the left pane, and check No fill in the right pane. See screenshot
- Go on clicking Line Color in the left pane, and check No line in the right pane
- Then click Close button. And the rectangle has been changed transparently. See screenshot
- Put the cursor at the transparent rectangle, and right-click, choose Hyperlink from the menu, and then you can specify the file or enter the address to be hyperlinked
翻译过来的大致意思就是:增加一个透明的矩形放置于单元格之上,并设置超链接。
那么怎么用 poi
做到这一点呢?
这里给了方法。
但是这个我看到这个方法并没有设置矩形为透明的代码,也就是说这一部分需要你自己去研究了。
如果你能够想到这个方案接下来面临的问题,并且还有兴趣的话,可以告诉我继续帮你找到方法,否则就放弃吧。
接下来还有几个问题:
- 你需要调整单元格的大小
- 需要将矩形放置到合适的位置
- 位置计算将会非常困难,因为涉及到字体大小,文字的动态改变,难,但不是不可以。
最后我认为还有更简单的方式,直接放网址进去,都能够识别网址,直接点击,但是不能有别名。
原答案
org.apache.poi.ss.usermodel.Cell
方法 setHyperlink
。
fun main() { val url = "https://segmentfault.com/q/1010000043471701"
XSSFWorkbook().use { workbook ->
FileOutputStream("test.xlsx").use { fileout ->
val sheet: Sheet = workbook.createSheet()
val link: Hyperlink = workbook.creationHelper.createHyperlink(HyperlinkType.URL)
link.address = url
val row: Row = sheet.createRow(0)
val cell: Cell = row.createCell(0)
val cellText = "springboot导出excel?"
cell.setCellValue(cellText)
cell.hyperlink = link
sheet.setColumnWidth(0, cellText.length * 256)
workbook.write(fileout)
}
}
}
来源。
回答:
// 创建一个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();
以上是 Poi 创建带有超链接单元格的 excel? 的全部内容, 来源链接: utcz.com/p/945012.html