Aurora 导出 Excel 慢 修改为导出 txt 和 csv

2020年07月28日 523点热度 0人点赞 0条评论

为什么要导出 txt 和 csv文件

当遇到上十万及百万数据量时,导出会非常慢,经常会导不出来。如修改为 txt 和 csv 则会快很多

如何输出 txt 和 csv 文件

项目中遇到大数据量输出 excel 时性能较慢,耗用大量内存,可以考虑采用直接输出 txt 和 csv 格式的方式快速导出数据。

  1. 导出 txt,可在 button 中加入 type='txt' 属性即可。
  2. 导出 csv 可参考附件,按附件中 readme 内容修改系统的 auroa-plugin.jar 文件。导出方式和输出 excel 一样,在点击 “导出” 后弹出选择字段窗口,下面的格式选择 csv 格式就行。
  3. 修改 grid-min.js 文件,resources\aurora.ui.std\default\grid\Grid-min.js 文件中的 excel2003 替换成 csv,且在 if 判断 xls 和 xlsx 后面加上 type = = 'csv' 的判断
 _export : function(type,filename,separator){
  var type1;
        if(type =='xls'){
   type1='csv';
  }else{
   type1=type;
  }
        this.exportOptions = {
            type:type1||'csv',
            filename:filename,
            separator:separator
        }
        this.showExportConfirm();
    }

部分内容可参考如下:

if(type == 'xls' || type== 'xlsx' ){
                height+=30;
                msg.push('<div class="item-radio" class="item-radio" style="margin:15px;width:270px;height:30px">',
                            '<div class="item-radio-option" style="width:128px;float:left" itemvalue="csv">',
                                '<div class="item-radio-img  item-radio-img-',type=='csv'?'c':'u','"></div>',
                                '<label class="item-radio-lb">csv</label>',
                            '</div>',
                            '<div class="item-radio-option" style="width:128px;float:left" itemvalue="xlsx">',
                                '<div class="item-radio-img  item-radio-img-',type=='xlsx'?'c':'u','"></div>',
                                '<label class="item-radio-lb">excel2007</label>',
                            '</div>',
                        '</div>')
            }
            if(type == 'csv' ){
                height+=30;
                msg.push('<div class="item-radio" class="item-radio" style="margin:15px;width:270px;height:30px">',
                            '<div class="item-radio-option" style="width:128px;float:left" itemvalue="xlsx">',
                                '<div class="item-radio-img  item-radio-img-',type=='csv'?'c':'u','"></div>',
                                '<label class="item-radio-lb">csv</label>',
                            '</div>',
                        '</div>')
            }
  1. 有时导出 csv 是为了避免大数据量导出 excel 出现内存溢出,所以在导出时可以考虑在弹出页面中去掉 excel2007 的选项, 或者通过普通按钮调用 js 实现

``javascript
如:function sys1234_grid_csvoutput(){
$('sys1234_result_ds_grid')._export('csv','','');
}

```

浮生一程

读书-行路-悦人-识物