Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery或Java生成大文件的最佳方法_Java_Jquery_Csv_File_Xls - Fatal编程技术网

使用jQuery或Java生成大文件的最佳方法

使用jQuery或Java生成大文件的最佳方法,java,jquery,csv,file,xls,Java,Jquery,Csv,File,Xls,我正在用jQuery和Java开发一个web应用程序。我的任务是用一些数据库记录制作一份报告。报告必须能够以csv、xls和txt格式下载。文件的记录数是可变的,但有时太大,比如一千万条记录 我有两个问题: 第一:制作大文件的最佳选择是什么,Java还是jQuery 第二:你能给我一个实施的例子吗 我目前已经在jQuery中实现了csv格式的报告,它工作得很好,详细情况是,当报告的记录数超过800000条时,浏览器的内存会结束并出错。你知道怎么修吗 代码如下: $("#btnSav

我正在用jQuery和Java开发一个web应用程序。我的任务是用一些数据库记录制作一份报告。报告必须能够以csv、xls和txt格式下载。文件的记录数是可变的,但有时太大,比如一千万条记录

我有两个问题:

  • 第一:制作大文件的最佳选择是什么,Java还是jQuery
  • 第二:你能给我一个实施的例子吗
我目前已经在jQuery中实现了csv格式的报告,它工作得很好,详细情况是,当报告的记录数超过800000条时,浏览器的内存会结束并出错。你知道怎么修吗

代码如下:

$("#btnSaveReporte").on(
            'click',
            function(event) {
                getValuesSelected();
                var valiFec = validarFechasEnUso();
                if (validarFechasEnUso()) {

                    if (validarCampos()){
                        // get data report
                        $.ajax({
                            type : "POST",
                            url : "/VentasB/api/getDataReport",
                            data : {
                                fechaIni : fechaIni,
                                fechaFin : fechaFin,
                                orgVentas : Object.keys(orgVentas).join(',').replace(/'/g, ""),
                                canalDist : Object.keys(canalDist).join(','),
                            //canalDist : "'10','11','12'",
                                sector : Object.keys(sector).join(',').replace(/'/g, ""),
                                ofiVentas : $.map(ofiVentas, function(obj) { return "'" + obj.value + "'" }).join(','),
                            },
                            success : function(result) {
                                console.log(result);
                                
                                if(result.data.length > 0){
                                    // CSV
                                    var fileName = "Reporte_Ventas_" + fechaIni
                                            + "_to_" + fechaFin + ".csv";
                                    exportDataToCSV(result.data, fileName,
                                            "#reportFile");
                                    // trigger de click para descargar automaticamente el reporte
                                    
                                    $("#reportFile")[0].click();
                                }else{
                                    Swal.fire({
                                        icon : 'info',
                                        title : 'Sin resultados',
                                        text : 'no se econtró ningún registro que cumpla con los parametros de busqueda.'
                                    })
                                }

                            }
                        });
                    }

                } else {
                    // swal error

                }
            });

// ******************** funcion para descargar csv *********************
function exportDataToCSV(data, title, btnContainer) {
    var csv = ""

    for (var g = 0; g < data.length; g++) {
        // for(var g=0; g < 100; g++){
        // console.log("entro data")
        // console.log(data[g])
        if (g == 0) {

            csv += "bill_stmnt_id, distributor_id, bill_type_cd, bill_stmnt_base_id, eff_dt, eff_tm, bill_distrib_channel_cd,"
                    + "total_charge_amt, total_tax_amt, subtotal_amt, discounts, bill_equipment_deposit, price, perc_fin, amt_fin,"
                    + "bill_rfc_ini, bill_customer_cd, bill_shop_cd, bill_shop_name,bill_shop_id, bill_org_name, bill_address,"
                    + "bill_move_type_cd, bill_payment_condition_cd, region_id, bill_customer_group_cd, bill_customer_group_desc,"
                    + "bill_user_id, bill_sale_force_desc, bill_sale_reason_cd, bill_rfc_end, bill_source_type_cd";
            csv += "\n";
        }

        csv += '"' + data[g].bill_stmnt_id + '",';
        csv += '"' + data[g].distributor_id + '",';
        csv += '"' + data[g].bill_type_cd + '",';
        csv += '"' + data[g].bill_stmnt_base_id + '",';
        csv += '"' + data[g].eff_dt + '",';
        csv += '"' + data[g].eff_tm + '",';
        csv += '"' + data[g].bill_distrib_channel_cd + '",';
        csv += '"' + data[g].total_charge_amt + '",';
        csv += '"' + data[g].total_tax_amt + '",';
        csv += '"' + data[g].subtotal_amt + '",';
        csv += '"' + data[g].discounts + '",';
        csv += '"' + data[g].bill_equipment_deposit + '",';
        csv += '"' + data[g].price + '",';
        csv += '"' + data[g].perc_fin + '",';
        csv += '"' + data[g].amt_fin + '",';
        csv += '"' + data[g].bill_rfc_ini + '",';
        csv += '"' + data[g].bill_customer_cd + '",';
        csv += '"' + data[g].bill_shop_cd + '",';
        csv += '"' + data[g].bill_shop_name + '",';
        csv += '"' + data[g].bill_shop_id + '",';
        csv += '"' + data[g].bill_org_name + '",';
        csv += '"' + data[g].bill_address + '",';
        csv += '"' + data[g].bill_move_type_cd + '",';
        csv += '"' + data[g].bill_payment_condition_cd + '",';
        csv += '"' + data[g].region_id + '",';
        csv += '"' + data[g].bill_customer_group_cd + '",';
        csv += '"' + data[g].bill_customer_group_desc + '",';
        csv += '"' + data[g].bill_user_id + '",';
        csv += '"' + data[g].bill_sale_force_desc + '",';
        csv += '"' + data[g].bill_sale_reason_cd + '",';
        csv += '"' + data[g].bill_rfc_end + '",';
        csv += '"' + data[g].bill_source_type_cd + '",';

        // csv += "hola" + "," ;

        csv += "\n";
    }
    // Deliberate 'false', see comment below
    if (false && window.navigator.msSaveBlob) {
        console.log("entro 1")
        var blob = new Blob([ decodeURIComponent(csv) ], {
            type : 'text/csv;charset=utf8'
        });

        // Crashes in IE 10, IE 11 and Microsoft Edge
        // See MS Edge Issue #10396033
        // Hence, the deliberate 'false'
        // This is here just for completeness
        // Remove the 'false' at your own risk
        window.navigator.msSaveBlob(blob, title);

    } else if (window.Blob && window.URL) {
        console.log("entro 2")
        // HTML5 Blob
        var blob = new Blob([ csv ], {
            type : 'text/csv;charset=utf-8'
        });
        var csvUrl = URL.createObjectURL(blob);

        $(btnContainer).attr({
            'download' : title,
            'href' : csvUrl
        });
    } else {
        console.log("entro 3")
        // Data URI
        var csvData = 'data:application/csv;charset=utf-8,'
                + encodeURIComponent(csv);

        $(btnContainer).attr({
            'download' : title,
            'href' : csvData,
            'target' : '_blank'
        });
    }
}
$(“#btnsavereport”)。在(
“点击”,
功能(事件){
getValuesSelected();
var valiFec=validarFechasEnUso();
if(validarFechasEnUso()){
if(validarCampos()){
//获取数据报告
$.ajax({
类型:“POST”,
url:“/VentasB/api/getDataReport”,
数据:{
费切尼:费切尼,
费沙芬:费沙芬,
orgVentas:Object.keys(orgVentas).join(“,”).replace(/“/g,”),
canalDist:Object.keys(canalDist.join(','),
//运河区:“‘10’、‘11’、‘12’”,
扇区:Object.keys(扇区).join(“,”).replace(/“/g,”),
ofiVentas:$.map(ofiVentas,函数(obj){return“'”+obj.value+“'”}).join(','),
},
成功:功能(结果){
控制台日志(结果);
如果(result.data.length>0){
//CSV
var fileName=“Reporte\u Ventas”+fechaIni
+“_至_”+fechaFin+”.csv”;
exportDataToCSV(result.data,文件名,
“#报告文件”);
//触发取消单击段落描述自动报告
$(“#报告文件”)[0]。单击();
}否则{
喷火({
图标:“信息”,
标题:“Sin resultados”,
正文:“没有经济登记册,无法记录有关busqueda参数的信息。”
})
}
}
});
}
}否则{
//抽汲误差
}
});
//**********************功能段描述csv*********************
函数exportDataToCSV(数据、标题、BTN容器){
var csv=“”
对于(var g=0;g@GetMapping(value="/file/{id}")
public StreamingResponseBody getBigFile(@PathVariable long id) throws IOException {     
    File f = /* find the file here, for example using id*/;
    InputStream in = new BufferedInputStream(new FileInputStream(f));
    return new StreamingResponseBody() {
        @Override
        public void writeTo(OutputStream os) throws IOException {
            FileCopyUtils.copy(in, os);
        }
    };
}