![这里写图片描述](https://img-blog.csdn.net/20171121175732186?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveml5dXh1YW45MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2,封装导出数据
3,导出excel表格
/**
* @Description <p>导出售票订单</p>
* @author:spwang
* @Version:1.0
* @date 2017年10月22日 下午3:26:25
* @email wangshuping@zlycbj.com
* page(需要导出的数据)
*/
@Override
public void exportTicketOrderExcel(Page<SalesOrderDto> page, HttpServletResponse response) {
String filename = "ticketOrder-" + DateUtil.dateToString(new Date(), "yyyyMMddHHmmss") + ".xls";
List<SalesOrderDto> resultList = page.getResultList();
Workbook book = new HSSFWorkbook();
ServletOutputStream outputStream = null;
try {
Sheet sheet = book.createSheet("票务订单");
Row row = sheet.createRow(0);
row.createCell(0).setCellValue("渠道名称");
row.createCell(1).setCellValue("订单状态");
row.createCell(2).setCellValue("订单编号");
row.createCell(3).setCellValue("姓名");
row.createCell(4).setCellValue("电话");
row.createCell(5).setCellValue("订单来源");
row.createCell(6).setCellValue("项目");
row.createCell(7).setCellValue("项目场次");
row.createCell(8).setCellValue("张数");
row.createCell(9).setCellValue("价格");
row.createCell(10).setCellValue("订单金额");
row.createCell(11).setCellValue("支付方式");
row.createCell(12).setCellValue("下单时间");
row.createCell(13).setCellValue("支付时间");
row.createCell(14).setCellValue("配送方式");
row.createCell(15).setCellValue("订单创建人");
row.createCell(16).setCellValue("订单处理人");
row.createCell(17).setCellValue("持续时间");
sheet.setColumnWidth(0, 10 * 2 * 512);
int i = 1;
for (Object object : resultList) {
SalesOrderDto orderDto = (SalesOrderDto) object;
Row row2 = sheet.createRow(i++);
row2.createCell(0).setCellValue(orderDto.getOrgName());
row2.createCell(1).setCellValue(orderDto.getOrderStatusName());
row2.createCell(2).setCellValue(orderDto.getOrderCode());
row2.createCell(3).setCellValue(orderDto.getMemberName());
row2.createCell(4).setCellValue(orderDto.getMemberPhone());
row2.createCell(5).setCellValue(orderDto.getOrderSourceName());
if (orderDto.getSalesOrderDetailList().size() > 0) {
row2.createCell(6).setCellValue(orderDto.getSalesOrderDetailList().get(0).getProjectName());
row2.createCell(7).setCellValue(orderDto.getSalesOrderDetailList().get(0).getShowSessions());
int sheettotal = 0;
for (int k = 0; k < orderDto.getSalesOrderDetailList().size(); k++) {
String sheets = orderDto.getSalesOrderDetailList().get(k).getSheets();
if (StringUtils.isNotBlank(sheets)) {
int parseInt = Integer.parseInt(sheets);
sheettotal += parseInt;
}
}
row2.createCell(8).setCellValue(sheettotal);
}
DecimalFormat df = new DecimalFormat("#0.00");
if (orderDto.getSalesOrderDetailList().size() > 0) {
row2.createCell(9)
.setCellValue("¥ " + df.format(orderDto.getSalesOrderDetailList().get(0).getPrice()));
}
row2.createCell(10).setCellValue("¥ " + df.format(orderDto.getActuallyPaidAmt()));
if (orderDto.getSalesPayDetailList().size() > 0) {
row2.createCell(11).setCellValue(orderDto.getSalesPayDetailList().get(0).getPayWayName());
}
row2.createCell(12)
.setCellValue(DateUtil.dateToString(orderDto.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
if (orderDto.getPayTime() != null) {
row2.createCell(13)
.setCellValue(DateUtil.dateToString(orderDto.getPayTime(), "yyyy-MM-dd HH:mm:ss"));
}
row2.createCell(14).setCellValue(orderDto.getDeliveryWayName());
row2.createCell(15).setCellValue(orderDto.getUserName() + "|" + orderDto.getcName());
row2.createCell(16).setCellValue(orderDto.getPrintUserName());
if (orderDto.getLastTime() != null && orderDto.getSystemBooking().equals("1")
&& !orderDto.getOrderStatus().equals("01")) {
row2.createCell(17).setCellValue(orderDto.getLastTime());
}
}
response.setHeader("Content-disposition", "attachment;filename=" + filename);
response.setContentType("application/vnd.ms-excel;charset=utf-8");
ByteArrayOutputStream outPut = new ByteArrayOutputStream();
book.write(outPut);
byte[] b = outPut.toByteArray();
ByteArrayInputStream inputStream = new ByteArrayInputStream(b);
outputStream = response.getOutputStream();
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}