angular.js - springMVC导出POI的excel,angularjs接收,但是excel打不开xlsx
问题描述
js导出方法:
$scope.showYes = function () { var needFields = getTheNeedFields(); $http.post('/aa.do?fields='+needFields, {responseType: ’arraybuffer’}).then(function (response) {var data = new Blob([response.data], {type: response.headers(’Content-Type’)});var filename = response.headers(’Content-Disposition’).split(’;’)[1].trim().substr(’filename=’.length);FileSaver.saveAs(data, filename); });};
服务端处理方法:
@RequestMapping('/aa') public void testExportDynamic(HttpServletResponse response) throws IOException {String fileName = System.currentTimeMillis()+'';response.setCharacterEncoding('UTF-8');response.setContentType('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8');response.setHeader('Content-disposition', 'attachment;filename=' + URLEncoder.encode(fileName, 'utf-8')+ '.xlsx');OutputStream os = response.getOutputStream();Map map = new HashMap();String fields = request.getParameter('fields');map.put('fields', fields);//Map对象,带null的对象List<HashMap> result = userDao.loadDatasBySelectionFields(map);XSSFWorkbook workbook = MehtodApis.exportExcelFile(result, fields);//OutputStream os = new FileOutputStream('D:/export2007_' + System.currentTimeMillis() + '.xlsx');//workbook.write(os);os.close(); }
但是下载的文件是这样的:
控制台:
如果我用这种输出的excel到觉得路径下,文件是没问题的。
Map map = new HashMap();String fields = request.getParameter('fields');map.put('fields', fields);//Map对象,带null的对象List<HashMap> result = userDao.loadDatasBySelectionFields(map);XSSFWorkbook workbook = MehtodApis.exportExcelFile(result, fields);OutputStream os = new FileOutputStream('D:/export2007_' + System.currentTimeMillis() + '.xlsx');workbook.write(os);os.close();
神马问题呢?怎么处理好呢?
问题解答
回答1:你断点跟踪查看内存快照看一下你的数据有没有问题和你的打开的excel的版本一致不