excel导入导出组件设计

简介:

这是我设计的excel导入导出组件,使用Java 编写,通过xml文件的配置,来设置excel到java bean的映射。关键(配置)文件:ExcelModeMappingl.xml。

之前一直为excel的导入导出烦恼,每写一次都感觉是“重复造轮子”,代码很繁琐,可移植性特别差。终于下决心写一个可重用性很高的组件,专门解决“重复造轮子”的问题。

 

xml配置文件名称:ExcelModeMappingl.xml

内容(示例):

<?xml version="1.0" encoding="UTF-8" ?>

<models>

     <model id="deptModel" class="com.test.excel.jn.model.DeptModel"<!--[if !supportAnnotations]-->[huangwei1]<!--[endif]--> >

         <property name<!--[if !supportAnnotations]-->[huangwei2]<!--[endif]--> ="deptName" column="1" excelTitleName="部门名称" dataType="String" maxLength="15"  default=""/>

         <property name="deptCode" column="2" excelTitleName<!--[if !supportAnnotations]-->[huangwei3]<!--[endif]--> ="部门编号" dataType="String" maxLength="15"  default="abc"/>

         <property name="sendFileName" column="4" excelTitleName="发文简称"dataType="String" maxLength="15" isConvertable="true"  default<!--[if !supportAnnotations]-->[huangwei4]<!--[endif]--> ="C">

         <map>

              <entry excel_key="永久" bean_value="c"></entry>

              <entry excel_key="长期1" bean_value="send_1"></entry>

              <entry excel_key="长期2" bean_value="send_2"></entry>

              <entry excel_key="长期3" bean_value="send_3"></entry>

              <entry excel_key="长期4" bean_value="send_4"></entry>

              <entry excel_key="长期5" bean_value="send_5"></entry>

         </map>

         </property>

         <property name="sendDate" column="3" excelTitleName="时间" dataType="Date"format="yyyyMMdd HH:mm:ss" maxLength="15"  default="10"/>

     </model>

    

</models>

这个文件有两个作用,(1)用于有excel文件转化为beans;(2)用于把beans转化为excel

<!--[if !supportLists]-->(1)    <!--[endif]--> default只有在excel转为java beans才有效;在java beans转化为excel时无效。

excel中的单元格中无内容,则采用default指定的值;

<!--[if !supportLists]-->(2)     <!--[endif]-->column只有在从java bean导出excel时才有效,表示excel中列(表头)的顺序,取值范围为[1,2,3……]

<!--[if !supportLists]-->(3)    <!--[endif]-->dataTypeDate,则多出一个属性format,例如format=”yyyy-MM-dd”;导入导出excel时都有效

<!--[if !supportLists]-->(4)    <!--[endif]-->isConvertable的值为true,则有map节点,否则则不会读取xml 配置文件中的map节点;

<!--[if !supportLists]-->(5)    <!--[endif]-->map说明:excel_key 表示excel单元格中的值,而bean_value则表示java bean中对应属性的值。

<!--[if !supportLists]-->(6)    <!--[endif]-->dataType只允许有两种取值[Date, String];

<!--[if !supportLists]-->(7)    <!--[endif]-->此配置文件采用UTF-8编码;

 

xml配置文件 各标签的说明

标签名称

含义

示例

model

定义一个java beanexcel的映射(mapping

 

class

model的属性,必须的。指定java bean的类路径

例如com.kunlunsoft.model.Student

property

java bean中的成员变量

 

name

property标签的属性,指定java bean的成员变量名称

 

excelTitleName

excel文件中表头的名称,与name是一一映射的。

 

dataType

数据类型,分为String Date,目前就这两种,int,float统一归于String类型

 

format

如果类型是Date,则可以指定该属性,用于日期的格式化

format="yyyyMMddHH:mm:ss"

maxLength

预留的,目前没有使用

 

default

默认值。excel文件转化为java bean时,excel单元格为空,则设置java bean对应属性值为该默认值

 

isConvertable

是否需要转化。比如java bean中的值为[yes,no],而对应的excel中的值为[是,否],这就需要使用一个map来进行映射

<map><entry excel_key="" bean_value="yes"></entry>

                            <entry excel_key="" bean_value="no"></entry></map>

 

 

 

 

 

 

 

 

 

 

 

 

<!--[if !supportAnnotations]-->
<!--[endif]-->
<!--[if !supportAnnotations]-->
<!--[endif]--><!--[if !supportAnnotations]--> <!--[endif]-->

 <!--[if !supportAnnotations]-->[huangwei1]<!--[endif]-->这是实体类

<!--[if !supportAnnotations]-->
<!--[endif]-->
<!--[if !supportAnnotations]-->
<!--[endif]--><!--[if !supportAnnotations]--> <!--[endif]-->

 <!--[if !supportAnnotations]-->[huangwei2]<!--[endif]-->实体类中的属性名称

<!--[if !supportAnnotations]-->
<!--[endif]-->
<!--[if !supportAnnotations]-->
<!--[endif]--><!--[if !supportAnnotations]--> <!--[endif]-->

 <!--[if !supportAnnotations]-->[huangwei3]<!--[endif]-->excel文件中的表头名称

<!--[if !supportAnnotations]-->
<!--[endif]-->
<!--[if !supportAnnotations]-->
<!--[endif]--><!--[if !supportAnnotations]--> <!--[endif]-->

 <!--[if !supportAnnotations]-->[huangwei4]<!--[endif]-->excel中的单元格为空,则转化为java bean时,采用默认值

 

详见附件。

<!--[if !supportAnnotations]-->
<!--[endif]-->
相关文章
|
8月前
|
SQL 数据库连接 数据库
【SQL Server】2. 将数据导入导出到Excel表格当中
【SQL Server】2. 将数据导入导出到Excel表格当中
174 0
|
7月前
|
Java 数据库 数据安全/隐私保护
Java操作Excel文件导入导出【内含有 jxl.jar 】
Java操作Excel文件导入导出【内含有 jxl.jar 】
96 0
|
6月前
|
Web App开发 前端开发 安全
2024年新一代WebOffice内嵌网页组件,Web网页在线编辑Word/Excel/PPT
WebOffice控件面临兼容性、用户体验和维护难题。随着浏览器更新,依赖插件的技术不再适用,如Chrome不再支持NPAPI和PPAPI。产品普遍不支持多版本Office并存,定制能力弱,升级复杂。猿大师办公助手提供了解决方案,它兼容多种浏览器,包括最新版和国产浏览器,不依赖插件,支持文档对比,具有丰富的功能和接口,兼容多种Office版本,允许源码级定制,提供终身技术支持,并实现静默在线升级。适用于多种行业和操作系统。
358 14
|
6月前
|
存储 对象存储 Python
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
|
5月前
|
开发框架 算法 .NET
C#使用MiniExcel导入导出数据到Excel/CSV文件
C#使用MiniExcel导入导出数据到Excel/CSV文件
120 0
|
7月前
|
Java easyexcel
java开发excel导入导出工具类基于EasyExcel
java开发excel导入导出工具类基于EasyExcel
336 1
|
7月前
|
Java API Spring
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
597 1
|
7月前
|
easyexcel Java API
SpringBoot集成EasyExcel 3.x:高效实现Excel数据的优雅导入与导出
SpringBoot集成EasyExcel 3.x:高效实现Excel数据的优雅导入与导出
1242 1
|
7月前
|
前端开发 Java 开发工具
如何在Spring Boot框架下实现高效的Excel服务端导入导出?
ArtifactId:是项目的唯一标识符,在实际开发中一般对应项目的名称,就是项目根目录的名称。 Group Id,Artfact Id是保证项目唯一性的标识,一般来说如果项目打包上传至maven这样的包管理仓库中。在搜索你的项目时,Group Id,Artfact Id是必要的条件。 Version:版本号,默认0.0.1-SNAPSHOT。SNAPSHOT代表不稳定的版本,与之相对的有RELEASE。 Project type:工程的类型,maven工程还是gradle工程。 Language:语言(Java,Kotlin,Groovy)。
|
7月前
|
easyexcel Java API
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
Apache POI与easyExcel:Excel文件导入导出的技术深度分析