Java中excel与对象的互相转换的通用工具类编写与使用(基于apache-poi-ooxml)

摘要:
通用excel和对象之间相互转换的工具类前言:最近,开发需要excel批量导入或导出功能。我以前使用poi ooxml开发过一个导入的工具类,所以我只是借此机会改进了工具类的功能。有了以上基本知识,poi-oxml很容易学习。它还根据这种结构划分类。HSSFWorkbook表示工作簿HSSFSheet表示表HSSFRow表示行HSSFCell表示单元格该工具类基于上述知识点和Apache Commons实现。
通用excel与对象相互转换的工具类

前言:最近开发需要一个Excel批量导入或者导出的功能,之前用过poi-ooxml开发过一个导入的工具类,正好蹭着这次机会,把工具类的功能进行完善。

使用说明:

(1)对象换成Excel,ExcelUtil#pojo2Excel();  最后生成一个输出流,可以用作文件生成或web中的上传下载

方法参数:

* @param pojoList      对象数组

* @param out             输出流

* @param alias            (可选)默认生成表的列名为类的属性名,可以通过此属性指定,格式要求LinkedHashMap<”属性名”,”列名”>

* @param headLine     (可选)默认为类名,可通过此属性指定表标题

使用示例:

@Test
    /**
     * 对象转换成excel文件测试
     * @throws Exception
     */
    public void pojo2Excel1() throws Exception {
        //将生成的excel转换成文件,还可以用作文件下载
        File file = new File("C:\Users\chenkeyu\Work\1.xls");
        FileOutputStream fos = new FileOutputStream(file);
        
        //对象集合
        List<User> pojoList=new ArrayList<>();
        for(int i=0;i<5;i++) {
            User user = new User();
            user.setName("老李");
            user.setAge(50);
            pojoList.add(user);
        }
        //设置属性别名(列名)
        LinkedHashMap<String, String> alias = new LinkedHashMap<>();
        alias.put("name", "姓名");
        alias.put("age","年龄");
        //标题
        String headLine="用户表";
        
        ExcelUtil.pojo2Excel(pojoList, fos, alias, headLine);
    }

(2)Excel转换成指定类型的对象数组  List<T>  ExcelUtil#pojo2Excel();

参数解析:

* @param Class claz     要转换的类型

* @param LinkedHashMap alias     (可选)列所对应的属性名,默认按属性名解析,格式要求:LinkedHashMap<"列名","类属性名">

测试:

@Test 
    /**
     * excel文件转换成对象测试
     * @throws Exception
     */
    public void excel2Pojo() throws Exception {
        //指定输入文件
        FileInputStream fis = new FileInputStream("C:\Users\chenkeyu\Work\1.xls");
        //指定每列对应的类属性
        LinkedHashMap<String, String> alias = new LinkedHashMap<>();
        alias.put("姓名","name");
        alias.put("年龄","age");
        //转换成指定类型的对象数组
        List<User> pojoList = ExcelUtil.excel2Pojo(fis, User.class, alias);
        logger.info(pojoList.toString());
    }

代码解析:

Maven依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
</dependency>
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.3</version>
</dependency>

本工具类是基于poi-ooxml的,要介绍poi就要先介绍一下Excel的结构:

       众所周知,一个最基本的Excel文件就是一个工作簿,一个工作簿包括多个表,一个表又有多行多列,从而划分成多个单元格。

 Java中excel与对象的互相转换的通用工具类编写与使用(基于apache-poi-ooxml)第1张

       知道了上面的基本知识,poi-ooxml就很好学了,它也是根据这种结构来划分类的。

       HSSFWorkbook代表一个工作簿

       HSSFSheet代表一个表

       HSSFRow代表一行

       HSSFCell代表一个单元格

本工具类就是基于上面的知识点再加上Apache-Commons实现的。

源码地址:https://github.com/cky-thinker/excelUtilDemo

以上代码如有问题,欢迎大佬们下方留言

免责声明:文章转载自《Java中excel与对象的互相转换的通用工具类编写与使用(基于apache-poi-ooxml)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇第六篇 kubernetes helm部署harbor镜像仓库ActiveMQ 认证(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

VS2005[C#] 操作 Excel 全攻略

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using Microsoft.Offic...

ROS学习之参数

ROS学习之参数         除 了 前 面 介 绍 过 的 消 息 传 递 , ROS 还 提 供 另 一 种 参 数( parameters )机制用于获取节点的信息。其主要思想是使用集中参数服务器( parameter server )维护一个变量集的值,包括整数、浮点数、字符串以及其他数据类型,每一个变量用一个较短的字符串标识  。由于允许节点...

POI导出excel模板三种方式

POI简介 POI是Apache软件基金会用java编写的免费开源的跨平台的Java API,提供API给java程序对Microsoft Office格式档案读和写的功能,一般用来操作Excel文件。用javaPOI导出Excel时,需要考虑Excel版本和数据量的问题。 JavaPOI导出Excel有三种形式: (1) 第一种HSSFWorkbook...

NativeExcel 破解笔记

太乱,笔记而已,待整理。 NativeExcel 是一款Delphi下生成MS Excel文件的工具。它不需要用户安装Microsoft Office,而是直接生成excel文件,开发人员可以用NativeExcel代替传统的基于OLE的Excel 组件。 下载地址:修改的是NativeExcel2.http://nika-soft.com/编译生成文件后...

.Net操作Excel —— NPOI

近期的两个项目都有关于NPOI的功能,经过了一点学习,自己也摸索了一会,感觉还有点意思。现在将部分代码分享一下。一部分是C#代码,一部分是VB.Net的,懒得修改了,基本上都是从项目文件中copy出来的。如果错漏,请指教。 概述: 1、整个Excel表格:WorkBook(工作薄),包含的叫页(工作表):Sheet;行:Row;单元格Cell。 2、NPO...

excel多组数据散点图生成

  在研究数据分布时,散点图是一类比较常用的方法,通过三点图可以很好的显示数据的分布位置。一组数据生成散点图,利用excel是很容易生成的;但是,多组数据生成散点图,不同组数据用不同颜色表示,那该怎么生成呢?   在我经过半个多小时的学习后,我终于学会了如何用excel生成多组数据的散点图。下面是方法:   1、选择三点图的横坐标数据,纵坐标数据。如图,成...