POI&EasyExcel_学习笔记

整个excle是一个工作簿,里面的sheet为一个工作表,每个sheet里面有行,行里面每个小格子叫做单元格;
03版和07版的后缀不同,xls和xlsx;
对象: HSSF 03的excle; XSSF 07版的excle;
HWPF: word
HSLF :ppt
HDGF: Visio

1.数据的导出(POI)

第一步: 导入依赖

    <dependencies>
        <!--xls03-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
        </dependency>
        <!--xls07-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>
        <!--日期格式化工具-->
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.10.2</version>
        </dependency>
        <!--test-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

第二部:

public class ExcelWriteTest {
    String PATH = "D:\\IdeaProjects_code\\EasyExcle";
    @Test
    public void testWriter03() throws IOException {
        //1.创建一个工作簿
        HSSFWorkbook workbook = new HSSFWorkbook();
        //2.创建一个工作表
        HSSFSheet sheet = workbook.createSheet("统计表");
        //3.创建一个行
        HSSFRow row1 = sheet.createRow(0);
        //4.创建一个单元格
        HSSFCell cell11 = row1.createCell(0);
        cell11.setCellValue("增加的观众");
        HSSFCell cell12 = row1.createCell(1);
        cell12.setCellValue("666");

        //创建第二行
        HSSFRow row2 = sheet.createRow(1);
        HSSFCell cell21 = row2.createCell(0);
        cell21.setCellValue("统计时间");
        HSSFCell cell22 = row2.createCell(1);
        String time = new DateTime().toString("yyyy-MM-dd HH:mm:ss");
        cell22.setCellValue(time);

        //生成一张表(IO流) 03版以xls结尾
        FileOutputStream fileOutputStream = new FileOutputStream(PATH + "03.xls");
        //输出
        workbook.write(fileOutputStream);
        //关闭流
        fileOutputStream.close();
        System.out.println("统计完");
    }
}

03版和07版的区别在于创建工作簿是的对象不同,03是HSSFWorkbook,07是XSSFWorkbook;后缀不同;

2.数据的批量导入(POI)

2.1 大文件写HSSF

缺点: 最多只能处理65535行,否则会抛异常;
优点: 过重中写入缓存,不操作磁盘,最后一次性写入磁盘,速度快;

2.2 大文件写XSSF

缺点: 写数据是速度非常慢,非常消耗内存,也会发生内存溢出,如数据100万条
优点: 可以写较大的数据,如20万条

2.3 大文件写SXSSF

优点: 可以写非常大的数据量,如100万条甚至更多条,写数据速度快,占用更少的内存;
注意:
过程中会产生临时文件,需要清理临时文件
默认有100条件记录被保存在内存中,如果超过这个数量,则最前面的数据被写入临时文件;
如果想自定义内存中数据的数量,可以使用new SXSSFWorkbook(数量);
在这里插入图片描述

3.POI-Excle读

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值