开发者社区> 问答> 正文

关于使用PoiRender导出excel的问题?报错

@stu51 你好,想跟你请教个问题:

public class PoiRender extends Render{
 
 private static Logger log = LoggerFactory.getLogger(ExcelUtils.class);
 private final static String CONTENT_TYPE = "application/msexcel;charset=" + getEncoding();
 private List<Record> data;
 private String[] headers;
 private String[] columns;
 private String fileName;
 private String version;
 private int headerRow;
 private int cellWidth;
 
 public PoiRender(List<Record> data) {
        this.data = data;
    }


    public static PoiRender me(List<Record> data) {
        return new PoiRender(data);
    }


 @Override
 public void render() {
 response.reset();
        response.setHeader("Content-disposition", "attachment; filename=" + fileName);
        response.setContentType(CONTENT_TYPE);
        OutputStream os = null;
        try {
            os = response.getOutputStream();
            PoiExporter poi = PoiExporter.data(data);
            poi.version(version).sheetNames("sheet").headerRow(headerRow)
               .headers(headers).columns(columns)
               .cellWidth(cellWidth);
            Workbook wb =  poi.export();
            wb.write(os);
        } catch (Exception e) {
            throw new RenderException(e);
        } finally {
            try {
                if (os != null) {
                    os.flush();
                    os.close();
                }
            } catch (IOException e) {
                log.error(e.getMessage(), e);
            }


        }
 }


 public PoiRender headers(String[] headers){
 this.headers = headers;
 return this;
 }
 
 public PoiRender columns(String[] columns){
 this.columns = columns;
 return this;
 }
 
 public PoiRender fileName(String fileName) {
    this.fileName = fileName;
    return this;
 }


 public PoiRender version(String version) {
    this.version = version;
    return this;
 }
 
 public PoiRender headerRow(int headerRow) {
        this.headerRow = headerRow;
        return this;
    }
 
 public PoiRender cellWidth(int cellWidth) {
        this.cellWidth = cellWidth;
        return this;
    }
}



我调用render方法时,项目能运行,控制台不报错,但是没用excel导出。

PoiRender.me(list).headers(headerName).columns(headerKey).fileName(fileName + ".xls");



这个是调用

展开
收起
爱吃鱼的程序员 2020-06-10 11:24:09 723 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    在控制器中这样弄:

    RenderpoiRender=PoiRender.me(list).headers(headerName).columns(headerKey).fileName(fileName+".xls");render(poiRender);



    找到原因了:前端不支持ajax请求~
    2020-06-10 11:24:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载