java实现导入excel功能
实现功能:
1、Excel模板下载
2、导入excel
一、jsp效果和代码
<form id="uploadForm" target="frameFile" class="bs-docs-example form-horizontal" method="post" action="<%=path %>/webCenter.do" enctype="multipart/form-data">
<input type="hidden" id="conId" name="conId" value="<%=conId%>">
<input type="hidden" id="code" name="code" value="<%=code%>">
<input type="hidden" name="method" value="insertUserInfo">
<table cellpadding="0" cellspacing="0" border="0" style="width:600px;margin:20px auto;text-algin:left;">
<tr><td colspan="4"><input id="dyId" type="hidden"/></td></tr>
<tr><td colspan="3"><a href="/center/file/userInfoModel.xlsx" id="downloadModel" name="downloadModel" style="margin-left:7px;"><u>点击下载人员模板</u></a></td></tr>
<tr><td colspan="4"><br/></td></tr>
<tr><td colspan="3"><input id="files" name="files" type="file" style="width:200px;"/></td></tr><!-- background:url('/center/images/uploadImg.png') no-repeat 0px 10px; -->
<tr><td colspan="4"><br/></td></tr>
<tr>
<td colspan="4" style="text-align: center;">
<hr style="width:720px;border-width: 0.3px;margin-left:-10px;">
<button id="tiJiao" type="button" class="czbtn" style="width:100px;font-size: 16px;">导入</button>
</td>
</tr>
</table>
</form>
二、js代码
$("#tiJiao").click(function(){
if($("#files").val() == ""){
alert("请选择要上传的文件");
}else{
CommonPerson.Base.LoadingPic.FullScreenShow();
$("#tkDiv").hide();
$("#tk1").hide();
$("#uploadForm").submit();
}
})
三、action处理
/**
* 人员信息导入
* @param conId
* @param code
* @param request
* @param response
*/
@RequestMapping(params="method=insertUserInfo",method=RequestMethod.POST)
public void insertUserInfo(Integer conId,String code,HttpServletRequest request,HttpServletResponse response){
try {
String msg = "";
Integer state = 0;
String fileUrl = "/files/excel/";
HttpSession session = this.getSession(request);
Adminuser adminUser = session.getAttribute("centerAdminUser") == null?null:(Adminuser) session.getAttribute("centerAdminUser");
if(adminUser == null){
try {
response.sendRedirect(request.getContextPath()+"/center/index.jsp");
} catch (Exception e) {
e.printStackTrace();
}
}else{
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile multipartFile = multipartRequest.getFile("files");
InputStream is = multipartFile.getInputStream();
if(is!=null){
Workbook wb = WorkbookFactory.create(is);
CellStyle style = wb.createCellStyle();
style.setFillForegroundColor(IndexedColors.RED.getIndex());
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
List<UserInfo> userInfoList = new ArrayList<UserInfo>();
int rowCount = 0;
boolean temp = true;
try {
Sheet st = wb.getSheetAt(0);
int rowNum = st.getLastRowNum(); //获取Excel最后一行索引,从零开始,所以获取到的是表中最后一行行数减一
int colNum = st.getRow(0).getLastCellNum();//获取Excel列数
for(int r=1;r<=rowNum;r++){//读取每一行,第一行为标题,从第二行开始
rowCount = r;
Row row = st.getRow(r);
UserInfo userInfo = new UserInfo();
for(int l=0;l<colNum;l++){//读取每一行的每一列
Cell cell = row.getCell(l);
if(cell != null){
cell.setCellType(Cell.CELL_TYPE_STRING);
}
if(l != 8 && l != 9){//第9列和第10列(列数是从0开始遍历)分别是身份证号码和工作背景,这两项为选填,其余项全为必填
if(cell != null && !"".equals(cell.toString().trim())){
System.out.print(cell + "\t");
}else{
System.out.print("该项不能为空" + "\t");
temp = false;
//给Excel中为空格的必填项添加背景色
Cell newCell = row.createCell(l);
newCell.setCellStyle(style);
}
}else{//身份证号和工作背景
System.out.print(cell + "\t");
}
if(temp){
switch (l) {
case 0: userInfo.setEmail(cell.getStringCellValue()); break;
case 1: userInfo.setMobilePhone(cell.getStringCellValue()); break;
case 2: userInfo.setPassword(cell.getStringCellValue()); break;
case 3: userInfo.setTrueName(cell.getStringCellValue()); break;
case 4: userInfo.setXingPingyin(cell.getStringCellValue()); break;
case 5: userInfo.setMingPingyin(cell.getStringCellValue()); break;
case 6: userInfo.setSex(cell.getStringCellValue()); break;
case 7: userInfo.setBirthday(cell.getStringCellValue()); break;
case 8: userInfo.setIdCard(cell.getStringCellValue()); break;
case 9: userInfo.setBeijin(cell.getStringCellValue()); break;
case 10: userInfo.setXueli(cell.getStringCellValue()); break;
case 11:
userInfo.setProvinceName(cell.getStringCellValue());
Hospital provinceId = hospitalService.getHospitalByProvince(cell.getStringCellValue());
if(provinceId != null){
userInfo.setProvince(provinceId.getHospitalId()+"");
}
break;
case 12:
userInfo.setCityName(cell.getStringCellValue());
Hospital cityId = hospitalService.getHospitalByCity(cell.getStringCellValue());
if(cityId != null){
userInfo.setCity(cityId.getHospitalId()+"");
}
break;
case 13:
userInfo.setDanwei(cell.getStringCellValue());
break;
case 14: userInfo.setKs(cell.getStringCellValue()); break;
case 15: userInfo.setZhicheng(cell.getStringCellValue()); break;
case 16: userInfo.setZhiwei(cell.getStringCellValue()); break;
case 17: userInfo.setAddress(cell.getStringCellValue()); break;
case 18: userInfo.setZip(cell.getStringCellValue()); break;
case 19: userInfo.setTelphone(cell.getStringCellValue()); break;
}
userInfo.setConferencesId(conId);
userInfo.setFromWhere(code);
userInfo.setCreateTime(new Date());
}
}
System.out.println();
userInfoList.add(userInfo);
}
if(temp){//Excel完全没有问题
webService.saveOrUpdateAll(userInfoList);
state = 1;
msg = "导入成功";
}else{//Excel存在必填项为空的情况
state = 2;
msg = "Excel数据格式有问题,请下载表格,并将其中标红色的部分填写完整";
String filePath = request.getSession().getServletContext().getRealPath("files/excel");
String fileName = DateTime.getDateString(new Date(), "yyyy_MM_dd")+String.valueOf(System.currentTimeMillis()/1000)+".xlsx";
OutputStream out = new FileOutputStream(new File(filePath + "/" + fileName));
wb.write(out);
out.close();
fileUrl = fileUrl + fileName;
}
}catch (Exception e) {
System.out.println("第"+rowCount+"行出错");
msg = "第"+rowCount+"行出错";
e.printStackTrace();
}
}
is.close();
JSONObject result = new JSONObject();
result.accumulate("state",state);
result.accumulate("remark",msg);
result.accumulate("fileUrl",fileUrl);
String urlString = "<script type='text/javascript'>window.parent.insertResult('"+result.toString()+"')</script>";
PrintWriter out = response.getWriter();
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
out.write(urlString);
out.flush();
out.close();
}
} catch (Exception e) {
e.printStackTrace();
try {
JSONObject result = new JSONObject();
result.accumulate("state",0);
result.accumulate("remark","excel数据格式有问题,导入失败");
String urlString ="<script type='text/javascript'>window.parent.insertResult('"+result.toString()+"')</script>";
PrintWriter out = response.getWriter();
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
out.write(urlString);
out.flush();
out.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
java实现导入excel功能的更多相关文章
- 在java poi导入Excel通用工具类示例详解
转: 在java poi导入Excel通用工具类示例详解 更新时间:2017年09月10日 14:21:36 作者:daochuwenziyao 我要评论 这篇文章主要给大家介绍了关于在j ...
- C#语言-NPOI.dll导入Excel功能的实现
前言:刚工作那会,公司有一套完善的MVC框架体系,每当有导入EXCEL功能要实现的时候,都会借用框架里自带的导入方法,一般三下五除二就完成了,快是快,可总是稀里糊涂的,心里很没有底.前几天,在另一个原 ...
- java poi 导入excel
最近项目需要导入excel,网上有很多例子,自己整合记录下,兼容2003和2007,暂时没有添加图片处理功能. 所需jar包 http://pan.baidu.com/s/1sjPuWDR pack ...
- Java POI导入Excel文件
今天在公司需要做个导入Excel文件的功能,所以研究了一下,参考网上的一些资料总算是做出来了,在此记录一下防止以后忘记怎么弄. 本人用的是poi3.8,所以需要的JAR包如下: poi-3.8.jar ...
- java之导入excel
接口: /** * * Description: 导入excel表 * @param map * @param request * @param session * @return * @author ...
- java后端导入excel模板和导入excel文件去读数据
模板转载地址:https://www.cnblogs.com/zhangyangtao/p/9802948.html 直接上代码(我是基于ssm写的demo,导入文件目前只能读取.xls后缀的exce ...
- java如何导入Excel文件
Java使用POI导入Excel文件,操作起来比较简单,支持xlsx格式. 下载POI资源包 从官网https://poi.apache.org/下载POI,笔者选择的是版本是3.17,下载后文件名是 ...
- Java解析导入Excel文件后台代码实现
使用MultipartFile上传Excel文件后端代码实现:(springmvc下的spring-webmvc (MultipartFile )上传) 由于POST一个包含文件上传的Form会以mu ...
- Java实现导入Excel文件
一.配置文件名称.路径.内容: <bean id="multipartResolver" class="org.springframework.web.multip ...
随机推荐
- Spring NoSuchBeanDefinitionException六大原因总结
1. Overview In this article, we are discussing the Springorg.springframework.beans.factory.NoSuchBea ...
- MySQL简单查询语句练习
数据查询语法(DQL) DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端. 语法: SELECT selection_list /*要查询的列名称*/ F ...
- vue query或params传参
1.query 传递端: this.$router.push({ path:"/AccountFP", query:{ id:row.id, userId:row.userId } ...
- H5高德地图获取当前位置
<!doctype html> <html> <head> <meta charset="utf-8"> <meta http ...
- WordCount基本功能
WordCount基本功能 码云地址:https://gitee.com/Joker_zou/WordCount.git 一.项目需求 WordCount的需求可以概括为:对程序设计语言源文件统计字符 ...
- GANs用于文本生成
上学期期末老师给了我本杂志让我好好看看里面的Gans网络是如何应用在文本生成上的,文章里面也没有介绍原理性的东西,只是说了加入这个Gans模型后效果有多好,给出了模型架构图和训练时所用的语料例子,也没 ...
- 加密、签名和SSL握手机制细节
openssl系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.1 背景知识 对称加密 :加密解密使用同一密钥,加解密速度快.随 ...
- 模糊测试(fuzzing)是什么
一.说明 大学时两个涉及“模糊”的概念自己感觉很模糊.一个是学数据库出现的“模糊查询”,后来逐渐明白是指sql的like语句:另一个是学专业课时出现的“模糊测试”. 概念是懂的,不外乎是“模糊测试是一 ...
- JJTree Tutorial for Advanced Java Parsing
The Problem JJTree is a part of JavaCC is a parser/scanner generator for Java. JJTree is a preproces ...
- 2.4 利用FTP服务器下载和上传目录
利用FTP服务器下载目录 import os,sys from ftplib import FTP from mimetypes import guess_type nonpassive = Fals ...