poi excel导入jeeplus

    xiaoxiao2022-07-05  166

    参考

    https://sarin.iteye.com/blog/845035Apache POI组件操作Excel,制作报表(一)

    辣鸡代码将就看吧

    控制层.java

    /** * 导入Excel数据 * */ @ResponseBody @RequiresPermissions("finance:financefixedassets:financeFixedAssets:import") @RequestMapping(value = "import") public AjaxJson importFile(@RequestParam("file") MultipartFile file, HttpServletResponse response, HttpServletRequest request) { AjaxJson j = new AjaxJson(); try { int successNum = 0; int failureNum = 0; //得到Excel工具类 ExcelUtils excelUtils = new ExcelUtils(); //初始化列表容器 List<FinanceFixedAssets> studentList = new ArrayList<FinanceFixedAssets>();// 返回封装数据的List StringBuilder failureMsg = new StringBuilder(); if (StringUtils.isBlank(file.getOriginalFilename())) { j.setSuccess(false); j.setMsg("导入固定资产管理失败!失败信息:"); } //解析excel为对象列表 studentList = excelUtils.ExcelUtilsFinanceFixedAssets(file); for (FinanceFixedAssets atbut : studentList) { //前四项无值不允许转换 if(atbut.getAssetsName()!=null&&atbut.getAssetsPrice()!=null&&atbut.getProcurementDate()!=null&&atbut.getAssetsCount()!=null) { try { // 资产编号设置,放置修改 if (atbut.getIsNewRecord()) { atbut.setAssetsNo(genAssetCode()); } else { FinanceFixedAssets oldAssert = financeFixedAssetsService.get(atbut.getId()); atbut.setAssetsNo(oldAssert.getAssetsNo()); } financeFixedAssetsService.save(atbut); successNum++; } catch (ConstraintViolationException ex) { failureNum++; } catch (Exception ex) { failureNum++; } } } if (failureNum > 0) { failureMsg.insert(0, ",失败 " + failureNum + " 条固定资产管理记录。"); } j.setMsg("已成功导入 " + successNum + " 条固定资产管理记录" + failureMsg); } catch (Exception e) { j.setSuccess(false); j.setMsg("导入固定资产管理失败!失败信息:" + e.getMessage()); } return j; }

    ExcelUtils工具类.java

    public List<FinanceFixedAssets> ExcelUtilsFinanceFixedAssets(MultipartFile file) { String cellStr = null;// 单元格,最终按字符串处理 FinanceFixedAssets student = null;// 每一个学生信息对象 Date date = null; List<FinanceFixedAssets> studentList = new ArrayList<FinanceFixedAssets>();// 返回封装数据的List if (file.getOriginalFilename().toLowerCase().endsWith("xls")) { HSSFWorkbook wb = null; try { wb = new HSSFWorkbook(file.getInputStream()); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } System.out.println("*************xsl******************"); // 得到对象 //System.out.println("****************xslx******************"); // 拿到第一个sheet页 HSSFSheet xssfSheet = wb.getSheetAt(0); // 遍历行 for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) { HSSFRow xssfRow = xssfSheet.getRow(rowNum); if (xssfRow == null) { continue; } student = new FinanceFixedAssets();// 实例化Student对象 // 便利单元格 for (int cellNum = 0; cellNum <= xssfRow.getLastCellNum(); cellNum++) { HSSFCell cell = xssfRow.getCell(cellNum); if (cell == null) { cellStr = ""; continue; } else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {// 对布尔值的处理 cellStr = String.valueOf(cell.getBooleanCellValue()); } else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {// 对数字值的处理 if (cellNum == 3) { date = cell.getDateCellValue(); } else { cellStr = cell.getNumericCellValue() + ""; } } else {// 其余按照字符串处理 cellStr = cell.getStringCellValue(); } // 下面按照数据出现位置封装到bean中 switch (cellNum) { case 0: // *资产名称 student.setAssetsName(cellStr); break; case 1: // *资产价格 student.setAssetsPrice(cellStr); break; case 2: // *资产数量 student.setAssetsCount(cellStr); break; case 3: // *采购日期 try { student.setProcurementDate(date); } catch (Exception e) { System.out.println("what????日期解析不了"); } break; case 4: // 资产型号 student.setSpecification(cellStr); break; case 5: // SN码 student.setSn(cellStr); break; case 6: // 单位 student.setAssetsUnit(cellStr); break; case 7: // 资产品牌 student.setAssetsBrand(cellStr); break; case 8: // 备注 student.setRemarks(cellStr); break; default: } } studentList.add(student);// 数据装入List } } else if (file.getOriginalFilename().toLowerCase().endsWith("xlsx")) { // 得到对象 XSSFWorkbook wb = null; try { wb = new XSSFWorkbook(file.getInputStream()); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } System.out.println("****************xslx******************"); // 拿到第一个sheet页 XSSFSheet xssfSheet = wb.getSheetAt(0); // 遍历行 for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) { XSSFRow xssfRow = xssfSheet.getRow(rowNum); if (xssfRow == null) { continue; } student = new FinanceFixedAssets();// 实例化Student对象 // 便利单元格 for (int cellNum = 0; cellNum <= xssfRow.getLastCellNum(); cellNum++) { XSSFCell cell = xssfRow.getCell(cellNum); if (cell == null) { cellStr = ""; continue; } else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {// 对布尔值的处理 cellStr = String.valueOf(cell.getBooleanCellValue()); } else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {// 对数字值的处理 if (cellNum == 3) { date = cell.getDateCellValue(); } else { cellStr = cell.getNumericCellValue() + ""; } } else {// 其余按照字符串处理 cellStr = cell.getStringCellValue(); } // 下面按照数据出现位置封装到bean中 switch (cellNum) { case 0: // *资产名称 student.setAssetsName(cellStr); break; case 1: // *资产价格 student.setAssetsPrice(cellStr); break; case 2: // *资产数量 student.setAssetsCount(cellStr); break; case 3: // *采购日期 try { student.setProcurementDate(date); } catch (Exception e) { System.out.println("what????日期解析不了"); } break; case 4: // 资产型号 student.setSpecification(cellStr); break; case 5: // SN码 student.setSn(cellStr); break; case 6: // 单位 student.setAssetsUnit(cellStr); break; case 7: // 资产品牌 student.setAssetsBrand(cellStr); break; case 8: // 备注 student.setRemarks(cellStr); break; default: } } studentList.add(student);// 数据装入List } } return studentList; }

    js代码

    $("#btnImport").click(function(){ jp.open({ type: 2, area: [500, 200], auto: true, title:"导入数据", content: "${ctx}/tag/importExcel" , btn: ['下载模板','确定', '关闭'], btn1: function(index, layero){ jp.downloadFile('${ctx}/../webpage/modules/finance/financefixedassets/template/固定资产导入模板.xlsx'); }, btn2: function(index, layero){ var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method(); iframeWin.contentWindow.importExcel('${ctx}/finance/financefixedassets/financeFixedAssets/import', function (data) { if(data.success){ jp.success(data.msg); refresh(); }else{ jp.error(data.msg); if(data.body != null && data.body != undefined){ window.location.href = data.body.url; } } jp.close(index); });//调用保存事件 return false; }, btn3: function(index){ jp.close(index); } }); });

    html

    <!-- 工具栏 --> <div id="toolbar"> <shiro:hasPermission name="finance:financefixedassets:financeFixedAssets:add"> <button id="add" class="btn btn-primary" onclick="add()"> <i class="glyphicon glyphicon-plus"></i> 新建 </button> </shiro:hasPermission> <shiro:hasPermission name="finance:financefixedassets:financeFixedAssets:edit"> <button id="edit" class="btn btn-success" disabled onclick="edit()"> <i class="glyphicon glyphicon-edit"></i> 修改 </button> </shiro:hasPermission> <shiro:hasPermission name="finance:financefixedassets:financeFixedAssets:import"> <button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button> </shiro:hasPermission> <shiro:hasPermission name="finance:financefixedassets:financeFixedAssets:del"> <button id="remove" class="btn btn-danger" disabled onclick="deleteAll()"> <i class="glyphicon glyphicon-remove"></i> 删除 </button> </shiro:hasPermission> <%-- <shiro:hasPermission name="finance:financefixedassets:financeFixedAssets:view"> --%> <!-- <button id="view" class="btn btn-default" disabled οnclick="view()"> --> <!-- <i class="fa fa-search-plus"></i> 查看 --> <!-- </button> --> <%-- </shiro:hasPermission> --%> </div>

    下边的是被参考内容


    Apache POI组件操作Excel,制作报表(一) 博客分类: • 探索实践 ExcelApacheOfficeBeanJ# Apache的POI组件是Java操作Microsoft Office办公套件的强大API,其中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel,因为Word和PowerPoint用程序动态操作的应用较少。那么本文就结合POI来介绍一下操作Excel的方法。 Office 2007的文件结构完全不同于2003,所以对于两个版本的Office组件,POI有不同的处理API,分开使用即可。首先来说几个Excel的基本概念。对于一个Excel文件,这称为一个工作簿(Workbook),打开Excel之后,在下方会有sheet1/2/3这样的选项卡,点击可以切换到不同的sheet中,这个sheet称作工作表。每个工作表就是我们编辑的区域,这是一张二维表,阿拉伯数字控制行数,从1开始,而程序中还是0,类似数组和集合。字母控制列数,从A开始,Z以后是两个字母控制。对于每一行,我们称为Row,列就是Column,行列可以确定唯一的一个元素,那么就是单元格,称为Cell。 POI组件可以方便的操纵这些元素,但初次接触POI可能会有畏惧心理,因为要对每个单元格进行设置,那么不管是用数组还是集合,从工作簿,工作表,行下来的代码量都不会小,这是不能避免的,但是按照这个处理顺序走,就一定可以得到结果。 有了这些基础的概念之后,我们就可以操作Excel了。先来看一下所需的依赖,因为涉及到2007,就要额外加一些依赖。 下面从读取Excel开始,首先建立一个Excel 2003以下版本的xls文件。设定几列来看。来存储学生信息的Excel表如下: 这里的姓名,性别和班级是文本值,而年龄和成绩是数字值,这在设计对象和处理时要注意区分。那么可以如下设计这个对象:

    最新回复(0)