Java实现导出的Excel中自带超链接跳转标签页,加了字体颜色、下划线 使用CreationHelper、XSSFWorkbook去实现
package cn.hrfax.bmp.biz;
import org.apache.poi.common.usermodel.HyperlinkType;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelTabJump {
public static void main(String[] args) {
long start = System.currentTimeMillis();
String filePath = "C:/Users/admin/Desktop/lingPaoDiscountTemplate.xlsx";
String sheetName = "汇总"; // 要跳转的标签页名称
try (Workbook workbook = new XSSFWorkbook()) {
Sheet sheet = workbook.createSheet(sheetName);
workbook.setActiveSheet(workbook.getSheetIndex(sheet));
// 创建一个超链接,指向其他标签页
CreationHelper creationHelper = workbook.getCreationHelper();
// 第一个超链接,从第一个标签页跳转到第二个标签页
Hyperlink link1 = creationHelper.createHyperlink(HyperlinkType.DOCUMENT);
link1.setAddress("'企业异常'!A1");
link1.setLabel("点击这里跳转到第二个标签页");
// 第二个超链接,从第二个标签页跳转回第一个标签页
Hyperlink link2 = creationHelper.createHyperlink(HyperlinkType.DOCUMENT);
link2.setAddress("'汇总'!A1");
link2.setLabel("点击这里跳转回第一个标签页");
Hyperlink link3 = creationHelper.createHyperlink(HyperlinkType.DOCUMENT);
link3.setAddress("'变更'!A1");
Sheet sheet1 = workbook.createSheet("变更");
Sheet sheet2 = workbook.createSheet("企业异常");
//创建字体对象,并设置下划线样式
Font font = workbook.createFont();
font.setUnderline(Font.U_SINGLE);
font.setColor(IndexedColors.BLUE.getIndex());
// 设置字体样式为下划线
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(font);
Row row1 = sheet1.createRow(0);
Cell cell1 = row1.createCell(0);
cell1.setCellValue("点击此处跳转到企业异常标签页");
cell1.setHyperlink(link1);
cell1.setCellStyle(cellStyle); // 应用样式到单元格
Row row2 = sheet2.createRow(0);
Cell cell2 = row2.createCell(3);
cell2.setCellStyle(cellStyle); // 应用样式到单元格
cell2.setCellValue("返回汇总表");
cell2.setHyperlink(link2); // 将超链接应用于单元格
Row row3 = sheet.createRow(0);
Cell cell3 = row3.createCell(0);
cell3.setCellStyle(cellStyle); // 应用样式到单元格
cell3.setCellValue("点击跳转到变更标签页");
cell3.setHyperlink(link3); // 将超链接应用于单元格
try (FileOutputStream fos = new FileOutputStream(filePath)) {
workbook.write(fos);
System.out.println("导出Excel成功!");
}
} catch (IOException e) {
e.printStackTrace();
}
long end = System.currentTimeMillis();
System.out.println("跳转时间:" + (end -start) + "毫秒");
}
}