Java 生成Excel 样式设置,超链接设置

本文介绍了如何在Java中使用ApachePOI库引入poi-ooxml依赖,实现字体样式设置、单元格合并、以及创建超链接,包括内部链接到工作簿其他sheet和外部链接到网页和文件。
  1. 引入poi依赖
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>
  1. 设置字体相关样式代码
import org.apache.poi.common.usermodel.HyperlinkType;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;

public class StyleStudy {

    public static void main(String[] args) {
        FileOutputStream out = null;
        XSSFWorkbook xSSFWorkbook = null;
        try {
            xSSFWorkbook = new XSSFWorkbook();
            setFontStyle(xSSFWorkbook);
            out = new FileOutputStream(new File("C:\\Users\\Administrator\\Desktop\\test\\study\\"+System.currentTimeMillis()+".xlsx"));
            xSSFWorkbook.write(out);
            System.out.println("EXCEL文件已生成=========");
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    private static void setFontStyle(XSSFWorkbook workbook) {

        // 创建一个sheet页
        XSSFSheet sheet = workbook.createSheet();

        // 创建样式对象
        XSSFCellStyle style = workbook.createCellStyle();
        // 字体样式
        XSSFFont font = workbook.createFont();
        font.setFontName("宋体");// 字体类型
        font.setFontHeightInPoints((short) 16);// 字体大小
        font.setBold(true);// 加粗
        font.setColor(setColor(255,0,0));// 字体颜色
        font.setItalic(true);// 倾斜
        font.setUnderline(FontUnderline.SINGLE);// 下划线
        style.setFont(font);

        // 边框
        style.setBorderLeft(BorderStyle.THIN);// 左边细框
        style.setBorderTop(BorderStyle.DOUBLE);// 上粗边框
        style.setBorderRight(BorderStyle.HAIR);// 右虚线
        style.setBorderBottom(BorderStyle.DASH_DOT);// 下虚线

        // 填充色
        style.setFillForegroundColor(setColor(246,180,0));
        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

        // 是否自动换行,内容必须加\r\n
        style.setWrapText(true);

        // 内容对齐与居中
        style.setAlignment(HorizontalAlignment.CENTER);// 垂直居中
        style.setAlignment(HorizontalAlignment.LEFT);// 垂直左对齐
        style.setVerticalAlignment(VerticalAlignment.CENTER);// 水平居中
        style.setVerticalAlignment(VerticalAlignment.BOTTOM);// 水平向下

        XSSFRow row = sheet.createRow(0);
        row.createCell(0).setCellValue("字体类型为“宋体”,\n大小24,\n加粗,\n颜色红色,\n倾斜,\n带下划线");
        row.getCell(0).setCellStyle(style);
    }
    private static XSSFColor setColor(int r, int g, int b){
        return new XSSFColor(new Color(r,g,b));
    }
  1. 单元格设置,合并单元格,设置超链接
import org.apache.poi.common.usermodel.HyperlinkType;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;

public class StyleStudy {

    public static void main(String[] args) {
        FileOutputStream out = null;
        XSSFWorkbook xSSFWorkbook = null;
        try {
            xSSFWorkbook = new XSSFWorkbook();
            margeCell(xSSFWorkbook);
            out = new FileOutputStream(new File("C:\\Users\\Administrator\\Desktop\\test\\study\\"+System.currentTimeMillis()+".xlsx"));
            xSSFWorkbook.write(out);
            System.out.println("EXCEL文件已生成=========");
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 单元格设置
     * @param workbook
     */
    private static void margeCell(XSSFWorkbook workbook) {
        XSSFSheet sheet = workbook.createSheet();

        // 合并单元格,1到4行,1到4列进行合并
        XSSFRow row1 = sheet.createRow(0);
        row1.createCell(0).setCellValue("合并单元格");
        sheet.addMergedRegion(new CellRangeAddress(0,3,0,3));

        /**
         * 设置超链接
         */
        XSSFRow row2 = sheet.createRow(4);
        XSSFCell cell2 = row2.createCell(0);
        cell2.setCellValue("另一个sheet页的指定位置");
        XSSFCreationHelper creationHelper = workbook.getCreationHelper();
        XSSFHyperlink hyperlink = creationHelper.createHyperlink(HyperlinkType.DOCUMENT);
        // 链接到此Excel的任何地方,以“!”分割,前面表示sheet的名字,没有则本sheet页进行跳转
        hyperlink.setAddress("跳转sheet页!A10");
        cell2.setHyperlink(hyperlink);
        // 创建第二个sheet页提供跳转
        XSSFSheet sheet1 = workbook.createSheet("跳转sheet页");
        sheet1.createRow(9).createCell(0).setCellValue("跳转到这里");

        // 链接到指定网站
        XSSFRow row3 = sheet.createRow(5);
        XSSFCell cell3 = row3.createCell(0);
        cell3.setCellValue("链接到百度网站");
        XSSFHyperlink hyperlink2 = creationHelper.createHyperlink(HyperlinkType.URL);
        hyperlink2.setAddress("https://www.baidu.com/");
        cell3.setHyperlink(hyperlink2);

        // 打开指定文件
        XSSFRow row4 = sheet.createRow(5);
        XSSFCell cell4 = row4.createCell(0);
        cell4.setCellValue("链接到指定文件");
        XSSFHyperlink hyperlink3 = creationHelper.createHyperlink(HyperlinkType.FILE);
        File file = new File("C:\\Users\\Administrator\\Desktop\\test\\4、图片文件\\01.jpg");
        String filePath = file.toURI().toString();
        System.out.println("文件路径:"+filePath);
        hyperlink3.setAddress(filePath);
        cell4.setHyperlink(hyperlink3);

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值