Java使用POI生成Excel文件

目录

一、代码地址

点击此处,跳转到本次演示的Demo源码地址


二、生成简单Excel文件

1.导入Jar包

普通项目:
这里写图片描述
Maven项目:
这里写图片描述

2.操作POI的七个步骤
a. 创建一个工作簿workbook
b. 创建一个工作表sheet
c. 创建一个行对象row(下标起始值为0)
d. 创建一个单元格对象cell(下标起始值为0)
e. 设置单元格的内容
f. 设置单元格的样式(如字体)
g. 保存,关闭流对象
3.代码实现
//        a. 创建一个工作簿workbook
        Workbook workbook = new HSSFWorkbook();
//        b. 创建一个工作表sheet
        Sheet sheet = workbook.createSheet();
//        c. 创建一个行对象row(下标起始值为0),这里是第4行
        Row row = sheet.createRow(3);
//        d. 创建一个单元格对象cell(下标起始值为0),这里是第四列
        Cell cell = row.createCell(3);
//        e. 设置单元格的内容
        cell.setCellValue("我的github地址:https://github.com/hdonghong");
//        f. 设置单元格的样式(如字体)
        CellStyle cellStyle = workbook.createCellStyle();
        Font font = workbook.createFont();
        font.setFontName("Microsoft YaHei UI");
        font.setFontHeightInPoints((short)40);
        cellStyle.setFont(font);
        cell.setCellStyle(cellStyle);
//        g. 保存,关闭流对象,在D盘生成excel测试.xls文件
        OutputStream os = new FileOutputStream("D:\\excel测试.xls");
        workbook.write(os);
os.close();


三、案例:学生成绩单

1.代码实现(不完整):
/**
 * 生成学生成绩单(不使用模板)
 * 注意,下面使用的bigTitle、title、text等方法都是关于设置单元格样式的,
 * 因加入后妨碍理解代码,在此不作展示,如需要,请自行到我github源码处下载:
 * https://github.com/hdonghong/JavaProject/blob/master/business_management/management_parent/management_web/src/test/java/management_web/PoiTest.java
 * @throws Exception
 */
public void test2() throws Exception {
    int cellNo = 1;// 单元格下标
    Cell cell = null;// 单元格对象
    int rowNo = 0;// 行下标
    Row row = null;// 行对象

    // 创建工作簿
    Workbook workbook = new HSSFWorkbook();
    // 创建工作表
    Sheet sheet = workbook.createSheet();
    // 设置单元格宽
    sheet.setColumnWidth(cellNo++, 30*256);
    sheet.setColumnWidth(cellNo++, 30*256);
    sheet.setColumnWidth(cellNo++, 30*256);

    //--------------设置大标题--------------
    row = sheet.createRow(rowNo);// 创建大标题的行对象
    row.setHeightInPoints(36);// 设置行高
    cellNo = 1;// 重置单元格下标为1
    cell = row.createCell(cellNo);// 在当前行上创建一个单元格对象
    sheet.addMergedRegion(new CellRangeAddress(rowNo, rowNo, cellNo, cellNo+2));// 合并单元格
    cell.setCellValue("学生成绩表");// 设置单元格内容
    cell.setCellStyle(this.bigTitle(workbook));// 设置单元格样式

    //--------------设置小标题--------------
    row = sheet.createRow(++rowNo);
    row.setHeightInPoints(26.25f);// 设置行高
    String titles[] = {"学号","姓名","成绩(单位:分)"};
    // 创建单元格对象,设置内容与样式
    for (String title : titles) {
        cell = row.createCell(cellNo++);
        cell.setCellValue(title);
        cell.setCellStyle(this.title(workbook));
    }

    //--------------模拟数据输出--------------
    row = sheet.createRow(++rowNo);
    row.setHeightInPoints(24);// 设置行高

    cellNo = 1;// 重置单元格下标为1
    cell = row.createCell(cellNo++);
    cell.setCellValue("200000");// 设置单元格内容,学号200000
    cell.setCellStyle(this.text(workbook));

    cell = row.createCell(cellNo++);
    cell.setCellValue("老王");// 设置单元格内容,老王
    cell.setCellStyle(this.text(workbook));

    cell = row.createCell(cellNo++);
    cell.setCellValue("59.9");// 设置单元格内容,59.9分
    cell.setCellStyle(this.text(workbook));

    // 保存,关闭流对象,在C盘生成excel测试.xls文件
    OutputStream os = new FileOutputStream("D:\\excel测试.xls");
    workbook.write(os);
    os.close();
}
2.到D盘看运行结果如下

这里写图片描述


四、使用模板生成学生成绩单

1.先配置好模板

这里写图片描述

2.代码实现
/**
 * 生成学生成绩单(使用模板)
 * @throws Exception
 */
public void test3() throws Exception {
    int cellNo = 1;// 单元格下标
    Cell cell = null;// 单元格对象
    int rowNo = 0;// 行下标
    Row row = null;// 行对象

    // 读取已存在的模板工作簿
    Workbook workbook = new HSSFWorkbook(new FileInputStream("D:\\excel模板.xls"));
    // 读取工作表
    Sheet sheet = workbook.getSheetAt(0);

    //--------------设置大标题--------------
    // 不需要了

    //--------------设置小标题--------------
    // 不需要了

    //--------------模拟数据输出--------------
    row = sheet.createRow(rowNo += 2);// 读取到第三行
    row.setHeightInPoints(24);// 设置行高

    cellNo = 1;// 重置单元格下标为1
    cell = row.createCell(cellNo++);
    cell.setCellValue("200000");// 设置单元格内容,学号200000

    cell = row.createCell(cellNo++);
    cell.setCellValue("老王");// 设置单元格内容,老王

    cell = row.createCell(cellNo++);
    cell.setCellValue("59.9");// 设置单元格内容,59.9分

    // 保存,关闭流对象,在D盘生成excel测试.xls文件
    OutputStream os = new FileOutputStream("D:\\excel测试2.xls");
    workbook.write(os);
    os.close();
}
3.运行结果

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值