• windows 导出excel不会报错 ,部署到Liunx 导出excel报错


      注意:excel模板需要放在resources下面   

     

         

           // 读取文件路径要写成这个样子在liunx才不会报错

    ClassPathResource classPathResource = new ClassPathResource("static/sexcelTelemp.xls");
              InputStream   inputStream1 = classPathResource.getInputStream();
            //导出列表名
    String fileName = "aa.xls";

    //文件名称统一编码格式
    fileName = URLEncoder.encode(fileName, "utf-8");
    //生成的导出文件
    File destFile = File.createTempFile(fileName, ".xls");

    //transformer转到Excel
    XLSTransformer transformer = new XLSTransformer();
    BufferedInputStream bis = null;
    BufferedOutputStream bos = null;
    try {
    // 传入流文件和数据
    Workbook workbook = transformer.transformXLS(inputStream1, beans);
    OutputStream os = new BufferedOutputStream(new FileOutputStream(destFile.getAbsoluteFile()));
    workbook.write(os);
    inputStream1.close();
    os.flush();
    os.close();
    //将文件输入
    InputStream inputStream = new FileInputStream(destFile);
    // 设置response参数,可以打开下载页面
    response.reset();
    //设置响应文本格式
    response.setContentType("application/vnd.ms-excel;charset=utf-8");
    response.setHeader("Content-Disposition",
    "attachment;filename=" + new String((fileName + ".xls").getBytes(), "iso-8859-1"));
    //将文件输出到页面
    ServletOutputStream out = response.getOutputStream();
    bis = new BufferedInputStream(inputStream);
    bos = new BufferedOutputStream(out);
    byte[] buff = new byte[2048];
    int bytesRead;
    // 根据读取并写入
    while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
    bos.write(buff, 0, bytesRead);
    }
    } catch (ParsePropertyException | InvalidFormatException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally {
    //使用完成后关闭流
    try {
    if (bis != null)
    bis.close();
    if (bos != null)
    bos.close();
    } catch (IOException e) {
    }

    }
  • 相关阅读:
    配置struts2拦截器
    <global-results>标签来定义全局的<result>
    StringUtils.isEmpty和StringUtils.isBlank用法
    Tomcat xxx unbound
    getRequestDispatcher()和response.sendRedirect()
    转 intValue()的用法
    jspf与jsp的区别
    table标签中thead、tbody、tfoot的作用
    hibernate的cascade
    hibernate 持久化对象的三个状态
  • 原文地址:https://www.cnblogs.com/bt2882/p/11599975.html
Copyright © 2020-2023  润新知