JXLS使用方法(文件上传读取)xlsx文件读取
1.官方文档:http://jxls.sourceforge.net/reference/reader.html
2.demo git地址:https://bitbucket.org/leonate/jxls-demo
3.maven添加
<groupId>org.jxls</groupId>
<artifactId>jxls-reader</artifactId>
<version>2.0.2</version>
</dependency>
<?xml version="1.0" encoding="ISO-8859-1"?>
<workbook>
<worksheet name="Sheet1">(文件页数)
<section startRow="0" endRow="0">(表头开始至结束行)
</section>
<loop startRow="1" endRow="1" items="list" var="soImportDTO" varType="com.domain.dto.SoImportDTO">(开始循环读取文件数据,配置开始行,items映射的list var映射的bean varType 类路径)
<section startRow="1" endRow="1">(循环开始行)
<mapping row="1" col="0">soImportDTO.extno</mapping>
<mapping row="1" col="1">soImportDTO.whcode</mapping>
<mapping row="1" col="2">soImportDTO.type</mapping>
<mapping row="1" col="3">soImportDTO.soLineNo</mapping>
<mapping row="1" col="4">soImportDTO.sku</mapping>
<mapping row="1" col="5">soImportDTO.qty</mapping>
<mapping row="1" col="6">soImportDTO.supplierCode</mapping>
<mapping row="1" col="7">soImportDTO.supplierName</mapping>
<mapping row="1" col="8">soImportDTO.carrierCode</mapping>
<mapping row="1" col="9">soImportDTO.carrierName</mapping>
<mapping row="1" col="10">soImportDTO.shipDate</mapping>
<mapping row="1" col="11">soImportDTO.carNo</mapping>
<mapping row="1" col="12">soImportDTO.shipFromContact</mapping>
<mapping row="1" col="13">soImportDTO.shipFromPhone</mapping>
<mapping row="1" col="14">soImportDTO.remark</mapping>(以上是配置每列对应的bean的属性)
</section>
<loopbreakcondition>(结束条件配置)
<rowcheck offset="0">
<cellcheck offset="0">以什么条件结束写在这里 若是为空结束这不填</cellcheck>
</rowcheck>
</loopbreakcondition>
</loop>
</worksheet>
</workbook>
表头样式
读取文件代码:
List<SoImportDTO> soImportDTOList = new ArrayList<>();
Map<String,List<SoImportDTO>> beans = new HashMap<>();
InputStream inputXML = new BufferedInputStream(getClass().getResourceAsStream("/xmlMapper/so-import.xml"));
XLSReader mainReader = null;
try {
mainReader = ReaderBuilder.buildFromXML( inputXML );
} catch (IOException e1) {
log.error("读取配置文件失败"+e1);
throw new ApplicationException(ErrorCode.READ_CONFIG_FAIL.code(), ErrorCode.READ_CONFIG_FAIL.message());
} catch (SAXException e1) {
log.error("读取配置文件失败"+e1);
throw new ApplicationException(ErrorCode.READ_CONFIG_FAIL.code(), ErrorCode.READ_CONFIG_FAIL.message());
}
InputStream inputXLS = null;
try {
inputXLS = file.getInputStream();
} catch (IOException e1) {
throw new ApplicationException(ErrorCode.READ_ORDER_FAIL.code(), ErrorCode.READ_ORDER_FAIL.message());
}
List<SoImportDTO> soImportDTOs = new ArrayList<>();
beans.put("list", soImportDTOs);
ConvertUtils.register(new DateConverter(), Date.class);
try {
XLSReadStatus readStatus = mainReader.read(inputXLS, beans);
} catch (InvalidFormatException e1) {
log.error("将数据映射到bean时出错"+e1);
throw new ApplicationException(ErrorCode.MAPPED_FAIL.code(), ErrorCode.MAPPED_FAIL.message());
} catch (IOException e1) {
log.error("将数据映射到bean时出错"+e1);
throw new ApplicationException(ErrorCode.MAPPED_FAIL.code(), ErrorCode.MAPPED_FAIL.message());
}
完成上述之后操作之后 数据就已经map进bean里 到beans里面去拿list就ok
JXLS使用方法(文件上传读取)xlsx文件读取的更多相关文章
- SpringMVC单文件上传、多文件上传、文件列表显示、文件下载(转)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 本文工程 ...
- SpringMVC文件上传下载(单文件、多文件)
前言 大家好,我是bigsai,今天我们学习Springmvc的文件上传下载. 文件上传和下载是互联网web应用非常重要的组成部分,它是信息交互传输的重要渠道之一.你可能经常在网页上传下载文件,你可能 ...
- 强大的支持多文件上传的jQuery文件上传插件Uploadify
支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Fla ...
- struts文件上传(多文件)
第01步:配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version= ...
- Struts1文件上传、单文件、多文件上传【Struts1】
将struts1文件上传的操作汇总了一下,包括单文件上传和多文件上传,内容如下,留作备忘: Struts2实现文件上传的文章(http://blog.csdn.net/itwit/article/d ...
- (29)Spring boot 文件上传(多文件上传)【从零开始学Spring Boot】
文件上传主要分以下几个步骤: (1)新建maven java project: (2)在pom.xml加入相应依赖: (3)新建一个表单页面(这里使用thymleaf); (4)编写controlle ...
- skymvc文件上传支持多文件上传
skymvc文件上传支持多文件上传 支持单文件.多文件上传 可以设定 文件大小.存储目录.文件类型 //上传的文件目录 $this->upload->uploaddir="att ...
- yii2.0单文件上传和多文件上传
yii2文件上传使用到yii2自带的文件上传类UploadFIle,以及对应的模型规则,这里分别介绍单文件上传和多文件上传: yii2单个文件上传: 上传步奏,先创建上传表单模型model(包含验证规 ...
- 使用PHP实现文件上传和多文件上传
PHP 2013 年 9 月 4 日 暂无评论 在PHP程序开发中,文件上传是一个使用非常普遍的功能,也是PHP程序员的必备技能之一.值得高兴的是,在PHP中实现文件上传功能要比在Java.C#等语言 ...
- java常见3种文件上传速度对比和文件上传方法详细代码
在java里面文件上传的方式很多,最简单的依然是FileInputStream.FileOutputStream了,在这里我列举3种常见的文件上传方法代码,并比较他们的上传速度(由于代码是在本地测试, ...
随机推荐
- vmware一步步安装centos
软件环境:vmware10.0破解版 centos版本:6.4 1.启动vmware,新建虚拟机,选择自定义安装 2,出现如下界面,保持默认,点击下一步 3.这个步骤要特别注意,选择“稍后安装”,我们 ...
- lodash源码分析之自减的两种形式
这个世界需要一个特定的恶人,可以供人们指名道姓,千夫所指:"全都怪你". --村上春树<当我谈跑步时我谈些什么> 本文为读 lodash 源码的第六篇,后续文章会更新到 ...
- vue2.0笔记《二》组件
主要内容:如何注册组件.如何使用组件.父组件子组件之间值的传递 1.如何注册组件 第一步:通过import将子组件载入父组件的js中 // 第一步:通过import将子组件载入父组件的js中 impo ...
- tcp链接断开的探测
有资料说,read.write都可以探测tcp的断开,但都不是实时的. 但是实际在某些设备上测试发现,即使开一个线程每隔一小段时间发一次心跳包(write),write也不能探测连接已经断开,而且这个 ...
- VC++平台上的内存对齐操作
我们知道当内存的边界正好对齐在相应机器字长边界上时,CPU的执行效率最高,为了保证效率,在VC++平台上内存对齐都是默认打开的,在32位机器上内存对齐的边界为4字节:比如看如下的代码: struct ...
- 多工程联编,cocopods的使用
最近在使用coco2d-x, 想要使用 cocopods,发现我的目录结构如下图 发现我有三个工程文件, 那么 就需要多工程联编使用cocopods, workspace 'xcworkspace' ...
- sublime 挪移的第一层(插件的安装和使用)
人总要坚持一些什么,故从今儿始,咱也开始写博客,不为成为大神,不为成为分享大师,只为让自己快活有成就感一些 1.sublime的安装 登录sublime官网 : http://www.sublimet ...
- Vim 在 windows 环境下的初步配置
一..下载工具包 vim 程序:下载安装程序 vim-plug 插件: 下载插件管理文件 二. 安装 VIM 1.如果无特别要求,一路选择默认, 在类型选择时,选择 full 2. 配置 vim-pl ...
- Visual Studio总是在重新生成项目?
你是否曾经有过这种感觉:即使代码没有改变,Visual Studio也总是在重新生成项目? 我们可以生成一个项目,然后不做任何处理后再次生成,我们就可以看见--VS正在开始生成项目,而我的项目代码并没 ...
- app额外后台运行操作
//在视图中运行操作中进行周期操作 - (void)applicationDidEnterBackground:(UIApplication *)application { [self beingBa ...