java poi excel 導出

@RequestMapping("cusAreasExcelExport")
    public void cusAreasExcelExport(HttpServletRequest request,HttpServletResponse response) throws IOException{
        logger.info("客戶月結訂單導出");
        
        String ids=request.getParameter("gdIds");
        String[] gdIds = ids.substring(0, ids.length()-1).split(",");
        HSSFWorkbook workBook = new HSSFWorkbook();
        
        HSSFSheet sheet = workBook.createSheet("客戶月結統計表");
        String fileName = new String("客戶月結統計表".getBytes(),"iso-8859-1")+".xls";
        int rownum = 0;
        
        String[] headers = {"下單日期","單號","訂單狀態","結款狀態","客戶","電話","運費","加急費用","特殊費用","總計"};
        
        HSSFRow headRow = sheet.createRow(rownum++);
        
        HSSFCellStyle cellStyle = workBook.createCellStyle();  
        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中  
        sheet.addMergedRegion(new CellRangeAddress(0,0,0,headers.length-1));
        
        HSSFCell headCell=headRow.createCell(0);
        headCell.setCellValue("客戶月結統計表");
        headCell.setCellStyle(cellStyle);
        
        HSSFRow row = sheet.createRow(rownum++);
        
        for(int i = 0;i < headers.length;i++){
            HSSFCell cell = row.createCell(i);
            HSSFRichTextString text = new HSSFRichTextString(headers[i]);
            cell.setCellValue(text);
        }
        
        BigDecimal freightTotal = new BigDecimal("0.00");
        BigDecimal jiajiTotal = new BigDecimal("0.00");
        BigDecimal teshuTotal = new BigDecimal("0.00");
        BigDecimal allTotal = new BigDecimal("0.00");
        
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        for(String gdId:gdIds){
            N25175Goods gd = gdService.selectByPrimaryKey(Integer.parseInt(gdId));
            HSSFRow row1 = sheet.createRow(rownum++);
            //下單日期
            row1.createCell(0).setCellValue(format.format(gd.getGdCtime()));
            //單號
            row1.createCell(1).setCellValue(gd.getGdNo());
            //訂單狀態
            if(gd.getGdState()== ConstantUtil.GD_STATE_DAIJIEDAN_0){
                row1.createCell(2).setCellValue("待接單");
            }else if(gd.getGdState() == ConstantUtil.GD_STATE_YIJIEDAN_1){
                row1.createCell(2).setCellValue("已接單");
            }else if(gd.getGdState() == ConstantUtil.GD_STATE_YILANJIAN_2){
                row1.createCell(2).setCellValue("已攬件");
            }else if(gd.getGdState() == ConstantUtil.GD_STATE_DAIFACHE_3){
                row1.createCell(2).setCellValue("待發車");
            }else if(gd.getGdState() == ConstantUtil.GD_STATE_YIFACHE_4){
                row1.createCell(2).setCellValue("已發車");
            }else if(gd.getGdState() == ConstantUtil.GD_STATE_YIDAOHUO_5){
                row1.createCell(2).setCellValue("已到貨");
            }else if(gd.getGdState() == ConstantUtil.GD_STATE_DAIPAISONG_6){
                row1.createCell(2).setCellValue("待派送");
            }else if(gd.getGdState() == ConstantUtil.GD_STATE_PAISONGZHONG_7){
                row1.createCell(2).setCellValue("派送中");
            }else if(gd.getGdState() == ConstantUtil.GD_STATE_YIQIANSHOU_8){
                row1.createCell(2).setCellValue("已簽收");
            }else if(gd.getGdState() == ConstantUtil.GD_STATE_TUIJIAN_9){
                row1.createCell(2).setCellValue("退件");
            }else if(gd.getGdState() == ConstantUtil.GD_STATE_YIQUXIAO_10){
                row1.createCell(2).setCellValue("已取消");
            }else if(gd.getGdState() == ConstantUtil.GD_STATE_ZITI_11){
                row1.createCell(2).setCellValue("自提");
            }
            //結款狀態
            if(gd.getGdPaymethod() == ConstantUtil.GD_PAYMETHOD_YUEJIEWEIJIE_2){
                row1.createCell(3).setCellValue("月結未結");
            }else if(gd.getGdPaymethod()==ConstantUtil.GD_PAYMETHOD_YUEJIEYIJIE_3){
                row1.createCell(3).setCellValue("月結已結");
            }
            //客戶姓名
            row1.createCell(4).setCellValue(gd.getCusName1());
            //客戶電話
            row1.createCell(5).setCellValue(gd.getCusPhone1());
            //運費
            row1.createCell(6).setCellValue(gd.getGdFreight().doubleValue());
            freightTotal=freightTotal.add(gd.getGdFreight()==null?zero:gd.getGdFreight());
            //加急費用
            row1.createCell(7).setCellValue(gd.getGdJiaji().doubleValue());
            jiajiTotal = jiajiTotal.add(gd.getGdJiaji()==null?zero:gd.getGdJiaji());
            //特殊費用
            row1.createCell(8).setCellValue(gd.getGdTeshu().doubleValue());
            teshuTotal = teshuTotal.add(gd.getGdTeshu()==null?zero:gd.getGdTeshu());
            //總計
            row1.createCell(9).setCellValue(gd.getGdTotal().doubleValue());
            allTotal=allTotal.add(gd.getGdTotal()==null?zero:gd.getGdTotal());
        }
        //統計行
        HSSFRow row2 = sheet.createRow(++rownum);
        row2.createCell(0).setCellValue("總計:");
        //運費總和
        row2.createCell(6).setCellValue(freightTotal.doubleValue());
        //加急費用
        row2.createCell(7).setCellValue(jiajiTotal.doubleValue());
        //特殊費用
        row2.createCell(8).setCellValue(teshuTotal.doubleValue());
        //總計
        row2.createCell(9).setCellValue(allTotal.doubleValue());
        
        //寬度爲1.5倍
        for(int i = 0;i < headers.length; i++){
            sheet.autoSizeColumn(i);
            sheet.setColumnWidth(i, sheet.getColumnWidth(i)*15/10);
        }
        response.setContentType("application/octent-stream");
        response.setHeader("Content-disposition","attachement;filename="+fileName);
        response.flushBuffer();
        workBook.write(response.getOutputStream());
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章