快速上手POI

poi对excel的工作薄等封装成了下列四个对象

工作薄:XSSFWorkBook

工作表:XSSFSheet

行:Row

单元格:Cell

创建工作薄对象,往excel文件中传输数据

 public static void main(String[] args) {
        File file = new File("D://poi.xlsx");
        try {
            FileOutputStream fos = new FileOutputStream(file);
            //创建工作薄
            XSSFWorkbook workbook = new XSSFWorkbook();
            //创建单元格
            XSSFSheet sheet = workbook.createSheet();
            //创建单元行
            XSSFRow row = sheet.createRow(0);
            //创建具体的单元格
            XSSFCell cell = row.createCell(0);
            cell.setCellValue("我剑也未尝不利");
            workbook.write(fos);
            workbook.close();
            fos.close();
        }  catch (IOException e) {
            throw new RuntimeException(e);
        }



    }

创建工作薄对象,从excel文件中读取数据

public static void main(String[] args) {
        File file = new File("D://b.xlsx");
        try (FileInputStream fileInputStream = new FileInputStream(file);){
            //创建工作薄对象
            XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
            //从工作薄对象中获取调用getSheet()方法,传入要获取的表名返回表对象
            XSSFSheet sheet = workbook.getSheet("礼品表");
            //双层循环遍历单元格
            for (Row row:sheet){
                for (Cell cell:row){
                    System.out.println(cell);
                }
            }

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

数据批量导入!

HSSFWorkbook、XSSFWorkbook、SXSSFWorkbook的区别:

     ◎HSSFWorkbook一般用于Excel2003版及更早版本(扩展名为.xls)的导出。

     ◎XSSFWorkbook一般用于Excel2007版(扩展名为.xlsx)的导出。

     ◎SXSSFWorkbook一般用于大数据量的导出。

注:HSSFWorkbook和XSSFWorkbook的Excel Sheet导出条数上限(<=2003版)是65535行、256列,(>=2007版)是1048576行,16384列,如果数据量超过了此上限,那么可以使用SXSSFWorkbook来导出。实际上上万条数据,
       甚至上千条数据就可以考虑使用SXSSFWorkbook了。

SXSSFWorkbook:可以通过构造参数设置每次在内存中保持的行数,当达到这个值的时候,就会把这个值的数据flush()到磁盘上,避免了内存不够的情况。

例子:

向excel中写入了10000条数据

public static void main(String[] args) {
        try(BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("D://uuid.xlsx")));
            //HSSFWorkbook和XSSFWorkbook的Excel Sheet导出条数上限(<=2003版)是65535行、256列,(>=2007版)是
            //       1048576行,16384列,如果数据量超过了此上限,那么可以使用SXSSFWorkbook来导出。实际上上万条数据,
            //       甚至上千条数据就可以考虑使用SXSSFWorkbook了。
            SXSSFWorkbook workbook = new SXSSFWorkbook(100);
        ) {
            SXSSFSheet sheet = workbook.createSheet();

            //创建单元格格式
            CellStyle cellStyle = workbook.createCellStyle();
            DataFormat dataFormat = workbook.createDataFormat();
            short format = dataFormat.getFormat("YYYY年-MM月-dd日");
            cellStyle.setDataFormat(format);
            for (int j=0;j<10000;j++){
                SXSSFRow row = sheet.createRow(j);
                //设置表头
                if(j==0){
                    SXSSFCell cellHeadOne = row.createCell(0);
                    cellHeadOne.setCellValue("序号");
                    SXSSFCell cellHeadTwo = row.createCell(1);
                    cellHeadTwo.setCellValue("优惠码");
                    SXSSFCell cellHeadThree = row.createCell(2);
                    cellHeadThree.setCellValue("校验码");
                    SXSSFCell cellHeadFour = row.createCell(3);
                    cellHeadFour.setCellValue("创建日期");
                }else {
                    SXSSFCell cell = row.createCell(0);
                    cell.setCellValue(j);
                    SXSSFCell cell1 = row.createCell(1);
                    cell1.setCellValue(UUID.randomUUID().toString().substring(0,8));
                    SXSSFCell cell2 = row.createCell(2);
                    cell2.setCellValue(UUID.randomUUID().toString().substring(0,4));
                    SXSSFCell cell3 = row.createCell(3);
                    cell3.setCellValue(new Date());
                    cell3.setCellStyle(cellStyle);
                }
            }
            workbook.write(bos);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值