Java实现从网页上传导入excel数据到数据库
发布时间:2018-10-31 00:55,
浏览次数:566
, 标签:
Java
excel
一晃已经是十月份的最后一天了,时间过得很快...
项目中通过excel往数据库批量导入的功能颇为常见,所以今天整理出来一份简单的例子,为了以后方便使用,同时也为大家实现功能作为一个参考,该框架采用SSM,可以结合自身业务修改即可使用
Spring配置文件加载解析器(文件上传)
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
name="maxInMemorySize" value="4096" />
HTML界面
enctype="multipart/form-data">
type="text" name="uploadfile" id="uploadfile" readonly nullmsg="请添加附件!"
style="width:200px"> 浏览文件
multiple name="file" class="input-file" id="file">
class="row cl">
type="button"> 导入数据
onClick="cancel();" class="btn btn-default radius"
type="button"> 取消
的JavaScript的代码
/*导入数据*/ function importUsers(){ //var clientid = $("#clientid").val(); var
FormDatas=new FormData($("#form-article-add")[0]); var
fileName=$("#file").val(); if(fileName == '') { layer.msg('请选择文件!',{
icon:MSG_CHECK, time:MSG_TIME }); return false; } //验证文件格式 var fileType =
(fileName.substring(fileName.lastIndexOf(".") + 1,
fileName.length)).toLowerCase(); if (fileType != 'xlsx') {
layer.msg('文件格式不正确!',{ icon:MSG_CHECK, time:MSG_TIME }); return false; }
$.ajax({ type:'post', url:'', async : false, cache : false, contentType :
false, processData : false, data:FormDatas, success: function(data){ if(data ==
"error"){ layer.msg("文件导入失败,请重新上传!", { icon: OPER_SB, shade: [0.3, '#393D49'],
// 透明度 颜色 time:5000 }); return false; }else{ layer.msg("文件导入成功!", { icon:
OPER_CG, shade: [0.3, '#393D49'], // 透明度 颜色 time:5000 });
window.location.reload(); return false; } }, error : function(data){
console.log(data.msg); } }); }
sqlserver-表结构
控制器代码
/** * 导入学员清单 * @param file * @param clientid * @return * @throws IOException
*/ @RequestMapping("importUsers") @ResponseBody public String
importUsers(@RequestParam MultipartFile file,Integer
clientid,HttpServletRequest request) throws IOException{ boolean FLAG;//身份状态
List list = new ArrayList(); XSSFWorkbook workbook =null;
//把MultipartFile转化为File CommonsMultipartFile cmf= (CommonsMultipartFile)file;
DiskFileItem dfi=(DiskFileItem) cmf.getFileItem(); File
fo=dfi.getStoreLocation(); //创建Excel,读取文件内容 workbook = new
XSSFWorkbook(FileUtils.openInputStream(fo)); //获取第一个工作表 XSSFSheet sheet =
workbook.getSheet("学员信息"); //获取sheet中第一行行号 int firstRowNum =
sheet.getFirstRowNum(); //获取sheet中最后一行行号 int lastRowNum =
sheet.getLastRowNum(); try { //循环插入数据 for(int
i=firstRowNum+1;i<=lastRowNum;i++){ XSSFRow row = sheet.getRow(i); Users users
= new Users(); users.setClientid(clientid); users.setAdddate(date);
users.setStatus(true);//默认为启用状态 XSSFCell username = row.getCell(0);//学员名称
if(username!=null){ username.setCellType(Cell.CELL_TYPE_STRING);
users.setUsername((username.getStringCellValue())); } XSSFCell phone =
row.getCell(1);//联系方式 if(phone!=null){
phone.setCellType(Cell.CELL_TYPE_STRING);
users.setPhone((phone.getStringCellValue())); } XSSFCell post =
row.getCell(2);//职位 if(post!=null){ post.setCellType(Cell.CELL_TYPE_STRING);
users.setPost((post.getStringCellValue())); } XSSFCell identitys =
row.getCell(3);//身份 if(identitys!=null){
identitys.setCellType(Cell.CELL_TYPE_STRING);
if(identitys.getStringCellValue().equals("学员")){ FLAG = false; }else{ FLAG =
true; } users.setIdentitys(FLAG); } list.add(users); }
//usersMapper.insert(list);//往数据库插入数据 } catch (Exception e) {
e.printStackTrace(); } finally { workbook.close(); } }
Excel中中的模板
选择的Excel文件上传,看数据是否导入数据库
通用的工具类 :
Java 使用 Poi 导入 Excel 通用(一)
Java 使用 Poi 导出 Excel 通用(二)