Java导出excel文件简单实现

惯例: 引用度娘的介绍

Apache POI [1] 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“可怜的模糊实现”。


1、导入maven

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>

2、工具方法
/**
 * @param sheetName 表名
 * @param header 表头数据
 * @param body 主干数据 body.get(i) 对应 i+1行的所有数据
 */
public static void generateExcel(String sheetName, List<String> header, List<List<String>> body, OutputStream out) {
    //新建excel报表
    HSSFWorkbook excel = new HSSFWorkbook();
    //添加一个sheet
    HSSFSheet hssfSheet = excel.createSheet(sheetName);
    //往excel表格创建一行,excel的行号是从0开始的
    // 设置表头
    HSSFRow firstRow = hssfSheet.createRow(0);
    for (int columnNum = 0; columnNum < header.size(); columnNum ++) {
        //创建单元格
        HSSFCell hssfCell = firstRow.createCell(columnNum);
        //设置单元格的值
        hssfCell.setCellValue(header.size() < columnNum ? "-" : header.get(columnNum));
    }
    // 设置主体数据
    for (int rowNum = 0; rowNum < body.size(); rowNum ++) {
        //往excel表格创建一行,excel的行号是从0开始的
        HSSFRow hssfRow = hssfSheet.createRow(rowNum + 1);
        List<String> data = body.get(rowNum);
        for (int columnNum = 0; columnNum < data.size(); columnNum ++) {
            //创建单元格
            HSSFCell hssfCell = hssfRow.createCell(columnNum);
            //设置单元格的值
            hssfCell.setCellValue(data.size() < columnNum ? "-" : data.get(columnNum));
        }
    }
    try {
        excel.write(out);
    } catch (IOException e) {
        e.printStackTrace();
    }
}
3、代码测试
public static void main(String[] args) {
    List<String> header = new ArrayList<>(); // 第一行数据
    header.add("编号");
    header.add("姓名");
    header.add("性别");
    header.add("手机号");
    List<List<String>> body = new ArrayList<>();
    List<String> data1 = new ArrayList<>(); // 第二行数据
    data1.add("1001");
    data1.add("张三");
    data1.add("男");
    data1.add("12345678900");
    List<String> data2 = new ArrayList<>(); // 第三行数据
    data2.add("1002");
    data2.add("李四");
    data2.add("男");
    data2.add("12300000000");
    body.add(data1);
    body.add(data2);
    try (
        OutputStream out = new FileOutputStream("F:/test.xls") // 输出目的地
    ) {
        POIUtil.generateExcel("sheetName", header, body, out);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值