一.配置文件名称、路径、内容:

 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
<property name="maxUploadSize" value="104857600"></property><!-- 最大上传文件大小:100M -->
<property name="maxInMemorySize" value="10240"></property>
</bean>

二.controller

 @RequestMapping(value = "/importAccountManager")
@ResponseBody
public ModelAndView importAccountManager(HttpServletRequest request, HttpServletResponse response,
@RequestParam("file") CommonsMultipartFile file) {
ModelAndView mav = new ModelAndView(new MappingJackson2JsonView());
try (InputStream inputXls = file.getInputStream();
InputStream inputXML = new BufferedInputStream(getClass().getClassLoader().getResourceAsStream(ACCOUNT_TEMPLATE_PATH));) {
XLSReader mainReader = ReaderBuilder.buildFromXML(inputXML);
List<AccountManagerModel> dataList = new ArrayList<>();
Map<String, Object> params = new HashMap<>();
params.put("dataList", dataList);
mainReader.read(inputXls, params);
String message = accountManagerService.importAccountManager(dataList);
if(StringUtils.isNotBlank(message)) {
mav.addObject("success", false);
} else {
mav.addObject("success", true);
}
mav.addObject("message", message);
} catch (Throwable e) {
LOGGER.error("importAccountManager causes inner exception:", e);
mav.addObject("success", false);
mav.addObject("message", e.getMessage());
}
return mav;
}

三.service

//serviceImpl
@Override
public String importAccountManager(List<AccountManagerModel> accountList) throws Exception {
List<OrgModel> orgList = orgMapper.queryOrg();
String message = validate(accountList, orgList);
if(message == null) {
for(AccountManagerModel account : accountList) {
String consNo = account.getConsNo();
AccountManagerModel oldAccount = accountManagerMapper.queryByConsNo(consNo);
if(oldAccount == null) {
insertAccountManager(account);
} else {
editAccountManager(account, oldAccount);
}
}
}
return message;
}
//interface
/**
* 导入客户数据
*
* @param accountList
* @return
* @throws Exception
*/
public String importAccountManager(List<AccountManagerModel> accountList) throws Exception;

四.mapper

//interface
/**
* 通过客户号查询企业
*
* @param consNo
* @return
* @throws throws Exception
*/
public AccountManagerModel queryByConsNo(String consNo) throws Exception;
//mapper映射xml
<select id="queryByConsNo" parameterType="java.lang.String" resultMap="AccountManagerResultMap">
select
a.cons_id,
a.cons_no,
a.cons_name,
a.cons_address,
a.legal_person,
a.legal_person_phone,
a.bill_person,
a.bill_person_phone,
a.electric_person,
a.electric_person_phone,
a.entrusted_person,
a.entrusted_person_phone,
a.cons_state,
a.org_no,
b.org_name
from be_cons_info a, o_org b
where a.org_no = b.org_no
and a.cons_no = #{consNo}
</select>

五.Html

<div class="tool_wrapper">
<button class="ui-btn ui-btn-primary" onclick="addAccountManager();">新增</button>
<button class="ui-btn ui-btn-primary left20" onclick="editAccountManager();">修改</button>
<!-- <button class="ui-btn ui-btn-primary left20" onclick="cancelAccountManager();">注销</button> -->
<button class="ui-btn ui-btn-primary left20 fileinput-button">
<span>导入Excel</span>
<input id="fileupload" type="file" name="file" accept="application/vnd.ms-excel">
</button>
<button class="ui-btn ui-btn-primary left20" onclick="exportXls()">导出Excel</button>
<button class="ui-btn ui-btn-primary left20" onclick="downloadXlsTemplate()">下载模板</button>
</div>

六.js

function bindFileUploadEvent() {
$('#fileupload').fileupload({
url: basePath + 'accountManager/importAccountManager',
type: 'post',
dataType: 'json',
beforeSend: function(xhr){
xhr.setRequestHeader(header, token);
},
send: function(e, data) {
var file = data.files[0];
var fileName = file.name;
var fileSize = file.size;
var errorMsg = "请选择Excel文件!";
var pass = validateFileName(fileName, ".xls");
if(pass && fileSize >= 10485760) {
pass = false;
errorMsg = "选择的Excel文件须小于10M!";
}
if(!pass) {
$('#fileupload').val('');
errorDialog(errorMsg);
} else {
if(parent.progress) {
parent.progress.show();
}
}
return pass;
},
done: function(e, data) {
var result = data.result;
if(result.success) {
queryAccountManager();
succDialog("客户数据导入成功!");
} else {
errorDialog(result.message);
}
},
fail: function(e, data) {
if(data.textStatus != null) {
errorDialog("系统发生故障,请联系系统管理员或稍后重试!");
}
},
always: function(e, data) {
if(parent.progress) {
parent.progress.hide();
}
}
});
}

Java实现导入Excel文件的更多相关文章

  1. java如何导入Excel文件

    Java使用POI导入Excel文件,操作起来比较简单,支持xlsx格式. 下载POI资源包 从官网https://poi.apache.org/下载POI,笔者选择的是版本是3.17,下载后文件名是 ...

  2. Java解析导入Excel文件后台代码实现

    使用MultipartFile上传Excel文件后端代码实现:(springmvc下的spring-webmvc (MultipartFile )上传) 由于POST一个包含文件上传的Form会以mu ...

  3. Java POI导入Excel文件

    今天在公司需要做个导入Excel文件的功能,所以研究了一下,参考网上的一些资料总算是做出来了,在此记录一下防止以后忘记怎么弄. 本人用的是poi3.8,所以需要的JAR包如下: poi-3.8.jar ...

  4. Java jxl导入excel文件,导入的数字、身份证号码、手机号变成了科学计数法,解决方案

    原文出自:https://blog.csdn.net/seesun2012 这是一个execl文件导入数据库操作,使用jxl解析execl导入数据库过程出现了科学计数法,与想要导入的数据不匹配,以下是 ...

  5. .Net MVC 导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) 通过MVC控制器导出导入Excel文件(可用于java SSH架构)

    .Net MVC  导入导出Excel总结(三种导出Excel方法,一种导入Excel方法) [原文地址] 通过MVC控制器导出导入Excel文件(可用于java SSH架构)   public cl ...

  6. java后端导入excel模板和导入excel文件去读数据

    模板转载地址:https://www.cnblogs.com/zhangyangtao/p/9802948.html 直接上代码(我是基于ssm写的demo,导入文件目前只能读取.xls后缀的exce ...

  7. springMVC(5)---导入excel文件数据到数据库

    springMVC(5)---导入excel文件数据到数据库 上一篇文章写了从数据库导出数据到excel文件,这篇文章悄悄相反,写的是导入excel文件数据到数据库.上一篇链接:springMVC(4 ...

  8. 利用kettle组件导入excel文件到数据库

    利用kettle组件导入excel文件到数据库 1.     实现目标 把excel文件内容导入到目标表中:然后用java调用kettle的转换.excel文件的内容仅仅有两列,示比例如以下: wat ...

  9. java上传excel文件及解析

      java上传excel文件及解析 CreateTime--2018年3月5日16:25:14 Author:Marydon 一.准备工作 1.1 文件上传插件:swfupload: 1.2 文件上 ...

随机推荐

  1. Java编程中经典语句收录

    1.spring系列:约定优于配置(习惯大于配置): 2.Java:一次编译,处处运行 3.Unix:没有消息就是好消息

  2. Eclipse的变量标记开关

    例如有如下代码: int var_a = 0; int var_b = var_a + 2; 当光标在var_a变量上时,Eclipse会将代码进行如下标记: int var_a = 0; int v ...

  3. 关于phpmyadmin getshell

    思考一个问题:如何在获得一个PHP MySQL 搭建网站的phpmyadmin界面后(无论用什么办法,进到phpmyadmin里),进行一个getshell的操作? ...... 0x01山重水复 当 ...

  4. Apache/Nginx/IIS日志记录的各个字段内容与含义

    一.Apache 1.1 Apache日志文件名称及路径介绍 当我们安装并启动Apache后,Apache会自动生成两个日志文件,这两个日志文件分别是访问日志access_log(在Windows上是 ...

  5. 题解 Medium Counting

    传送门 又是神仙DP 发现如果只有两个串就很好做了 于是这个神仙DP定义就从这里下手:令 $dp[p][c][l][r] 表示在 \([s_l, s_r]\) 这段字符串中,考虑从第 \(p\) 个位 ...

  6. Nodejs koa2读取服务器图片返回给前端直接展示

    参考:https://blog.csdn.net/lihefei_coder/article/details/105435358 const fs = require('fs'); const pat ...

  7. chmod u+s是什么意思

    今天突然不能su到root了,root密码是正确的,但是就是显示密码错误还有mount也不能在一般用户里用了,不管有没有设备,都说没有权限到google上搜索了一番,发现了这样一段:--------- ...

  8. 十:JavaWeb中的监听器(一)

    2.1.基本概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域 ...

  9. mzy git学习, 保留现场,恢复现场,以及bug分支处理(七)

    git stash 在git中有时候我们工作做了一半,但是有点急事需要离开一段时间,或者现在需要切换到另一个分支下,去维护和修改一些其它的东西,但是我们现在的工作还没有完成,提交上去的话,并不是完整的 ...

  10. 设计模式<一>

    设计原则1.找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起. 2.针对接口编程,而不是针对实现编程. 3.多用组合,少用继承. 一:策略模式,定义了算法族,分别封装起来 ...