从extjs grid

时间:2016-07-26 12:46:36

标签: servlets extjs

我想将extjs网格内容导出到excel文件。所以我已经做了: 我通过Ext.Ajax.request发送到网格的servlet json内容,如

Ext.Ajax.request({
        url : 'ExportToExcel',
        method:'POST',
        jsonData: this.store.proxy.reader.rawData,
        scope : this,
        success : function(response,options) {
            this.onExportSuccess(response, options);
        },
        //method to call when the request is a failure
        failure: function(response, options){
            alert("FAILURE: " + response.statusText);
        }
    });

然后在servlet中我让servlet中的json做一些事情,例如创建excel文件,将其转换为bytes数组并尝试进行响应。 在Ext.Ajax.request成功方法中,当我尝试做这样的事情时:

var blob = new Blob([response.responseText], { type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet});

var downloadUrl = window.URL.createObjectURL(blob);
var a = document.createElement("a");
a.href = downloadUrl;
a.download = filename;
document.body.appendChild(a);
a.click();

它会下载excel文件,但是当我打开它时会发生错误,说格式或扩展名无效。

WHY ?? 是否可能取决于编码? 我做错了什么?

1 个答案:

答案 0 :(得分:0)

Ext内置了一个excel导出器。您可能想尝试使用它来查看是否获得了预期的结果

  grid.saveDocumentAs({
    type: 'excel',
    title: 'My Excel Title',
    fileName: 'MyExcelFileName.xml'
});

来自工具包:Ext.grid.plugin.Exporter