以上是解析后下载打开乱码的显现;
我为这个问题查了整整一天都没找到答案;后来慢慢分析最终解决了;
首先通过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;