java execl 导入功能实现

tech2023-05-16  105

今天项目经理发我一堆数据让导入到数据库  因为是二期开发 所以要把一期的项目导入数据库 跑到生产库中  。

代码如下:

@Override public int importExcel(MultipartFile file, String Name) { //1.创建输入流 Workbook workbook = null; try { //2007 workbook = new XSSFWorkbook(file.getInputStream()); //2.读取工作表 Sheet sheet = workbook.getSheetAt(0); //3.读取行 //判断行数大于1,是因为数据从第2行开始插入 if(sheet.getPhysicalNumberOfRows() > 1) { OrderLabel orderLabel = null; //跳过前1行 for(int k=1;k<sheet.getPhysicalNumberOfRows();k++ ) { //读取单元格 Row row0 = sheet.getRow(k); orderLabel = new OrderLabel(); //部门id 如果就是一个部门的导入 就直接写 如果不是 就把我注释解开 上一句注释掉 Cell cell0 = row0.getCell(0); orderLabel.setDepartmentId(11); //orderLabel.setDepartmentId(Integer.valueOf(cell0.getStringCellValue())); //部门下的组 我这有两个组 就用三元运算了 他们是父子 pid 就是父id了 Cell cell1 = row0.getCell(1); orderLabel.setPid(cell1.getStringCellValue().equals("一组")?3:2); //父名称 Cell cell2 = row0.getCell(2); //判断父节点是否存在 OrderLabel orderLabel1 = new OrderLabel(); orderLabel1.setDepartmentId(11); orderLabel1.setPid(cell1.getStringCellValue().equals("一组")?3:2); orderLabel1.setName(cell2.getStringCellValue()); OrderLabel orderLabel2 = torderLabelMapper.verifyType(orderLabel1); if(orderLabel2==null){ orderLabel.setName(cell2.getStringCellValue()); //时间就是导入时间 如果有给就加上 orderLabel.setDate(new Date()); //状态码 1是没有删除 orderLabel.setDeleteState(1); //添加进后会返回数据 取id 为子节点pid torderLabelMapper.insert(orderLabel); //子名称 Cell cell3 = row0.getCell(3); OrderLabel orderLabel3 = new OrderLabel(); orderLabel3.setPid(orderLabel.getId()); orderLabel3.setName(cell3.getStringCellValue()); //时间就是导入时间 如果有给就加上 orderLabel3.setDate(new Date()); //状态码 1是没有删除 orderLabel3.setDeleteState(1); orderLabel3.setDepartmentId(11); torderLabelMapper.insert(orderLabel3); } //子名称 Cell cell3 = row0.getCell(3); orderLabel.setDate(new Date()); //状态码 1是没有删除 orderLabel.setDeleteState(1); orderLabel.setName(cell3.getStringCellValue()); //添加进后会返回数据 取id 为子节点pid orderLabel.setPid(orderLabel2.getId()); //添加进数据库 torderLabelMapper.insert(orderLabel); } } workbook.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return 1; }

controller层

@PostMapping("/importExcel") public int importExcel(@RequestParam(value = "file") MultipartFile file, @RequestParam(value = "name")String name) { return orderLabelService.importExcel(file, name); }

只是一个简单的导入 数据功能  一次性的 也没做的多复杂  写的不对的地方  欢迎大佬指教  菜鸟一枚。

最新回复(0)