您的位置:首页 > 其它

execl表格导出问题

2018-01-10 18:27 169 查看
前几天在公司做了一个财务报表的导出,导出的表格模板已经做好了,自己测试的时候也是好的,能正常的通过浏览器直接下载出来。但是移植到项目中的时候,出现了问题,代码没有任何的问题,但是就是不下载模板。经过分析终于把问题给解决了,现在把问题写出来,防止大家有一样的问题。

表格的导出使用的是:

//创建一个HSSFWorkbook对象

HSSFWorkbook wb=new HSSFWorkbook();

//创建HSSFSheet对象

HSSFSheet sheet= wb.createSheet();

sheet.setDefaultRowHeightInPoints(20);

sheet.setDefaultColumnWidth(10);

sheet.setColumnWidth(1, 5000 );

//创建HSSFRow对象

//这个是第一行的东西

HSSFRow row1 = sheet.createRow(0);

row1.createCell(0).setCellValue(“订单APP(公司品牌):”);

//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列

sheet.addMergedRegion(new CellRangeAddress(0,0,0,2));

其余的就不列出来了,就是先把固定的东西,写好,数据封装集合,遍历往里面放。

先来说问题出现的原因:

在页面用的是动态js进行访问的。

在js里面我用的是ajax进行访问,经过debug,确实进入了我们写的controller,,确实流的输出也走完了,代码没有任何问题,但是就是没有下载表格。

我们通过分析浏览器的response输出看到了,确实有数据但是,格式全是乱码的,所以就没有能能够输出来。通过分析因为是ajax请求,他把格式转换为json的格式输出了,不是我们想要的结果,所以就没有下载我们预想的效果。

最后我们换一个请求的方式就可以了。

用location.href=”xxxxxx.do?a=”b;的格式,我们就能正常的进项访问。

相同的问题,有一次在进行一个简单的controller跳转页面,代码全部已经走完了,但是在最后

return 页面的路径的时候,就一直报错handlerMethodInvoker()这个异常,其实也是和刚才这个原因一样。

建议:如果大家要直接跳转页面不用返回给面叶什么数据,就不用ajax了,直接超链接或者用location.href。这样能避免采坑。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: