java 使用 Jxls实现Execl的导出和 POI实现导入

794 阅读1分钟
  1. 数据的导出实现
    1. 数据导出模板 放在resource/export/blog_vo.xlsx
      1. XLS Area定义标记

        XLS Area 是JxlsPlus中的一个重要概念,它代表excel模板中需要被解析的矩形区域,由A1到最后一个单元格表示,有利于加快解析速度。XLS Area 使用excel注释标注表示,它需要被定义在excel 模板的第一个单元格(A1): Snipaste_2022-07-23_15-44-35.png

    2. 导入jxls的maven坐标
       <dependency>
           <groupId>org.jxls</groupId>
           <artifactId>jxls</artifactId>
           <version>2.10.0</version>
       </dependency>
       //使用模板一定要导入poi包
       <dependency>
           <groupId>org.jxls</groupId>
           <artifactId>jxls-poi</artifactId>
           <version>2.10.0</version>
       </dependency>
      
    3. 编写代码
      @Test
      public void exportExecl() throws IOException {
          //文件导出路径 及 文件输出流
          FileOutputStream fileOutputStream = new FileOutputStream("C:\Users\DBC20220605\Desktop\blog导出.xlsx");
          //需要导出的数据
          List<BlogVO> blogVo = blogRepository.findBlogVo();
          //获取模板输入流
          InputStream templateIs = this.getClass().getClassLoader().getResourceAsStream("export/blog_vo.xlsx");
          //创建内容主体
          Context context=new Context();
          //map映射模板注释里面名字
          context.putVar("map",blogVo);
          //导出
          JxlsHelper.getInstance().processTemplate(templateIs,fileOutputStream,context);
      }
      
  2. 数据的导入实现
    1. 需要导入的数据如下 image.png

    2. maven仓库地址

      <!--excel数据导入-->
      <dependency>
          <groupId>org.apache.poi</groupId>
          <artifactId>poi</artifactId>
          <version>4.1.2</version>
      </dependency>
      
    3. 编写代码

      @Test
      public void readerExecl() throws FileNotFoundException {
          List<BlogVO> list = new ArrayList<BlogVO>();
          //如果是xls,使用HSSFWorkbook;如果是xlsx,使用XSSFWorkbook
          XSSFWorkbook workbook = null;
          //文件导入流
          try {
              // 读取Excel文件
              InputStream inputStream = new FileInputStream("C:\Users\DBC20220605\Desktop\blog导出.xlsx");
              workbook = new XSSFWorkbook(inputStream);
              inputStream.close();
          } catch (Exception e) {
              e.printStackTrace();
          }
          // 循环工作表   就一个工作表
          XSSFSheet sheetAt = workbook.getSheetAt(0);
          //遍历行 从二行开始,表头不需要
          for (int rowNum=1;rowNum<=sheetAt.getLastRowNum();rowNum++){
              XSSFRow row = sheetAt.getRow(rowNum);
              if(Objects.isNull(row)){
                  continue;
              }
              //获取内容
              BlogVO blogVO = new BlogVO();
              XSSFCell cell = row.getCell(0);
              //XSSFCell对象可以返回对应的类型值
              blogVO.setUserId(cell.getStringCellValue());
              cell = row.getCell(1);
              blogVO.setTitle(cell.getStringCellValue());
              cell = row.getCell(2);
              blogVO.setAuthor(cell.getStringCellValue());
              list.add(blogVO);
          }
          list.forEach(System.out::println);
      }
      
    4. 成功打印 image.png