angular.js - springMVC导出POI的excel,angularjs接收,但是excel打不开xlsx
習慣沉默
習慣沉默 2017-05-15 17:10:34
0
1
781

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 のバージョンと一致しているかどうかを確認します

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート