Springboot框架jxl.jar工具类处理excle文档

  • 开始写记录之前,先说明,我也是百度了各路大神的办法解决问题,部分代码相似,雷同的是我照着写的,毕竟要创作先模仿嘛!如果侵犯了哪位大神的权益,私信告诉我,我立马删掉!
  • 处理excle问题的话,部分excle的导入功能客户会要求导入的数据要入库。这个要求我做了项目几乎都会有,因为项目之前是有大批的文档数据是没有在之前的数据库里,但是也是不能丢弃的。所以这时候就要处理excle的不同行,不同页的数据了。
  • 首先我接触到了在springboot项目里引入jxl的依赖包,使用XSSFWorkbook处理excle。excle文件的上传我是用了MultipartFile去接收,前端只需一个form表单就很简单的可以上传多个文件。如果要判断上传文件的格式可以在后台适当判断下后缀。以下是代码部分。
  • 这里判断了excle是2003版本还是以上的,03版本用HSSFWorkbook处理,不然会报错。

@RequestMapping(value = “/doexcle”, method = RequestMethod.POST)

public Res UploadExcle(@RequestParam(value = "files", required = false) MultipartFile[] myfile,
                       HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    Res res = new Res();
    
    if (myfile != null && myfile.length > 0) {
        res.setCode(200);
        res.setInfo("导入成功!");
        for (int i = 0; i < myfile.length; i++) {
            MultipartFile file = myfile[i];
            /*InputStream stream = new FileInputStream(file.getInputStream());*/
            //构造函数传参
            try {

                // String prefix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
                //判断是否是03版本的excle(处理03和07不同版本excle)
                boolean is03Excell = file.getOriginalFilename().matches("^.+\\.(?i)(xls)$") ? true : false;
                Workbook workbook = is03Excell ? new HSSFWorkbook(file.getInputStream()) : new XSSFWorkbook(file.getInputStream());

         /*   我自己代码比较多的写法    if (prefix.equals("xls")) {//excle2003版本用HSSDWorkbook解析
                    workbook = new HSSFWorkbook(file.getInputStream());
                } else {//2007excle版本操作用XSSFWorkbook
                    workbook = new XSSFWorkbook(file.getInputStream());
                }*/

                /*   目前暂时引用不了 SXSSFworkbook  sxssFworkbook=new SXSSFworkbook();*/
                // XSSFWorkbook xssfWorkbook = new XSSFWorkbook(file.getInputStream());
                //HSSFWorkbook workbook = new HSSFWorkbook(file.getInputStream());
                //获取工作表
                Sheet sheet = workbook.getSheetAt(0);
                //处理2003版本的
                // HSSFSheet sheet = (HSSFSheet)workbook.getSheetAt(0);
                String totol = "";
                //总行数
                int rowNum = sheet.getPhysicalNumberOfRows();
                //总列数
                int coloumNum = sheet.getRow(0).getPhysicalNumberOfCells();
                for (int r = 0; r < rowNum; r++) {
                    Row row = sheet.getRow(r);
                    for (int c = 0; c < coloumNum; c++) {
                        Cell cell = row.getCell(c);
                        String value = cell == null ? "" : cell.getStringCellValue();//获取某行某列的值---这里的值可以用实体接收判断处理后入库
                        totol += value;
                    }

                }
                System.out.println(totol);
                //获取最后一行
                int lastrow = sheet.getLastRowNum();

                //
            } catch (Exception ex) {
                res.setCode(400);
                res.setInfo("导入失败!");
                System.out.println(ex);
                return res;
            } finally {

            }

        }


    }
    return res;

}

这里是poi.xml引用的依赖

   
    net.sourceforge.jexcelapi
    jxl
    2.6.10
 

这里是前端代码:

      
上传excle:

这里的上传控件的name要和后端接口的 @RequestParam(value = “files”, required = false)一样才能传入文件。enctype="multipart/form-data"这个格式是一定要写的。
基本上以上三部分就可以解决一个excle的数据入库处理。如有不对,请大家指正!

你可能感兴趣的:(工具类的使用)