关于poi解析生成excel文件下载内容乱码问题解决方案以上是解析后下载打开乱码的显现;

我为这个问题查了整整一天都没找到答案;后来慢慢分析最终解决了;

首先通过response响应到页面所以在请求的时候就要指定请求内容:

poi解析代码我就不写了网上一大堆我就说说重点代码如下:

首先前台请求是导致这样乱码的一个主要原因:

正确代码如下:

$http({
                method: 'POST',
                url: 'voltagemanageselect/excelExport',
                params: {
                    'id' : idlist,
                    'fileName' : fileName
                },
                responseType: 'arraybuffer',
                headers: {
                      'Content-type': 'application/vnd.ms-excel'
                }
            }).success(function(response) {
                deferred.resolve(response);

var blob = new Blob([deferred.promise], {type: "application/vnd.ms-excel"});
                 var a = document.createElement("a"); 
                // var fileNames = response.headers("Content-Disposition").split(";")[1].split("filename=")[1];
                 document.body.appendChild(a);
                 a.download = position.fileName;
                 a.href = URL.createObjectURL(blob);
                 a.click();
            }).error(function(response) {
                deferred.reject(response);
            });
 

记住必须要加:responseType这个属性:arraybuffer;不然就会出现我上面的错误了;

然后后台代码:

// 清空response
                response.reset();
                out = new BufferedOutputStream(response.getOutputStream());
                //response.setCharacterEncoding("UTF-8");
                fileName = fileName+".xls";
                response.setContentType("application/x-msdownload");
                response.setHeader("Content-Disposition", "attachment; filename="
                        + URLEncoder.encode(fileName,"UTF-8"));

这里是设置编码格式,响应到页面的;以上就是真确的解决方案,

看看你那个参数没没有加或者错了!针对2003Excel;

 

相关文章: