jxls导入excel
来源:互联网 发布:微商跟淘宝哪个好 编辑:程序博客网 时间:2024/06/06 03:55
jxls导入excel
一、 对比excel文件和Mysql数据库中的数据类型区别首先看一下我们要导入的EXCEL表格中的数据。
再看一下MySQL数据库中的表属性,
通过对比两个的数据类型
问题来了 :
EXCEL表格中的“使用公司”和“所属仓库”的数据类型是String类型,而数据库中是“公司ID”和“仓库ID”是Integer类型。怎么把他们换回来呢,这里我们就用到,VO类的封装了。
一般情况下,我们pojo类的属性名都是和数据库的一一对应的,为了避免用户直接看到数据库的数据类型,导致一些危险的后果。所以都会写一个VO类对pojo类不想让人看到的属性进行再次封装。
这个例子先写一个pojo类。
LocationDetails.Java
package ndm.miniwms.pojo;import java.util.Date;import java.util.List;import VO.LocationVO;public class LocationDetails { private Integer id; private Date created; private Date modified; private String name; private Integer usage; private String XCoord; private String YCoord; private String ZCoord; private Integer warehouseId; private Integer companyId; public LocationDetails(){ } //这里是vo类和pojo类交互的构造函数 public LocationDetails(LocationVO vo){ this.name=vo.getName(); this.XCoord=vo.getXCoord(); this.YCoord=vo.getYCoord(); this.ZCoord=vo.getZCoord(); } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Date getCreated() { return created; } public void setCreated(Date created) { this.created = created; } public Date getModified() { return modified; } public void setModified(Date modified) { this.modified = modified; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getUsage() { return usage; } public void setUsage(Integer usage) { this.usage = usage; } public String getXCoord() { return XCoord; } public void setXCoord(String xCoord) { XCoord = xCoord; } public String getYCoord() { return YCoord; } public void setYCoord(String yCoord) { YCoord = yCoord; } public String getZCoord() { return ZCoord; } public void setZCoord(String zCoord) { ZCoord = zCoord; } public Integer getWarehouseId() { return warehouseId; } public void setWarehouseId(Integer warehouseId) { this.warehouseId = warehouseId; } public Integer getCompanyId() { return companyId; } public void setCompanyId(Integer companyId) { this.companyId = companyId; }}
它对应的VO类、
LocationVO.java
package VO;public class LocationVO { private String name; private String XCoord; private String YCoord; private String ZCoord; private String warehouseId; //这里是String类型的 private String companyId; //这里是String类型的 public String getWarehouseId() { return warehouseId; } public void setWarehouseId(String warehouseId) { this.warehouseId = warehouseId; } public String getCompanyId() { return companyId; } public void setCompanyId(String companyId) { this.companyId = companyId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getXCoord() { return XCoord; } public void setXCoord(String xCoord) { XCoord = xCoord; } public String getYCoord() { return YCoord; } public void setYCoord(String yCoord) { YCoord = yCoord; } public String getZCoord() { return ZCoord; } public void setZCoord(String zCoord) { ZCoord = zCoord; }}
库位的DAO接口和mapper.xml文件有连接数据库进行增加操作的方法,代码如下:
LocationDetailsMapper.java
package ndm.miniwms.dao;import java.util.List;import ndm.miniwms.pojo.CompanyDetails;import ndm.miniwms.pojo.LocationDetails;public interface LocationDetailsMapper { int add(LocationDetails locationDetails);}
下面是添加到数据库的xml代码
LocationDetailsMapper.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="ndm.miniwms.dao.LocationDetailsMapper"> <resultMap id="BaseResultMap" type="ndm.miniwms.pojo.LocationDetails"> <id column="id" property="id" jdbcType="INTEGER" /> <result column="warehouse_id" property="warehouseId" jdbcType="INTEGER" /> <result column="company_id" property="companyId" jdbcType="INTEGER" /> </resultMap> <insert id="add" parameterType="ndm.miniwms.pojo.LocationDetails"> insert into location_details (created, modified, name, `usage`, XCoord, YCoord,ZCoord, warehouse_id,company_id) values (#{created}, #{modified}, #{name}, #{usage},#{XCoord}, #{YCoord}, #{ZCoord}, #{warehouseId},#{companyId}) </insert></mapper>
下面是具体对EXCEL文件操作的方法
location.xml
<?xml version="1.0" encoding="utf-8" ?><workbook> <worksheet name="工作表1"> <!-- 开始行数,和结束行数。把EXCEL表中的前两排直接干掉--> <section startRow="0" endRow="1"></section> <!-- 下面是一行的模版,获取一行,之后的行数就按这个模版来获取--> <!-- items是集合的名称。--> <loop startRow="2" endRow="2" items="locations" var="locationVO" varType="VO.LocationVO"> <section startRow="2" endRow="2"> <mapping row="2" col="0">locationVO.name</mapping> <mapping row="2" col="1">locationVO.XCoord</mapping> <mapping row="2" col="2">locationVO.YCoord</mapping> <mapping row="2" col="3">locationVO.ZCoord</mapping> <mapping row="2" col="4">locationVO.companyId</mapping> <mapping row="2" col="5">locationVO.warehouseId</mapping> </section> <loopbreakcondition> <rowcheck offset="0"> <cellcheck offset="0"></cellcheck> </rowcheck> <!--循环到值为空的时候结束 --> </loopbreakcondition> </loop> </worksheet></workbook>
ReadLocation.java
package zhao;import java.io.BufferedInputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.annotation.Resource;import org.apache.poi.openxml4j.exceptions.InvalidFormatException;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.xml.sax.SAXException;import VO.LocationVO;import ndm.miniwms.dao.CompanyDetailsMapper;import ndm.miniwms.dao.LocationDetailsMapper;import ndm.miniwms.dao.WarehouseMapper;import ndm.miniwms.pojo.CompanyDetails;import ndm.miniwms.pojo.LocationDetails;import ndm.miniwms.pojo.Warehouse;import net.sf.jxls.reader.ReaderBuilder;import net.sf.jxls.reader.XLSReadStatus;import net.sf.jxls.reader.XLSReader;@RunWith(SpringJUnit4ClassRunner.class) // 表示继承了SpringJUnit4ClassRunner类@ContextConfiguration(locations = { "classpath:spring-mybatis.xml" })public class ReadLocation { @Resource CompanyDetailsMapper companydetailsmapper; @Resource WarehouseMapper warehousemapper; @Resource LocationDetailsMapper locationdetailsmapper; @Test public void test() throws InvalidFormatException, IOException, SAXException { String xmlConfig = "/doc/location.xml"; InputStream inputXML = new BufferedInputStream(getClass().getResourceAsStream(xmlConfig)); XLSReader mainReader = ReaderBuilder.buildFromXML(inputXML); InputStream inputXLS = new BufferedInputStream( getClass().getResourceAsStream("/doc/dataSourceTemplate/库位.xls")); BufferedInputStream bis = new BufferedInputStream(inputXLS); List<LocationVO> locationVO = new ArrayList<>(); Map<String, Object> beans = new HashMap<String, Object>(); // 读出来,把xml中获取的locations,取出来赋值给这个集合。 beans.put("locations", locationVO); XLSReadStatus readStatus = mainReader.read(inputXLS, beans); List<CompanyDetails> company = companydetailsmapper.all(); List<Warehouse> warehouse = warehousemapper.all(); for (LocationVO locationvo : locationVO) { LocationDetails loca = new LocationDetails(locationvo); for (CompanyDetails com : company) { // System.out.println("公司的名字:::"+com.getName()); // System.out.println("vo的名字:::"+locationvo.getCompanyId()); if (com.getName().equals(locationvo.getCompanyId())) { loca.setCompanyId(com.getId()); break; } } for (Warehouse wa : warehouse) { if (wa.getName().equals(locationvo.getWarehouseId())) { loca.setWarehouseId(wa.getId()); break; } } locationdetailsmapper.add(loca); } }}
0 0
- jxls导入excel
- jxls导入excel
- 使用jxls技术导入Excel模版数据
- JXLS-----JXLS导出Excel
- jxls导入Excel(即读取Excel中的数据)
- [置顶] 使用jxls技术导入Excel模版数据
- java中jxls实现excel导入到mysql数据库
- java通过jxls框架实现导入导出excel
- JXLS-----JXLS导出Excel实例
- JXLS-----JXLS读取Excel实例
- jxls生成Excel文件
- Jxls 导出excel
- jxls模板导出excel
- Jxls 导出excel
- 基于Jxls 生成excel
- jxls操作excel文件
- JXLS生成Excel图表
- jxls操作 excel
- Python入门:逻辑判断与运算符
- 踩坑面试题一
- 分治递归 棋盘问题
- 数据结构-栈的基本操作实现
- Java通过JNI调用C++程序
- jxls导入excel
- LeetCode算法题——24. Swap Nodes in Pairs
- 图片三级缓存
- shell之文本过滤(awk)
- 高德已知圆心,半径,计算圆弧坐标
- 使用GCD 信号量来实现iOS 同步网络请求
- [(机器学习)概率统计]极大似然估计MLE原理+python实现
- 08 const
- Hibernate(8)Stucts+Hibernate+接口编程