POI导出读取Excel表格讲解

这篇博客介绍了Apache POI和EasyExcel在Java中处理Excel文件的用途,包括导出和读取操作。内容涵盖POI的创建工作簿、大文件写入策略以及EasyExcel的内存效率优势。还详细讲解了读取不同类型数据的难点和解决办法。
摘要由CSDN通过智能技术生成


一、POI是什么?

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

操作Excel目前表流行的就是Apache POI和阿里巴巴的easyExcel

Apache POI介绍

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

EasyExcel介绍

EasyExcel是阿里巴巴开源的一个excel,以使用简单,节省内存著称。 EasyExcel能大大减少占用内存的原因在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。

二、常用信息

1.将用户信息导出为excel表格(导出数据…)

2.将Excel表中的信息录入到网站数据库(习题上传…)

开发中经常设计到excel的处理,如导出导入Excel到数据库中

三、导出Excel表具体操作

1.POI-Excel写

1.创建项目

建立一个空项目POItest.

在这里插入图片描述

2.导入pom依赖

代码如下(示例):

<!--导入依赖-->
    <dependencies>
        <!--java万物皆对象  -->
        <!--xls(03)-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
        </dependency>
        <!--xlsx(07)-->
        <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.1</version>
        </dependency>

        <!--test-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!---->
    </dependencies>

3.在com.yang包下建立一个ExcelWriteTest测试类

//写  测试类
public class ExcelWriteTest {
   
     String PATH="E:\\IDEA Workspace\\POItest\\";
}

4.生成一个工作薄

03版本:

 @Test
    public void testWrite03() throws Exception {
   
       //1.创造一个工作簿
       Workbook workbook=new HSSFWorkbook();//03版本HSSF
       //2.创建一个工作表
       Sheet sheet=workbook.createSheet("Java学习人数统计表");
       //3.创建一个行
       Row row1=sheet.createRow(0);//零代表第一行
       //4.创建一个单元格
       Cell cell11=row1.createCell(0);//表格中第一行的第一个数据
       cell11.setCellValue("今日新增学习人数");
       Cell cell12=row1.createCell(0);//表格中第一行的第二个数据
       cell12.setCellValue("666");
       //第二行(2.1)
       Row row2=sheet.createRow(1);
       Cell cell21=row2.createCell(0);//表格中第二行的第一个数据
       cell21.setCellValue("统计时间");
       //(2.2)
       Cell cell22=row1.createCell(1);//表格中第一行的第一个数据
       String time= new DateTime().toString("yyyy-MM-dd HH:mm:ss");
       cell22.setCellValue(time);

       //生成一张表(IO流)   03版本就是使用xls结尾!  07版本是使用xlsx!
       FileOutputStream fileOutputStream = new FileOutputStream(PATH + "Java学习人数统计表03.xls")
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值