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 ...
随机推荐
- .babelrc配置例子
{ "presets":[ ["es2015",{"modlues":false}], "react", ], &quo ...
- git的使用(扫盲)
之前一直是通过图形化工具使用git,前两天练习用命令上传代码,遇到不少问题,最终还是解决了,在这里总结一下. 通过一个例子来演示一下.首先去github上面创建一个仓库. 创建好之后,就可以上传文件了 ...
- Java中的可变参数和asList方法
可变参数: List.of
- 读取Properties
package com.infotech.common.util; import java.io.FileNotFoundException; import java.io.IOException; ...
- leetcode-按奇偶排序数组II
Python解决方法: class Solution(object): def sortArrayByParityII(self, A): j = 1 for i in xrange(0, len(A ...
- go导入包
go导入包 go有很多内置的函数,例如println,不需要引用即可使用.但是如果不借助go的标准库或者第三方库,我们能做的事情有限.在go中,使用关键字import在代码中导入一个包并使用. 修改我 ...
- Array排序和List排序
public class SortTest { public static void main(String[] args) { int arr[]={12,4,45,23,5,7,9,33}; Sy ...
- 【算法】BitMap
转自:https://www.seoxiehui.cn/article-45186-1.html 需求: 为满足用户标签的统计需求,小灰利用Mysql设计了如下的表结构,每一个维度的标签都对应着Mys ...
- TFS——更改计算机名称,影响TFS使用
今天把自己电脑的计算机名称改了,打开VS的时候,就提示以下的错误: 报错情况 显示错误:工作区 DADI--20141015Q;SD-SERVER\Administrator 未驻留在此计算机上.如果 ...
- 贪婪算法--Python
贪婪算法:每步都采取最优的做法,即每步都选择局部最优解,最终得到的就是全局最优解. 假设你办了个广播节目,要让全美50个州的听众都收听得到.为此你需要决定在哪些广播台播出.在每个广播台播出都需要支付费 ...