2015-02-10 55 views
0

在导出为CSV文件,文件越来越下载,但与名称为下载和不带扩展名, 我试图寻找解决方案,但没没有。在导出为CSV文件,文件越来越下载,但有名字的下载和没有扩展

下面是代码。如果我重命名文件并将其另存为csv,则会显示正确的数据

  _addPrintButton: function() { 
       var me = this; 
       this.down('#print_button_box').add({ 
        xtype: 'rallybutton', 
        itemId: 'print_button', 
        text: 'Export to Excel', 
        disabled: false, 
        margin: '20 10 10 0', 
        region: "right",       
        handler: function() { 
         me._onClickExport(); 
        } 
       }); 
      }, 
      _onClickExport: function(){ 
       var grid = this.down('#grid_box'); 
       var data = this._getCSV(grid.items.items[0]); 
       window.location = 'data:text/csv;charset=utf8,' + encodeURIComponent(data); 
       //Ext.getBody().unmask();    
      }, 
      _getCSV: function (grid) { 
       var cols = grid.columns; 
       var store = grid.store; 
       var data = ''; 
       var that = this; 
       _.each(cols, function(col, index) { 
        data += that._getFieldTextAndEscape(col.text) + ','; 
       }); 
       data += "\r\n"; 
       _.each(that.records, function(record) { 
        _.each(cols, function(col, index) { 
         var text = ''; 
         var fieldName = col.dataIndex; 
         text = record[fieldName]; 
         if (text || text == 0) { 
          //text = record[fieldName]; 
          data += that._getFieldTextAndEscape(text) + ','; 
         } 
         /*else if (fieldName === "Project") { 
          text = record[fieldName]; 
         } 
         else if (fieldName === "Case") { 
          var size = _.size(record[fieldName]); 
          for (var i = 0; i < size; i++){ 
           text = record[fieldName][i] 
          } 
         }*/ 
        }); 
        data += "\r\n"; 
       }); 
       return data; 
      }, 
      _getFieldTextAndEscape: function(fieldData) { 
       var string = this._getFieldText(fieldData); 
       return this._escapeForCSV(string); 
      }, 
      _getFieldText: function(fieldData) { 
       var text; 
       if (fieldData === null || fieldData === undefined) { 
        text = ''; 
       } else if (fieldData._refObjectName) { 
        text = fieldData._refObjectName; 
       }else { 
        text = fieldData; 
       } 
       return text.toString(); 
      }, 
      _escapeForCSV: function(string) { 
       if (string.match(/,/)) { 
        if (!string.match(/"/)) { 
         string = '"' + string + '"'; 
        } else { 
         string = string.replace(/,/g, ''); 
        } 
       } 
       return string; 
      },    

回答

1

您正在搜索错误的地方。
网络服务器必须添加HTTP报头Content-Disposition以指示推荐的文件名,例如,

Content-Disposition: attachment; filename="correct_data.csv" 
+0

感谢您的答复,但如果你要我把这个我试过像这样'了window.location =“内容处置:附件;文件名=‘correct_data.csv’的charset = UTF8,” + encodeURIComponent方法(数据);'但它不正确 – Sontya 2015-02-11 08:17:06

+1

它在答案中说。 “Web服务器必须添加HTTP标头”。 – 2015-02-11 09:30:02