java上传Excel实现数据的导入
来源:互联网 发布:灌篮高手 知乎 编辑:程序博客网 时间:2024/05/21 10:17
本diors开发此功能是源于公司对于客户信息的导入功能,让运营人员可以将excel中的数据通过excel上传,导入到数据库系统中。经过总结,主要思路分为如下四个步骤:
1,(html部分自行脑补)在控制器里面创建List<HashMap<String,String>>准备接收所上传的Excel中的数据。
2,创建导出需要的工具类进行对数据处理,getDataForActivityAward(InputStream inputstream, int number) ,其中number用于指定每行读取到的截止位置。
3,将inputstream存入 Workbook对象,并通过三层for循环遍历sheet、row、cell。将每个cell存入map,最终用于返回Controller。
4,将接受到的list集合遍历,并将每个map中的素有元素一次获取到复制给model的对应属性,并将model数据存入到对应的数据库中。
代码部分如下:
jQuery校验:
/*检验上传文件是否为空、是否为excel文件、然后异步提交form*/if($("#userExcel").val() == ''){alert("请先选择需要导入的Excel文件");return;}var v = $("#userExcel").val();if(v.lastIndexOf(".xlsx") < 0 || v.lastIndexOf(".xls") < 0){alert("请导入Excel文件");return;} $("#myformId").ajaxSubmit({ type:"post", url:"${base}/admin/addActivityAwardNew", success:function(data){ alert(data); window.location.href="${base}/admin/activityAwardNew"; } });Controller内对数据的接收与处理:
try {List<HashMap<String,String>> list = ExportUtil.getDataForActivityAward(userExcel.getInputStream(),5);if(list != null && list.size() > 0){ActivityAwardRecord aar = new ActivityAwardRecord();for(Map<String,String> map : list){if(StringUtils.isNotBlank(map.get("0")) &&StringUtils.isNotBlank(map.get("1")) &&StringUtils.isNotBlank(map.get("2")) &&StringUtils.isNotBlank(map.get("3")) &&StringUtils.isNotBlank(map.get("4")) &&StringUtils.isNotBlank(map.get("5")) ){aar.setAwardId(awardId);aar.setMobile(map.get("1"));aar.setUserName(map.get("2"));aar.setAwardType(map.get("3"));aar.setAwardContent(map.get("4"));aar.setAwardMoney(new BigDecimal(map.get("5")));activityAwardRecordXService.addActivityAwardRecord(aar);}}return "添加活动奖励成功";}else{return "Excel表数据有误或为空";}} catch (IOException e) {e.printStackTrace();return e.getMessage();}util工具类对excel数据的遍历和获取:
public static List<HashMap<String,String>> getDataForActivityAward(InputStream inputstream,int number) {List<HashMap<String, String>> list = new ArrayList<HashMap<String,String>>();HashMap<String,String> map = new HashMap<String,String>();if(inputstream == null ){return list;}try {Workbook wb = WorkbookFactory.create(inputstream);int sheetNum = wb.getNumberOfSheets();Sheet sheet = null;for(int sheetIndex = 0;sheetIndex<sheetNum;sheetIndex++){//遍历sheet(index 0开始)sheet = wb.getSheetAt(sheetIndex);Row row = null;int firstRowNum = sheet.getFirstRowNum()+1;int lastRowNum = sheet.getLastRowNum();for (int rowIndex = firstRowNum;rowIndex<=lastRowNum;rowIndex++ ) {//遍历row(行 0开始)row = sheet.getRow(rowIndex);if(null != row){int firstCellNum = row.getFirstCellNum();int lastCellNum = row.getLastCellNum();for (int cellIndex = firstCellNum; cellIndex < lastCellNum; cellIndex++) {//遍历cell(列 0开始)Cell cell = row.getCell(cellIndex, Row.RETURN_BLANK_AS_NULL);Object cellValue = null;if (null != cell) {switch (cell.getCellType()) {case Cell.CELL_TYPE_STRING:cellValue = cell.getRichStringCellValue().getString();break;case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { cellValue= cell.getDateCellValue(); } else { //此处对数字格式的数据转换为字符串,否则会出现科学计数法的显示。也可以使用“模板中设置单元格格式的方法避免” DecimalFormat df = new DecimalFormat("#"); cellValue=df.format(cell.getNumericCellValue()).toString(); } break;case Cell.CELL_TYPE_BOOLEAN:cellValue = cell.getBooleanCellValue();break;case Cell.CELL_TYPE_FORMULA:cellValue = cell.getCellFormula();break;default:System.out.println("not find match type.");}System.out.println("value:"+cellValue);map.put(cellIndex+"", cellValue +"");if(cellIndex == number){list.add(map);map = new HashMap<String,String>();}} else {//TODO cell is null 用 *** 代替输出}}//end cell}else{//TODO row is null}}//end row}//end sheetSystem.out.println(list.toString());System.out.println(list.size());} catch (Exception e) {e.printStackTrace();}return list;}
以上仅为本diors对这个小需求的开发总结,如有不做欢迎指正,在csdn第一遍博客,希望以后可以在这里和大家多交流,期待成长!
1 0
- java上传Excel实现数据的导入
- java 实现的excel数据导入及导入模板下载
- Excel实现上传 导入 解析Excel 页面展示Excel数据
- Java上传Excel文件导入数据
- java实现excel文件上传,解析,导入
- java 实现的excel数据的导入导出
- php调用java不能实现excel数据的导入导出?
- java 实现excel中的数据导入到数据库的功能
- Java利用POI实现数据的Excel导入
- java 实现excel中的数据导入到数据库的功能
- java 实现excel中的数据导入到数据库的功能
- java实现excel数据导入到数据库
- java代码实现excel数据导入数据库
- java 实现Excel数据导入数据库
- java实现灵活导入excel数据
- Java实现Excel表格数据批量导入
- thinkphp实现excel数据的导入导出
- thinkphp实现excel数据的导入导出
- Android数据库更新解释
- Linux文件系统基础之inode和dentry
- 【ffmpeg】——批量合并视频
- [已解决]findviewbyid android.content.res.Resources$NotFoundException
- javascript学习之日期 字符串(15)—— 时间和日期 常用方法
- java上传Excel实现数据的导入
- 文章标题
- hellovr sample
- 归并排序
- 深入解读A/B 测试的统计学原理
- RollViewPager图片轮播效果开源框架的使用
- JS清除网页历史记录,屏蔽后退按钮
- h5里不规则图形的点击事件的解决方案
- sql中截取连个字符串之间的数据