Springboot如何通过jxls导入导出excel

转载自
一、必须的maven依赖(可在jxls的官网上去找最新版本):

   
  
    org.jxls
    jxls
    2.4.6

 


    org.jxls
    jxls-poi
    1.0.15
   

二、设置Excel模板(新建一个Excel文档,按如下步骤设置),将新建的文档放到项目中(本案例是放到项目的resource目录下,其他目录不知道可以不)Springboot如何通过jxls导入导出excel_第1张图片
Springboot如何通过jxls导入导出excel_第2张图片
Springboot如何通过jxls导入导出excel_第3张图片
Springboot如何通过jxls导入导出excel_第4张图片
三、代码编写:
@RequestMapping(value = “exportDeviceModelMsg”,method = RequestMethod.GET)
@ResponseBody
public void exportDeviceModelMsg(HttpServletRequest request, HttpServletResponse response) {

   try {
       List myTestList = myTestService.findAll(); //获取列表数据
       InputStream in = this.getClass().getClassLoader().getResourceAsStream("excel/test.xls");   //得到文档的路径
       //列表数据将存储到指定的excel文件路径,这个路径是在项目编译之后的target目录下
       FileOutputStream out = new FileOutputStream("target/classes/excel/aaaa.xls");
       //这里的context是jxls框架上的context内容
       org.jxls.common.Context context = new org.jxls.common.Context();
       //将列表参数放入context中
       context.putVar("myTestList", myTestList);
       //将List列表数据按照模板文件中的格式生成到scoreOutput.xls文件中
       JxlsHelper.getInstance().processTemplate(in, out, context);

       //下面步骤为浏览器下载部分
       //指定数据生成后的文件输入流(将上述out的路径作为文件的输入流)
       FileInputStream fileInputStream = new FileInputStream("target/classes/excel/aaaa.xls");
       //导出excel文件,设置文件名
       String filename = URLEncoder.encode("test信息.xls", "UTF-8");
       //设置下载头
       response.setHeader("Content-Disposition", "attachment;filename=" + filename);
       ServletOutputStream outputStream = response.getOutputStream();
       //将文件写入浏览器
       byte[] bys = new byte[fileInputStream.available()];
       fileInputStream.read(bys);
       outputStream.write(bys);
       outputStream.flush();
       outputStream.close();
       fileInputStream.close();
       if (file.exists()) {
          file.delete();
        }
   } catch (Exception e) {
       e.printStackTrace();
   }

}

转载自添加链接描述
导入excel数据功能的话
第一步:先确定好Excel导入的格式以及各表格字段值的含义
Springboot如何通过jxls导入导出excel_第5张图片
第二步:定义好解析的XML–videoConfig.xml;

 
 
    
    
videoInfo.index videoInfo.videoName videoInfo.resourceId videoInfo.upload videoInfo.content videoInfo.schoolName

第三步:生成一下解析的实体类PipSysAccount(这个需要根据excel文件的列去手工写一个)
第四步:Controller 接受一个excel文件,然后返回excel的数据

public List setExcel(MultipartFile file) {
    List videoInfoList = new ArrayList();
    try {
        InputStream inputXML = new BufferedInputStream(getClass().getClassLoader().getResourceAsStream("videoConfig.xml"));
        XLSReader mainReader = ReaderBuilder.buildFromXML(inputXML);
        InputStream inputXLS = new BufferedInputStream(file.getInputStream());
        PipSysAccount videoInfo = new PipSysAccount();
        Map beans = new HashMap();
        beans.put("videoInfo", videoInfo);
        beans.put("videoInfoList", videoInfoList);
        XLSReadStatus readStatus = mainReader.read(inputXLS, beans);
        if (readStatus.isStatusOK()) {
            System.err.println("jxls读取Excel成功!");
        }
    } catch (Exception e) {
        System.err.println("格式错误");
    }
    return videoInfoList;
}

xml读取excel有可能会涉及的一些问题



    
        
标题等有6行 两行数据对应一个对象时将endRow改成2`在这里插入代码片`
videoInfo.id videoInfo.loginName videoInfo.status videoInfo.createDatetime videoInfo.loginName videoInfo.pwd

你可能感兴趣的:(java)