如何在ExtJS4.0中将网格导出到XLS

如何在ExtJS4.0中将网格导出到XLS,extjs,Extjs,有没有一种简单的方法可以将网格数据导出到ExtJS中的XLS 如果不是的话,我正在尝试以下方法 我试图读取控制器内的数据存储。网格已经在使用该数据存储。我希望通过单击按钮读取数据,并通过AJAX将其发送到服务器。稍后在服务器内部,我将检索数据并写入XLS。在这种情况下,我如何读取控制器内的数据 在这里输入代码 Ext.define("MyApp.controller.GridController", { extend : 'Ext.app.Controller', views: ['perfor

有没有一种简单的方法可以将网格数据导出到ExtJS中的XLS

如果不是的话,我正在尝试以下方法

我试图读取控制器内的数据存储。网格已经在使用该数据存储。我希望通过单击按钮读取数据,并通过AJAX将其发送到服务器。稍后在服务器内部,我将检索数据并写入XLS。在这种情况下,我如何读取控制器内的数据

在这里输入代码

Ext.define("MyApp.controller.GridController", {
extend : 'Ext.app.Controller',
views: ['performance.grid.PerformanceGrid'],
models: ['GridModel'],
stores: ['GridStore'],
refs : [{
    ref : 'mainTabPanel',
    selector : 'portal > tabpanel'
}],
init : function() {
     this.control({
         'portal toolbar > button[itemId=xls]' : {
             click : this.onAddTab
         },

         'portal toolbar > button[itemId=pdf]' : {
             click : this.onAddPortlet
         }
     });
},
onAddTab : function(btn, e) {
   // I want to read the datastore here and make an AJAX call
 },

});
我没有测试它,但它必须工作。
祝你好运

我认为这个过程不是最好的,因为您将有3个没有任何意义的有效负载数据往返

调用服务器方法以获取将填充到网格中的数据

然后,包含服务器数据的JSON对象将再次传输到服务器

这对我来说没有意义。。。当服务器是源时,为什么要向服务器发送数据

服务器将处理JSON响应中的对象,然后动态创建文档并将其发送回服务器。 我认为你应该做以下几点:

从服务器获取数据并绑定网格。 获取您的存储代理URL并解析方法和外部参数,这样您就知道谁为网格服务,以及您向服务器请求了什么。 在接收方法和参数数组的服务器上创建公共方法。然后在这个方法中,根据方法的不同,调用数据存储库,即第一个请求获取数据的存储库,处理文档并将文件发送回服务器。 这样你应该有这样的东西:

webmethod(string method, object[] params) {

   switch(method){
      case "GetTestGridData":
           // here you call your Repository in order to get the same data 
           GeneralRepo repo = new GeneralRepo();
           var data = repo.GetTestGridData(object[0],object[1]); 

         break;
   }

   byte[] fileStream = Reports.Common.Generate(data, ExportType.PDF);
   // response the stream to client...

}

我还有一个后续问题。如何读取服务器端的记录?这取决于您使用的技术。我使用的是JAVA。因此AJAX将使用请求和响应参数调用servlet。那么,该记录在请求中是否可用?如果是,那么如何检索?请求中有记录,是。对不起,Java不是我的领域。我在服务器端得到了数据。然后我将同样的内容写入XLS工作簿作为回应。但并没有下载文件的提示。请帮忙。
webmethod(string method, object[] params) {

   switch(method){
      case "GetTestGridData":
           // here you call your Repository in order to get the same data 
           GeneralRepo repo = new GeneralRepo();
           var data = repo.GetTestGridData(object[0],object[1]); 

         break;
   }

   byte[] fileStream = Reports.Common.Generate(data, ExportType.PDF);
   // response the stream to client...

}