数据库找到数据填入excel中

来源:互联网 发布:淘宝运营服务商没效果 编辑:程序博客网 时间:2024/06/05 18:25
public void generateContract(String carShippingId , String carNumber,HttpServletRequest req, HttpServletResponse resp){
        
 
        
        Map<String,Object> contract = carShippingDao.getContractData(carShippingId);//获取数据库信息
        if(contract != null) {
            generateContract(req, resp,contract);//传入方法中
        }
    }
    
    /**
     * 生成合同excel  , 并下载
     * @param car
     * @param carShipping
     * @param contract
     * @param contract
     */
    public void generateContract(HttpServletRequest req, HttpServletResponse resp, Map<String, Object> contract){

        Workbook wb = null;
        String path = req.getSession().getServletContext().getRealPath("/");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        String filename = sdf.format(new Date());
        try{
            
            InputStream in = this.getClass().getClassLoader().getResourceAsStream("hetongmoban.xls");
            
            wb = Workbook.getWorkbook(in);
            
            //写入
            WritableWorkbook writableWorkbook = Workbook.createWorkbook(new File(path+filename), wb);
            
            WritableSheet sheet = writableWorkbook.getSheet(0);

            //创建label   进行判断
            Label weightLabel = new Label(2,2,contract.get("weight")==null?"":contract.get("weight")+"");               //货物装载吨位
            Label carNumberLabel = new Label(6,2,contract.get("car_number")==null?"":contract.get("car_number")+"");        //车牌号
            Label addressLabel = new Label(2,4,contract.get("address")==null?"":contract.get("address")+"");             //收货地址
            Label goodsTypeLabel = new Label(7,4,"");                                   //货物种类
            Label unitPriceLabel = new Label(2,5,"");                                   //运输单价
            Label payTypeLabel = new Label(7,5,"");                                     //付款方式
            Label driverNameLabel = new Label(2,7,contract.get("driver_name")==null?"":contract.get("driver_name")+"");      //司机姓名
            Label driverPhoneLabel = new Label(6,7,contract.get("phone_number")==null?"":contract.get("phone_number")+"");    //司机手机号
            Label driverIDCardLabel = new Label(2,8,contract.get("driver_number")==null?"":contract.get("driver_number")+"");  //身份证号
            Label driverLicenseLabel = new Label(2,9,contract.get("driver_number")==null?"":contract.get("driver_number")+""); //驾驶证号
            Label certificateLabel = new Label(2,10,contract.get("certificate_number")==null?"":contract.get("certificate_number")+""); //资格证号
            Label operationLabel = new Label(7,10,contract.get("operation_number")==null?"":contract.get("operation_number")+""); //营运证号
            Label oilcardNumberLabel = new Label(1,12,contract.get("oilcard_number")==null?"":contract.get("oilcard_number")+"");  //油卡卡号
            Label rechargeLabel = new Label(7,12,"");                                   //充值金额
            Label backLabel = new Label(1,13,contract.get("bank_code")==null?"":contract.get("bank_code")+"");             //银行卡号
            Label carownerNameLabel = new Label(8,13,contract.get("carowner_name")==null?"":contract.get("carowner_name")+""); //开户名
            Label productNameLabel = new Label(0,32,contract.get("product_name")==null?"":contract.get("product_name")+"");   //产品名称
            Label colorLabel = new Label(1,32,contract.get("color")==null?"":contract.get("color")+"");                //颜色
            Label specificationLabel = new Label(2,32,contract.get("specification")==null?"":contract.get("specification")+"");//规格
            Label countLabel = new Label(3,32,"");
            Label piecesLabel = new Label(4,32,contract.get("pieces")==null?"":contract.get("pieces")+"");              //件数
            Label textLabel = new Label(5,32,contract.get("text")==null?"":contract.get("text")+"");                  //备注
            Label storehouseLabel = new Label(7,32,contract.get("storehouse")==null?"":contract.get("storehouse")+"");      //仓库

            //添加到表格中
            sheet.addCell(weightLabel);
            sheet.addCell(carNumberLabel);
            sheet.addCell(addressLabel);
            sheet.addCell(goodsTypeLabel);
            sheet.addCell(unitPriceLabel);
            sheet.addCell(payTypeLabel);
            sheet.addCell(driverNameLabel);
            sheet.addCell(driverPhoneLabel);
            sheet.addCell(driverIDCardLabel);
            sheet.addCell(driverLicenseLabel);
            sheet.addCell(certificateLabel);
            sheet.addCell(operationLabel);
            sheet.addCell(oilcardNumberLabel);
            sheet.addCell(rechargeLabel);
            sheet.addCell(backLabel);
            sheet.addCell(carownerNameLabel);
            sheet.addCell(productNameLabel);
            sheet.addCell(colorLabel);
            sheet.addCell(specificationLabel);
            sheet.addCell(countLabel);
            sheet.addCell(piecesLabel);
            sheet.addCell(textLabel);
            sheet.addCell(storehouseLabel);
            
            writableWorkbook.write();
            writableWorkbook.close();
            
            //输出文件
            OutputStream out = resp.getOutputStream();
            
            resp.reset();
            
            // 设置为下载application/x-download  
            resp.setContentType("application/x-download charset=UTF-8");  
            // 通常解决汉字乱码方法用URLEncoder.encode(...)  
            String filenamedisplay = URLEncoder.encode(filename, "UTF-8") + ".xls";  
            if ("FF".equals(getBrowser(req))) {  
                // 针对火狐浏览器处理方式不一样了  
                filenamedisplay = new String(filename.getBytes("UTF-8"),  
                        "iso-8859-1") + ".xls";  
            }
            
            resp.setHeader("Content-Disposition", "attachment;filename="  
                    + filenamedisplay);    
            
            String p = path + filename;
            out.write(FileUtils.readFileToByteArray(new File(path + filename)));
            out.flush();
            out.close();
            resp.flushBuffer();
            
            
            File file = new File(path + filename);
            
            if(file.exists()){
                file.delete();
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }
    
    
     // 以下为服务器端判断客户端浏览器类型的方法  
    private String getBrowser(HttpServletRequest request) {  
        String UserAgent = request.getHeader("USER-AGENT").toLowerCase();  
        if (UserAgent != null) {  
            if (UserAgent.indexOf("msie") >= 0)  
                return "IE";  
            if (UserAgent.indexOf("firefox") >= 0)  
                return "FF";  
            if (UserAgent.indexOf("safari") >= 0)  
                return "SF";  
        }  
        return null;  
    } 
原创粉丝点击