Excel报表导出示例

13 篇文章 0 订阅

public HttpServletResponse exportExcel(HttpServletResponse response,List<PayFlowListVo> results) {
try {
String fileName="XXZF_" + ".xls";
response.reset();
response.setHeader("Content-disposition", "attachment; filename="+ fileName);
response.setContentType("application/vnd.ms-excel");
OutputStream os = response.getOutputStream();
WritableWorkbook wbook = Workbook.createWorkbook(os);

// 标题字体及样式--居中
WritableFont writableFont = new WritableFont(WritableFont.createFont("宋体"), 10,
WritableFont.BOLD, false,UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
WritableCellFormat wcfTitle = new WritableCellFormat(writableFont);

wcfTitle.setAlignment(Alignment.CENTRE);//水平居中
wcfTitle.setVerticalAlignment(VerticalAlignment.CENTRE);//垂直居中
wcfTitle.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);// 黑色边框
wcfTitle.setWrap(true);//自动换行

// 内容字体及样式--居中
WritableFont wfContentCenter = new WritableFont(WritableFont.createFont("宋体"), 10,
WritableFont.NO_BOLD,false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
WritableCellFormat wcfContentCenter = new WritableCellFormat(wfContentCenter);
wcfContentCenter.setAlignment(Alignment.CENTRE);
wcfContentCenter.setVerticalAlignment(VerticalAlignment.CENTRE);
wcfContentCenter.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);// 黑色边框
wcfContentCenter.setWrap(true);

// 格式化数字
WritableFont wfFont = new WritableFont(WritableFont.createFont("宋体"), 10,
WritableFont.NO_BOLD,false,UnderlineStyle.NO_UNDERLINE, Colour.BLACK);
NumberFormat numberFormatTwo = new NumberFormat("0.00");
WritableCellFormat wcfContentRightTwo = new WritableCellFormat(wfFont, numberFormatTwo);
wcfContentRightTwo.setAlignment(Alignment.RIGHT);
wcfContentRightTwo.setVerticalAlignment(VerticalAlignment.CENTRE);
wcfContentRightTwo.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);// 黑色边框
wcfContentRightTwo.setWrap(true);
WritableSheet wsheet = wbook.createSheet("线下支付流水", 0); // sheet名称


//设置单元格宽度
wsheet.setColumnView(0, 10);
wsheet.setColumnView(1, 25);
wsheet.setColumnView(2, 25);
wsheet.setColumnView(3, 25);
wsheet.setColumnView(4, 25);
wsheet.setColumnView(5, 15);
wsheet.setColumnView(6, 25);
wsheet.setColumnView(7, 15);
wsheet.setColumnView(8, 15);
wsheet.setColumnView(9, 25);
wsheet.setColumnView(10, 25);
wsheet.setColumnView(11, 15);
wsheet.setColumnView(12, 15);
wsheet.setColumnView(13, 15);
wsheet.setColumnView(14, 30);
wsheet.mergeCells(0, 0, 14, 1);
wsheet.addCell(new Label(0,0,"线下支付流水对账报表",wcfTitle));

// 设置单元格标题内容
wsheet.addCell(new Label(0, 2, "编号", wcfTitle));
wsheet.addCell(new Label(1, 2, "收款人账号", wcfTitle));
wsheet.addCell(new Label(2, 2, "收款人名称", wcfTitle));
wsheet.addCell(new Label(3, 2, "付款人账号", wcfTitle));
wsheet.addCell(new Label(4, 2, "付款人名称", wcfTitle));
wsheet.addCell(new Label(5, 2, "金额", wcfTitle));
wsheet.addCell(new Label(6, 2, "创建时间", wcfTitle));
wsheet.addCell(new Label(7, 2, "支付时间", wcfTitle));
wsheet.addCell(new Label(8, 2, "类型", wcfTitle));
wsheet.addCell(new Label(9, 2, "订单号", wcfTitle));
wsheet.addCell(new Label(10, 2, "支付流水号", wcfTitle));
wsheet.addCell(new Label(11, 2, "支付状态", wcfTitle));

wsheet.addCell(new Label(12, 2, "支付渠道", wcfTitle));
wsheet.addCell(new Label(13, 2, "操作人", wcfTitle));
wsheet.addCell(new Label(14, 2, "操作时间", wcfTitle));
// wsheet.addCell(new Label(13, 2, "付款回单", wcfTitle));
int row = 3;//行
int cell;//列
// 生成报表内容
if(results.size()<0)
return null;

for(PayFlowListVo pv : results){
cell = 0;
wsheet.addCell(new Label(cell++, row, row-2+ "", wcfContentCenter));
wsheet.addCell(new Label(cell++, row, StringUtils.isBlank(pv.getPayeeAccount()) ? "" :
pv.getPayeeAccount() + "", wcfContentCenter));//收款人账号
wsheet.addCell(new Label(cell++, row, StringUtils.isBlank(pv.getPayeeName()) ? "" :
pv.getPayeeName() + "", wcfContentCenter));//收款人名称
wsheet.addCell(new Label(cell++, row, StringUtils.isBlank(pv.getPayerAccount()) ? "" :
pv.getPayerAccount() + "", wcfContentCenter));//付款人账号
wsheet.addCell(new Label(cell++, row, StringUtils.isBlank(pv.getPayerName()) ? "" :
pv.getPayerName() + "", wcfContentCenter));//付款人名称
//金额
//wsheet.addCell(new Label(cell++, row, pv.getAmount() == null ? "" : (StringUtils.isBlank(pv.getAmount().toString()) ? "":
//(pv.getAmount().doubleValue()==0?"0.00":BigDecimalUtil.formateBigDecimal(pv.getAmount()))) + "", wcfContentCenter));
wsheet.addCell(new Number(cell++, row, pv.getAmount()==null ? new Double(0): pv.getAmount().doubleValue(),wcfContentRightTwo));
//手续费
/*wsheet.addCell(new Number(cell++, row, pv.getHandlingFee()==null ? new Double(0): pv.getHandlingFee().doubleValue(),wcfContentRightTwo));
//应收金额
wsheet.addCell(new Number(cell++, row, pv.getReceivable()==null ? new Double(0): pv.getReceivable().doubleValue(),wcfContentRightTwo));*/
//创建时间
wsheet.addCell(new Label(cell++, row, pv.getCreateTime() == null ? "" : (StringUtils.isBlank(pv.getCreateTime().toString()) ? "" :
TimeUtil.getYMDHMS(pv.getCreateTime())) + "", wcfContentCenter));//支付时间
wsheet.addCell(new Label(cell++, row, pv.getPayDate()==null ? "" : (StringUtils.isBlank(pv.getPayDate().toString()) ? "" :
TimeUtil.getYMD(pv.getPayDate())) + "", wcfContentCenter));//支付时间
wsheet.addCell(new Label(cell++, row, StringUtils.isBlank(pv.getPayType()) ? "" : getStatusDesc(PAY_TYPE, pv.getPayType()) + "", wcfContentCenter));
wsheet.addCell(new Label(cell++, row, StringUtils.isBlank(pv.getOrderId()) ? "" : pv.getOrderId() + "", wcfContentCenter));
wsheet.addCell(new Label(cell++, row, StringUtils.isBlank(pv.getPayFlowId()) ? "" : pv.getPayFlowId() + "", wcfContentCenter));
wsheet.addCell(new Label(cell++, row, StringUtils.isBlank(pv.getPayStatus()) ? "" : getStatusDesc(PAY_STATUS, pv.getPayStatus()) + "", wcfContentCenter));
//支付渠道(线下支付)
wsheet.addCell(new Label(cell++, row, "线下支付",wcfContentCenter));
//操作人
wsheet.addCell(new Label(cell++, row, StringUtils.isBlank(pv.getConfirmor()) ? "":pv.getConfirmor() + "" ,wcfContentCenter));
//操作时间
wsheet.addCell(new Label(cell++, row, pv.getConfirmTime() == null ? "":TimeUtil.getYMDHMS(pv.getConfirmTime()) + "",wcfContentCenter));
row++;
}
wbook.write(); // 写入文件
wbook.close();
os.close();
response.flushBuffer();
} catch (Exception ex) {
log.error("exportExcel:", ex);
}
return response;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值