简单的Apache POI 案例(Excel的文件操作)



Apache POI 案例(Excel的文件操作)

在项目开发中,难免会遇到一些需要导出数据的业务,所以整理了一下基本的操作

POI介绍

Apache POI是用Java编写的免费开源的跨平台的Java工具,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件

maven 坐标导入
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>3.14</version>
</dependency>
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi-ooxml</artifactId>
  <version>3.14</version>
</dependency>
入门案例
public void excel() {
        try {
            //1.创建一个工作簿
            Workbook workbook = new HSSFWorkbook();
            //2.创建 一个工作表
            Sheet sheet = workbook.createSheet("测试");

            // CellStyle cellStyle = workbook.createCellStyle();

            //3.创建一个6*6的单元格
            for (int i = 0; i < 6; i++) {
                Row row = sheet.createRow(i);
                // 设置单元格格式
                // row.setRowStyle(cellStyle);
                row.createCell(0).setCellValue("测试行" + i);
                row.createCell(1).setCellValue(i);
                row.createCell(2).setCellValue(i);
                row.createCell(3).setCellValue(i);
                row.createCell(4).setCellValue(i);
                row.createCell(5).setCellValue("测试数据");

            }

            /**
             * 合并单元格
             * new CellRangeAddress(0, 0, 1, 2) 里的四个参数分别代表
             * --firstRow–第一行的索引
             * --lastRow–最后一行的索引(含),必须等于或大于firstRow
             * --firstCol–第一列的索引
             * --lastCol–最后列的索引(包含),必须大于或等于firstCol
             */
            sheet.addMergedRegion(new CellRangeAddress(0, 0, 1, 2
            ));

            //生成一张表(IO流),03版本就是使用xls结尾
            FileOutputStream fos = null;
            // Path为定义的路径
            fos = new FileOutputStream(Path + "测试.xls");
            //输出
            workbook.write(fos);
            //关闭流
            fos.close();
            System.out.println("文件生成完毕");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }

运行后就会在对应的路径下找到生成的excel文件了。

读取excel内容

  		// 按照下标读取工作簿
            sheet = workbook.getSheetAt(0);
            // 遍历单元格
            for (Row row : sheet) {
                // 获取单元格
                for (Cell cell : row) {
                    // 获取单元格中的内容
                    String value = cell.getStringCellValue();
                    System.out.println(value);
                }
            }

这里需要注意下:在读取cell单元格字符串时,当单元格有些类型不是String时,会报一个java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell异常。

因此需要把它先转化为纯String类型,然后在获取就可以了。

           // 遍历单元格
            for (Row row : sheet) {
                // 获取单元格
                for (Cell cell : row) {
                    // 设置单元格格式
                    cell.setCellType(CellType.STRING);
                    // 获取单元格中的内容
                    String value = cell.getStringCellValue();
                    System.out.println(value);
                }
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值