Java实现导出的Excel添加超链接跳转标签页

568 阅读1分钟

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) + "毫秒");
    }
}