java基于xml配置的通用excel单表数据导入组件(一、实际应用过程)

摘要:
˃导入帐户详细信息deletefromt_account_detail_inmportwherecreate_id='${user id}'event-namevarchar255false分类账type_idvarchar100truetruecom。天才jxibs。管理importrexcel。传输˂!

主要应用技术:poi + betwixt + reflect

一、实际应用过程

1.创建与目标表结构一样,表名为‘{目标表名}_import’的临时表;

2.创建用于存储导入问题数据的表:t_import_error (只需创建一张);

java基于xml配置的通用excel单表数据导入组件(一、实际应用过程)第1张java基于xml配置的通用excel单表数据导入组件(一、实际应用过程)第2张
Name Code Data Type Length Precision Mandatory Primary Identifier Displayed Domain
问题id op_id VA36 36  TRUE TRUE TRUE <None>
问题表名 op_name VA50 50  TRUE FALSE TRUE <None>
所在行号 row_no I   TRUE FALSE TRUE <None>
问题说明 memo TXT   TRUE FALSE TRUE <None>
创建人id create_id VA36 36  TRUE FALSE TRUE <None>
创建人名 create_name VA50 50  TRUE FALSE TRUE <None>
创建时间 create_time VA17 17  TRUE FALSE TRUE <None>
View Code

3.创建WEB-INF/excel/{目标表名}_import.xml 配置文件

java基于xml配置的通用excel单表数据导入组件(一、实际应用过程)第3张java基于xml配置的通用excel单表数据导入组件(一、实际应用过程)第4张
<?xml version="1.0" encoding="GBK"?>
<importExcel>
 <name>台帐明细导入</name>
 <!--initSQL 对excel数据进行库表操作之前执行的初始化语句,多条语句用";"分隔  , ${userId} 标识当前登录用户id, 本语句为清除上次导入发现的问题数据-->
 <initSQL>delete from t_import_error where create_id='${userId}'</initSQL>
 <!--beforeSaveSQL  excel数据由_import临时表转入正式表之前执行的语句,多条语句用";"分隔,${userId} 标识当前登录用户id,可执行删除重复数据等-->
 <beforeSaveSQL>delete from t_account_detail</beforeSaveSQL>
 <!--afterSaveSQL  excel数据由_import临时表转入正式表之后执行的语句,多条语句用";"分隔,${userId} 标识当前登录用户id-->
 <afterSaveSQL>delete from t_account_detail_import where create_id='${userId}'</afterSaveSQL>
 <!-- excelColumn  excel显式列名定义  -->
 <excelColumn>  
   <entry>  
     <!-- key excel列名  -->
  <key>事项名称</key>  
  <value>  
    <!--column 数据库字段名-->
    <column>op_name</column>  
    <!--dataType 数据类型 目前支持 varchar、int、float 三种类型-->
    <dataType>varchar</dataType>  
    <!--length 数据库字段长度, 0表示不限制-->
    <length>255</length>  
    <!--required 是否必填 true、false -->
    <required>true</required>
    <!--transfer 是否进行数据内容转换 true(需配置<className>、<method>、<param>节点)、false -->
    <transfer>false</transfer>
  </value>  
   </entry>
   <entry>  
  <key>台帐分类</key>  
  <value>  
    <column>type_id</column>  
    <dataType>varchar</dataType>  
    <length>100</length>  
    <required>true</required>
    <transfer>true</transfer>
    <!--className 负责数据转换的类-->
    <className>com.egeniuss.jxibs.manage.importexcel.Transfer</className>
    <!--method 负责数据转换的方法名, 如果要设置字段默认值统一使用 getConst方法并由param设置默认值-->
    <method>getAccoutTypeIdByName</method>
    <!--param 负责数据转换的方法对应的参数,
          多个参数用","分隔  如<param>${self},varchar:nodeId,int:3,float:15.2</param>,${self}表示读取自身excel表格内容-->
    <param>${self}</param>
  </value>
   </entry>
   <entry>  
  <key>开始日期</key>  
  <value>  
    <column>begin_date</column>  
    <dataType>date</dataType>  
    <length>8</length>  
    <required>true</required>
    <transfer>true</transfer>
    <className>com.egeniuss.jxibs.manage.importexcel.Transfer</className>
    <method>filterDate</method>
    <param>${self}</param>
  </value>
   </entry>
   <entry>
  <key>结束日期</key>  
  <value>  
    <column>end_date</column>  
    <dataType>date</dataType>  
    <length>8</length>  
    <required>true</required>
    <transfer>true</transfer>
    <className>com.egeniuss.jxibs.manage.importexcel.Transfer</className>
    <method>filterDate</method>
    <param>${self}</param>
  </value>
   </entry>
   <entry>
  <key>数据值</key>  
  <value>  
    <column>detail_value</column>  
    <dataType>float</dataType>  
    <length>15</length>  
    <required>true</required>
    <transfer>false</transfer>
  </value>
   </entry>
   <entry>
  <key>描述</key>  
  <value>  
    <column>describe</column>  
    <dataType>varchar</dataType> 
    <length>0</length>  
    <required>false</required>
    <transfer>false</transfer>
  </value>
   </entry>
 </excelColumn>
    <!-- systemColumn  系统隐式列名定义  -->
 <systemColumn>
   <entry>
  <key>台帐id</key>  
  <value>  
    <column>op_id</column>  
    <dataType>varchar</dataType>  
    <length>36</length>  
    <required>true</required>
    <transfer>true</transfer>
    <className>com.egeniuss.jxibs.manage.importexcel.Transfer</className>
    <method>getUUID</method>
    <param></param>
  </value>
   </entry>
   <entry>
  <key>创建人id</key>  
  <value>  
    <column>create_id</column>  
    <dataType>varchar</dataType>  
    <length>36</length>  
    <required>true</required>
    <transfer>true</transfer>
    <className>com.egeniuss.jxibs.manage.importexcel.Transfer</className>
    <method>getUserId</method>
    <param></param>
  </value>
   </entry>
   <entry>
  <key>创建人名</key>  
  <value>  
    <column>create_name</column>  
    <dataType>varchar</dataType>  
    <length>50</length>  
    <required>true</required>
    <transfer>true</transfer>
    <className>com.egeniuss.jxibs.manage.importexcel.Transfer</className>
    <method>getUserName</method>
    <param></param>
  </value>
   </entry>
   <entry>
  <key>创建时间</key>  
  <value>  
    <column>create_time</column>  
    <dataType>varchar</dataType>  
    <length>17</length>  
    <required>true</required>
    <transfer>true</transfer>
    <className>com.egeniuss.jxibs.manage.importexcel.Transfer</className>
    <method>getNowInput</method>
    <param></param>
  </value>
   </entry>
   <entry>
  <key>修改人id</key>  
  <value>  
    <column>modify_id</column>  
    <dataType>varchar</dataType>  
    <length>36</length>  
    <required>false</required>
    <transfer>true</transfer>
    <className>com.egeniuss.jxibs.manage.importexcel.Transfer</className>
    <method>getConst</method>
    <param>varchar:admin</param>
  </value>
   </entry>
 </systemColumn>
</importExcel>
View Code

4.页面传参即可使用

<input type="hidden" name="tableTarget" value="t_account_detail"/>

<input type="file" name="excel"/>

免责声明:文章转载自《java基于xml配置的通用excel单表数据导入组件(一、实际应用过程)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇微信网页开发,如何在H5页面中设置分享的标题,内容以及缩略图pycha安装插件下篇

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

相关文章

hive 之 将excel数据导入hive中 : excel 转 txt

一、需求: 1、客户每月上传固定格式的excel文件到指定目录。每月上传的文件名只有结尾月份不同,如: 10月文件名:  zhongdiangedan202010.xlsx  , 11月文件名: zhongdiangedan202011.xlsx  2、将上传的excel文件导入hive中,在做进一步数据分析。 二、思路:   1、通过python的pan...

Python数据分析:pandas玩转Excel (二)

1 对Excel文件的操作 方法一: 使用xlrd库或者xlwt库进行对excel表格的操作读与写; 方法二: pandas库同样支持excel的读写操作;且更加简便。 2 pd.read_excel( )的参数 读Excel文件 df=pd.read_excel(io, sheet_name=0, # 工作表名称...

Excel简单编程学习笔记

多少年来,我都一直认为Excel就是一个表格工具,用来记一记数据内容即可,直到后来开发同事用Excel做出了很花哨的动态报告,可以从数据库提取数据,自动填充排版数据,可以自动计算绘图,自动套用模版格式,自动生成pdf…  太可怕了。 我目前无法达到这样的水平,只能从最基本的数据提取开始。 一. 开启编程模式 1. Excel版本建议在2010以上,目前我使...

C# 从Excel表中导入数据函数到DataSet

/// <summary>         /// 读取Excel表格数据方法三,返回数据集DataSet         /// </summary>         /// <param name="str">所要打开的文件地址</param>         /// <returns><...

使用ado访问excel中的数据

【1】链接数据源(excel文件) (1)配置链接字符串: string connString = @"Provider = Microsoft.Jet.OLEDB.4.0; Extended Properties = Excel 8.0; Data Source = C:UsersBoBoDesktopstudent.xlsx"; (2)创建链...

数据处理之以OLEDB方式读取Excel数据丢失的原因及解决方法

1.引言 在应用程序的设计中,经常需要读取Excel数据或将Excel数据导入转换到其他数据载体中,C#读取Excel的方式有两种,一种是通过OLEDB方式读取,另一种为通过COM组件方式读取。近段时间有客户反映,读取到程序中的Excel表,出现部分数据丢失的情况,笔者在此采用的是第一种方式读取(第二种读取比较慢,且不易控制),于是检查代码还有各种找资料,...