有时候,我们需要根据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();
}
}
网友评论