美文网首页
Excel导出多条数据

Excel导出多条数据

作者: 小偷阿辉 | 来源:发表于2019-04-08 19:03 被阅读0次

有时候,我们需要根据ID导出数据,可是如果id过多,使用get方式如果数据太大不够用,所以使用post方式,我意外发现了这个方法,一位大佬的方法,不过我改进了一点,那就是如果ID是数字转换成字符串,太长了那会丢失数据
先看看,简单点的 批量导出

function outBatch(){
    var rows = $('#exampleTable').bootstrapTable('getSelections'); // 返回所有选择的行,当没有选择的记录时,返回一个空数组
    if (rows.length == 0) {
        layer.msg("请选择要导出的记录");
        return;
    }
    var tables = new Array();
    // 遍历所有选择的行数据,取每条数据对应的ID
    $.each(rows, function(i, row) {
        tables[i] = row['ordersId'];
    });
    var exportUrl=prefix + "/out";
    downLoad(exportUrl,"POST");
    var inputs="";
    function downLoad(url,method){
        var input='<input type=\"hidden\" name=\"orderIds\" value=\"'+ JSON.stringify(tables).toString() +'\" />';
        // request发送请求
        jQuery('<form action="'+ url +'" method="'+ (method||'post') +'">'+inputs+'</form>')
            .appendTo('body').submit().remove();
    }
}

后端代码

@PostMapping("/deliver/out")
    @RequiresPermissions("record:deliver:out")
    public void outBatch(String orderIds,HttpServletResponse response){
        List<String> orderIdList =JSON.parseArray(orderIds, Long.class);
        List<OrdersVO> ordersVOS = ordersService.queryAllDeliverOrdersByIds(orderIdList);
        String[] titles={"记录ID","礼品名称","收货人","收货地址","联系电话","创建时间","发货时间","状态","快递单号","物流"};
        HSSFWorkbook hssfWorkbook = ExcelUtils.getDeliverOrderRecordHSSFWorkbook("发货记录", titles, ordersVOS, null);
        try {
            ServletOutputStream os = response.getOutputStream();
            setResponse(response,"发货记录.xls");
            hssfWorkbook.write(os);
            os.flush();
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

如果id太长了,会丢失数据,就用这个

function outBatch(){
    var rows = $('#exampleTable').bootstrapTable('getSelections'); // 返回所有选择的行,当没有选择的记录时,返回一个空数组
    if (rows.length == 0) {
        layer.msg("请选择要导出的记录");
        return;
    }
    var tables = new Array();
    // 遍历所有选择的行数据,取每条数据对应的ID
    $.each(rows, function(i, row) {
        tables[i] = row['ordersId'];
    });
    //alert(JSON.stringify(tables));
    //这里URL会出现问题,换个方式
    //location.href=prefix + "/outWinningRecordBatch?recordIds="+JSON.stringify(tables);
    var exportUrl=prefix + "/out";
    downLoad(exportUrl,"POST");
    var inputs="";
    function downLoad(url,method){
        $(tables).each(function(i,obj){
            inputs+='<input type=\"hidden\" name=\"orderIds\" value=\"'+ obj +'\" />';
        });
        //var input='<input type=\"hidden\" name=\"orderIdsStr\" value=\"'+ JSON.stringify(tables).toString() +'\" />';
        // request发送请求
        jQuery('<form action="'+ url +'" method="'+ (method||'post') +'">'+inputs+'</form>')
            .appendTo('body').submit().remove();
    }
}

后端代码

@PostMapping("/deliver/out")
    @RequiresPermissions("record:deliver:out")
    public void outBatch(String[] orderIds,HttpServletResponse response){
        List<String> orderIdList = Arrays.asList(orderIds);
        List<OrdersVO> ordersVOS = ordersService.queryAllDeliverOrdersByIds(orderIdList);
        String[] titles={"记录ID","礼品名称","收货人","收货地址","联系电话","创建时间","发货时间","状态","快递单号","物流"};
        HSSFWorkbook hssfWorkbook = ExcelUtils.getDeliverOrderRecordHSSFWorkbook("发货记录", titles, ordersVOS, null);
        try {
            ServletOutputStream os = response.getOutputStream();
            setResponse(response,"发货记录.xls");
            hssfWorkbook.write(os);
            os.flush();
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

相关文章

网友评论

      本文标题:Excel导出多条数据

      本文链接:https://www.haomeiwen.com/subject/ulgpiqtx.html