poi之Excel上传
poi之Excel上传
@RequestMapping(value = "/import", method = RequestMethod.POST)
public String importFile(MultipartFile file,RedirectAttributes redirectAttributes) {
log.debug("批量导入终端数据");
/***
* 1,解析Excel 得到List<TerminalSDMTExcel>
* 2,遍历,并处理list{
* 1,判断TerminalSDMTExcel是否为空
* 2,判断id是否为空
* 3,检验Excel中的数据是否合法
* 4,TerminalSDMTExcel转TerminalSDMT
* 5,入库{
* 1,判断是否存在:存在则跳过
* 2,入库
* }
* }
* 3、提示批量导入商户结果
*/
try {
int successNum = 0;
int failureNum = 0;
StringBuilder failureMsg = new StringBuilder();
ImportExcel ei = new ImportExcel(file, 1, 0);
List<TerminalSDMTExcel> list = ei.getDataList(TerminalSDMTExcel.class);
TerminalSDMT Terminal = null;
for (int i=0; i < list.size(); i++) {
TerminalSDMTExcel entity = list.get(i);
try {
//是否为空,如果没有,直接跳过
if (valiBoolean(entity)){
//判断entity中各字段是否合法
Map<String,Object> maps = checkMerchantExcel(entity);
boolean flags = (Boolean) maps.get("flag");
StringBuilder checkcontext = (StringBuilder) maps.get("content");
log.debug("判断输入值是否合法");
//判断输入值是否合法
if(flags){
//合法
//转换
Terminal = excelSwitchEntity(entity);
//插入
Map<String,Object> map = TerminalSDMTService.save(Terminal);
String flag = (String) map.get(SysConst.RESULT);
/**
* =0,成功
* =-1,失败
*/
if("-1".equals(flag)){
//商户已存在
failureMsg.append("\n终端编号" + entity.getTermCode()+ " 已存在; ");
failureNum++;
}if("0".equals(flag)){
//成功
successNum++;
}
}else{
//不合法
failureMsg.append("\n终端编号:" + entity.getTermCode()+ ",失败原因:"+checkcontext.toString());
failureNum++;
}
}else{
if(Strings.isNullOrEmpty(entity.getMerchantId()) || Strings.isNullOrEmpty(entity.getTermCode())){
failureMsg.append("\n失败原因:第"+ (i+3)+"行,商户、终端编号为必填项");
failureNum++;
}else{
failureMsg.append("\n终端编号:" + entity.getTermCode()+ ",失败原因:所有项均为必填项 ");
failureNum++;
}
}
}
catch (Exception ex) {
failureMsg.append("\n终端编号 " + entity.getTermCode() + " 导入失败:"+ ex.getMessage());
}
}
if (failureNum > 0) {
failureMsg.insert(0, ",失败 " + failureNum + " 条终端信息,导入信息如下:");
}
addMessage(redirectAttributes, "已成功导入 " + successNum + " 条终端信息"+ failureMsg);
} catch (Exception e) {
addMessage(redirectAttributes, "导入终端信息失败!失败信息:" + e.getMessage());
}
return "redirect:";
}
注意实体映射规则
poi之Excel上传的更多相关文章
- EXCEL上传POI
Java SpringMVC POI上传excel并读取文件内容 2017年11月27日 15:26:56 强人锁男. 阅读数:15329 用的SSM框架,所需要的jar包如图所示:,链接地址:j ...
- excel上传和下载
需要注意的地方: 1.js构造表单并提交 2.js中文传参encodeURI(encodeURI("中文")),action接收并转换value = URLDecoder.deco ...
- IT轮子系列(六)——Excel上传与解析,一套代码解决所有Excel业务上传,你Get到了吗
前言 在日常开发当中,excel的上传与解析是很常见的.根据业务不同,解析的数据模型也都不一样.不同的数据模型也就需要不同的校验逻辑,这往往需要写多套的代码进行字段的检验,如必填项,数据格式.为了避免 ...
- Excel上传并读取数据
最近一段时间,维护一个旧系统,其中有一个功能,是把Excel上传,并读取数据进行维护,然后转插入至SQL数据库中.下面Insus.NET使用asp.net 标准上传控件: <asp:FileUp ...
- 基于thinkphp5的Excel上传
涉及知识点: thinkphp5.0: excel上传: mysql建立新表(基本的create语句): mysql ignore(避免重复插入): 主要功能: 通过在视图中上传excel文件,在my ...
- 2019.06.05 ABAP EXCEL 操作类代码 OLE方式(模板下载,excel上传,内表下载)
一般使用标准的excel导入方法9999行,修改了标准的excel导入FM 整合出类:excel的 模板下载,excel上传,ALV内表下载功能. 在项目一开始可以SE24创建一个类来供整体开发使用, ...
- 【Javaweb】poi实现通过上传excel表格批量导入数据到数据库
1.导入poi相关jar包 对于只操作2003及以前版本的excel,只需要导入poi-XXX.jar ,如果还需要对2007及以后版本进行操作,则需要导入 poi-ooxml-XXX.jar poi ...
- F9 excel上传
1 在前台制定文件上传按钮 <div id="dataImport" class="mini-webuploader" pickerText=" ...
- 基于BootStrap的initupload()实现Excel上传和获取excel中的数据
简单说明:后边要做exl解析(还没做呢),所以先有一个excel的的上传以及获取excel中的数据,展示出来. 代码: //html代码 <div class="btn-group&q ...
随机推荐
- string::size_type 页73 size_t 页90
异同点: size_t size_type sizeof(XXX)所得到的结果的类型就是 string类类型和vector类类型定义的类型,string的size操作返回来的是string::size ...
- react-router v3和v4区别
1.默认路由 v3 <IndexRoute> v4 <Route exact> 2.授权路由 import Redirect from 'react-router-dom' & ...
- forms 组件的功能和使用
forms组件 先自己实现注册功能,并且对用户输入的信息加限制条件 如果用户输入的信息不符合条件,前端展示报错信息 注册示例: 1.前端渲染标签获取用户输入 >>> 前端渲染标签 2 ...
- 屏幕尺寸,分辨率,PPI,像素之间的关系
什么是屏幕尺寸? 华为荣耀7的尺寸是5.2英寸.这个5.2英寸是手机屏幕对角线的长度. 1英寸(inch)=2.54厘米(cm) 什么是分辨率? 华为荣耀7的分辨率是1920PX*1080PX.像素是 ...
- NX二次开发-基于MFC界面对话框与NX交互的开发
打开VS2013 点击新建,选择MFC DLL 点击确定 点下一步 什么都不改,直接点完成 进来之后先编译一下,看是否编译成功 打开项目属性,更改这几处 $(UGII_BASE_DIR)\ugopen ...
- 卿烨科技 Fireball
9人开发病毒感染超2亿电脑!Fireball病毒境外做案被举报 原标题:名校毕业生研发病毒年获利8000万 2.5亿台电脑感染 海淀网友协助民警追踪跨境黑客 高材生开公司研发病毒 一年获利8000 ...
- 关于ACL访问控制的一些问题:AntiACL
@echo off title AntiACL Made By gwsbhqt color 0a reg query "HKU\S-1-5-19" >nul 2>nul ...
- linux安装jrockit 1.6
文章目录 下载 安装 配置环境变量 下载 https://download.csdn.net/download/wthn163/10631876?utm_source=bbsseo 安装 将.bin结 ...
- HTML中margin和padding的区别
我们以DIV为一个盒子例子,既然和显示生活中的盒子一样,那我们想一下,生活中的盒子 内部是不是空的好用来存放东西,而里面存放东西的区域我们给他起个名字叫“content(内 容)”,而盒子的纸壁给他起 ...
- 20. Jmeter抓包之APP请求
APP测试过程中我们经常需要抓包,通常我们使用fiddler或者Charles.但是jmeter也可以抓包,而且非常好用,闲话不多说,下面进入正题. 步骤: 1.选择测试计划,添加线程组 2.选择工作 ...