java导出excel表格

1.http://mvnrepository.com/找到需要的包

这里写图片描述

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 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();
            }
        }
    }
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值