SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」

摘自:https://www.cnblogs.com/bingyang-py/p/12407675.html

有天上飞的概念,就要有落地的实现

  • 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍
  • 先赞后看,养成习惯

SpringBoot 图文教程系列文章目录

  1. SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」
  2. SpringBoot图文教程2—日志的使用「logback」「log4j」
  3. SpringBoot图文教程3—「‘初恋’情结」集成Jsp
  4. SpringBoot图文教程4—SpringBoot 实现文件上传下载
  5. SpringBoot图文教程5—SpringBoot 中使用Aop
  6. SpringBoot图文教程6—SpringBoot中过滤器的使用
  7. SpringBoot图文教程7—SpringBoot拦截器的使用姿势这都有
  8. SpringBoot图文教程8 — SpringBoot集成MBG「代码生成器」

前言

Excel文件的导入导出功能,在项目中可以说是一个极其常见的功能了,使用到这技术的业务场景也非常多,例如:客户信息的导入导出,运营数据的导入导出,订单数据的导入导出等等。

那么在 SpringBoot 中如何使用 Poi 呢?从本文开始将会说三种使用 Poi 的姿势:Apache Poi,EasyPoi,阿里开源的EasyExcel。

话不多说,马上开始。

集成 Poi

什么是 Poi

Apache Poi 是 Apache 的一个开源项目,用Java代码通过 poi 技术可以实现 读取 和 生成 Excel 文档。

关于 Poi 的简介非常的少,接下来我们简单说一些和Excel相关的常识

  1. 通过 office Excel软件或者 wps 常用的Excel格式有两种:xls 和 xlsx
  2. 上图中的两个文件都是Excel文件,在一个Excel文件中包含若干张表
  3. 一张表中可以分为很多行 row ,每行又分为很多单元格 cell

Poi 对 Excel 抽象出来的对象

刚才简单的说过了Excel文件相关的情况,但是那是在电脑中使用Excel需要用到的东西,如果要通过 SpringBoot 导入导入 Excel 文件,就要通过类和方法来进行。

于是在 Poi 中对以上提到的所有的名词都做了一定的封装。对应关系如下:

Excel中的概念 Poi对应的对象
Excel 文件 HSSFWorkbook (xls)XSSFWorkbook(xlsx)
Excel 的工作表 HSSFSheet
Excel 的行 HSSFRow
Excel 中的单元格 HSSFCell
Excel 字体 HSSFFont
Excel 单元格样式 HSSFCellStyle
Excel 颜色 HSSFColor
合并单元格 CellRangeAddress

Poi 的基本使用

要导出的实体类 如下:

1. 在项目中导入依赖

 <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>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>3.14</version>
        </dependency>

2. 在测试类中写导出的代码如下:


    /**
     * 导出数据
     */
    @Test
    public void test2() throws IOException {
//        0.准备数据
        User user = new User();
        user.setUserId(1);
        user.setUserName("hhhh");
        user.setUserSex("男");

        String[] titles = {"编号","名字","性别"};

        /**
         * 先写入 标题栏数据
         */
//        1.创建文件对象   创建HSSFWorkbook只能够写出为xls格式的Excel
//        要写出 xlsx 需要创建为 XSSFWorkbook 两种Api基本使用方式一样
        HSSFWorkbook workbook = new HSSFWorkbook();

//        2.创建表对象
        HSSFSheet sheet = workbook.createSheet("users");

//        3.创建标题栏(第一行)  参数为行下标  行下标从0开始
        HSSFRow titleRow = sheet.createRow(0);

//        4.在标题栏中写入数据
        for (int i = 0; i < titles.length; i++) {
//            创建单元格
            HSSFCell cell = titleRow.createCell(i);
            cell.setCellValue(titles[i]);
        }
        /**
         * 写入用户数据
         */
//       5 创建行 如果是用户数据的集合 需要遍历
         HSSFRow row = sheet.createRow(1);

//       6 将用户数据写入到行中
        row.createCell(0).setCellValue(user.getUserId());
        row.createCell(1).setCellValue(user.getUserName());
        row.createCell(2).setCellValue(user.getUserSex());

//        文件保存到本地 参数为要写出的位置
        workbook.write(new FileOutputStream("/Users/k/Desktop/hhh.xls"));

    }

生成的Excel文件如下

3. Excel导入

  /**
     * 文件导入  实际上就是文件导出反向操作
     */
    @Test
    public void test3() throws Exception {
//        1.通过流读取Excel文件
        FileInputStream inputStream = new FileInputStream("/Users/k/Desktop/hhh.xls");
//        2.通过poi解析流 HSSFWorkbook 处理流得到的对象中 就封装了Excel文件所有的数据
        HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
//        3.从文件中获取表对象  getSheetAt通过下标获取
        HSSFSheet sheet = workbook.getSheetAt(0);
//        4.从表中获取到行数据  从第二行开始 到 最后一行  getLastRowNum() 获取最后一行的下标
        int lastRowNum = sheet.getLastRowNum();

        for (int i = 1; i <= lastRowNum; i++) {
//            通过下标获取行
            HSSFRow row = sheet.getRow(i);
//            从行中获取数据

            /**
             * getNumericCellValue() 获取数字
             * getStringCellValue 获取String
             */
            double id = row.getCell(0).getNumericCellValue();
            String name = row.getCell(1).getStringCellValue();
            String sex = row.getCell(2).getStringCellValue();

//            封装到对象中
            User user = new User();
            user.setUserId((int) id);
            user.setUserName(name);
            user.setUserSex(sex);

//            将对象添加数据库
            System.out.println(user);
        }
    }

总结

Tips:本文只讲解了 Poi 最基本的使用方式 如果需要其他更加全面的使用方式

可以关注后续文章 Easypoi 和 EasyExcel 以及 Poi中文 API 文档 「40种操作 Excel文件的姿势」

恭喜你完成了本章的学习,为你鼓掌!如果本文对你有帮助,请帮忙点赞,评论,转发,这对作者很重要,谢谢。

让我们再次回顾本文的学习目标

  • 掌握SpringBoot中Poi的使用

要掌握SpringBoot更多的用法,请持续关注本系列教程。

求关注,求点赞,求转发

欢迎关注本人公众号:鹿老师的Java笔记,将在长期更新Java技术图文教程和视频教程,Java学习经验,Java面试经验以及Java实战开发经验。

原文地址:https://www.cnblogs.com/xichji/p/12409113.html

时间: 2024-10-31 00:38:22

SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」的相关文章

SpringBoot图文教程4—SpringBoot 实现文件上传下载

有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 大哥大姐新年好,点赞转发不要少 SpringBoot 图文系列教程技术大纲 鹿老师的Java笔记 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」 SpringBoot图文教程2—日志的使用「logback」「log4j」 Sp

SpringBoot图文教程「概念+案例 思维导图」「基础篇上」

有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 每个知识点配套自测面试题,学完技术自我测试 本文初学向,所以希望文中所有的代码案例都能敲一遍 大哥大姐新年好,点赞转发不要少 **文本已收录至GitHub开源仓库 Lu_JavaNodes 码云仓库地址Lu_JavaNodes ,**包含教程涉及所有思维导图,案例代码和后续讲解视频,欢迎Star增砖添瓦. 前言 庚子鼠年,封村儿,在试过了睡觉,打麻将,做凉皮,做蛋糕之后,我不由的陷入了对人生和社会的

&#128293;SpringBoot图文教程2—日志的使用「logback」「log4j」

有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 大哥大姐新年好,点赞转发不要少 SpringBoot 图文系列教程技术大纲 简单说明,教程分为基础篇,进阶篇和高级篇 基础篇,本章力求简单快速的掌握基本的SpringBoot使用,并应用到项目中 进阶篇,学会SpringBoot更多的常见用法以及底层原理 高级篇,着重介绍SpringBoo

SpringBoot图文教程3—「‘初恋’情结」集成Jsp

有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 大哥大姐新年好,点赞转发不要少 SpringBoot 图文系列教程技术大纲 鹿老师的Java笔记 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」 SpringBoot图文教程2—日志的使用「logback」「log4j」 前言

Java利用POI导入导出Excel中的数据

     首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地址http://poi.apache.org/download.html,有兴趣的朋友也可以去看看其中的API.      下面分享一下在对POI进行基本操作时觉得需要注意的两点:       1.POI中针对xlsx/xls是需要create different Workbook instance

导入导出Excel的Java工具类ExcelUtil

在编写ExcelUtil之前,在网上查了一些资料.java中用来处理Excel的第三方开源项目主要就是POI和JXL.poi功能强大,但是比较耗资源,对于大数据量的导入导出性能不是太好:jxl功能简单,但是性能比较好. 由于本项目的导入导出更多关注性能问题,而且jxl提供的功能基本也都够用了,于是选择了jxl作为支持. 实战 导出就是将List转化为Excel(listToExcel) 导入就是将Excel转化为List(excelToList) 导入导出中会出现各种各样的问题,比如:数据源为空

C#用Infragistics 导入导出Excel(一)

最近项目中有数据的导入导出Excel的需求,这里做简单整理. 公司用的是Infragistics的产品,付费,不需要本地安装Office. 有需要的朋友可以下载 Infragistics.2013.2.2098,提取密码:5u17 本文完整代码下载 Demo.Excel.zip 当然,我知道还有其他开源的类库来操作Excel,希望有资源的博友可以一起共享一下. Infragistics安装使用 直接安装Infragistics_WinForms_20132.msi后再项目Reference中引用

jxl导入/导出excel

转自:http://www.cnblogs.com/linjiqin/p/3540266.html 1.jxl导入/导出excel案例,黏贴即可运行 package junit.test; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import jxl.Cell; import jxl.Sheet; import jxl.Workbook;

页面导入导出EXCEL

引用 using Microsoft.Office.Interop.Excel;using System.Reflection;//反射命名空间using System.IO; protected void Button1_Click(object sender, EventArgs e) { //项目引入Microsoft.office.Excel组件 //导出二大部分 //第一部分,生成EXCEL文件 //对象1 应用程序对象 Microsoft.Office.Interop.Excel.A