最新导出备份

    /**
     * 导出台账
     */
    @RequestMapping(params = "ExportXltz")
    @ResponseBody
    public void ExportXltz(HttpServletRequest request, ModelMap modelMap, HttpServletResponse response,
            OutputStream output) throws UnsupportedEncodingException { 
        String invoiceno = request.getParameter("invoiceno");//发票号
        String sendTime_begin = request.getParameter("sendTime_begin");//发送日期 
        String sendTime_end = request.getParameter("sendTime_end");//发送日期
        String orderSupply = request.getParameter("orderSupply");//代理商
        String zdDate_begin = request.getParameter("zdDate_begin");//账单日期
        String zdDate_end = request.getParameter("zdDate_end");//账单日期
        String declaredate_begin = request.getParameter("declaredate_begin");//申报日期开始时间
        String declaredate_end = request.getParameter("declaredate_end");//申报日期结束时间 
        
        
         
        String wheresql = " ";
 
        if(invoiceno!=null && !invoiceno.equals("")) {
            wheresql += " and a.invoice_code='" + invoiceno + "'";
        } 
        if(sendTime_begin!=null && !sendTime_begin.equals("")) {
            wheresql += " and a.send_time >='" + sendTime_begin + "'";
        }
        if(sendTime_end!=null && !sendTime_end.equals("")) {
            wheresql += " and a.send_time <='" + sendTime_end + "'";
        }
        if(orderSupply!=null && !orderSupply.equals("")) {
            wheresql += " and c.order_supplyid='" + orderSupply + "'";
        }
        if(zdDate_begin!=null && !zdDate_begin.equals("")) {
            wheresql += " and c.zdDate >='" + zdDate_begin + "'";
        }
        if(zdDate_end!=null && !zdDate_end.equals("")) {
            wheresql += " and c.zdDate <='" + zdDate_end + "'";
        }
        if(declaredate_begin!=null && !declaredate_begin.equals("")) {
            wheresql += " and b.declaration_data >='" + declaredate_begin + "'";
        }
        if(declaredate_end!=null && !declaredate_end.equals("")) {
            wheresql += " and b.declaration_data <='" + declaredate_end + "'";
        }
        
        String sql = " select * " +
                     "  from dec_order a " +
                     "  left join dec_main b on (b.erp_No = a.invoice_code)" +
                     "    left join (select Invoiceno,order_supply,order_supplyid,zdDate" +
                     "                                from ldc_order_tax " +
                     "                            group by Invoiceno) c on (c.Invoiceno = a.invoice_code)"+
                     wheresql + " order by b.create_date desc ";

        String lujing = request.getSession().getServletContext().getRealPath("/");
        String lujing1 = lujing + "export\template\jkfymx.xlsx";
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
        InputStream in;
        try {
            in = new FileInputStream(new File(lujing1));
            XSSFWorkbook work = null;
            work = new XSSFWorkbook(in);
            this.ExportXltzOut(request, response, work, maps);
        } catch (Exception e) {

            e.printStackTrace();
        }


    }
    /**
     * 导出 
     */
    public void ExportXltzOut(HttpServletRequest request, HttpServletResponse response, XSSFWorkbook work, List<Map<String, Object>> list) {
        
        
        XSSFSheet sheetAt = work.getSheetAt(0);    
        XSSFCellStyle setBorder = work.createCellStyle();
        setBorder.setBorderBottom(XSSFCellStyle.BORDER_THIN); //下边框
        setBorder.setBorderLeft(XSSFCellStyle.BORDER_THIN);//左边框
        setBorder.setBorderTop(XSSFCellStyle.BORDER_THIN);//上边框
        setBorder.setBorderRight(XSSFCellStyle.BORDER_THIN);//右边框
        setBorder.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 水平居中
        setBorder.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);//垂直居中
        
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
         
         Map<String, Object> map = new HashMap<>();
         String invoice_code_old = "";
         int cnt = 0;
         for(int i=0;i<list.size();i++){
             if(i<list.size()){
                  map = list.get(i);
             }
             String invoice_code = String.valueOf(map.get("invoice_code"));
            
             XSSFRow row =  sheetAt.createRow(i+2);
            //物流公司名称
             if(map.get("order_supply") !=null) { 
                 row.createCell(0).setCellValue(String.valueOf(map.get("order_supply")));
                 row.getCell(0).setCellStyle(setBorder);
             }else {
                 row.createCell(0).setCellValue("");  
                 row.getCell(0).setCellStyle(setBorder);       
             }
            //进口发票号码
            
             if(map.get("invoice_code") !=null) { 
                 row.createCell(1).setCellValue(String.valueOf(map.get("invoice_code")));
                 row.getCell(1).setCellStyle(setBorder);
             }else {
                 row.createCell(1).setCellValue("");    
                 row.getCell(1).setCellStyle(setBorder);     
             }
             //到厂日期
             JSONObject jsonb = JSONObject.parseObject(String.valueOf(map.get("content")));
             if(StringUtils.isNotBlank(jsonb.getString("dcdate"))) { 
                 row.createCell(4).setCellValue(jsonb.getString("dcdate"));
                 row.getCell(4).setCellStyle(setBorder);
             }else {
                 row.createCell(4).setCellValue("");    
                 row.getCell(4).setCellStyle(setBorder);     
             }
            //报关单号 
             if(map.get("entry_Id") !=null) { 
                 row.createCell(5).setCellValue(String.valueOf(map.get("entry_Id")));
                 row.getCell(5).setCellStyle(setBorder);
             }else {
                 row.createCell(5).setCellValue("");    
                 row.getCell(5).setCellStyle(setBorder);     
             }
            //贸易方式
             if(StringUtils.isNotBlank(jsonb.getString("tradeMode_value"))) { 
                 row.createCell(6).setCellValue(jsonb.getString("tradeMode_value"));
                 row.getCell(6).setCellStyle(setBorder);
             }else {
                 row.createCell(6).setCellValue("");    
                 row.getCell(6).setCellStyle(setBorder);     
             }
           //申报日期
             if(StringUtils.isNotBlank(jsonb.getString("declarationData"))) { 
                 row.createCell(7).setCellValue(jsonb.getString("declarationData"));
                 row.getCell(7).setCellStyle(setBorder);
             }else {
                 row.createCell(7).setCellValue("");    
                 row.getCell(7).setCellStyle(setBorder);     
             }
              
              String str = String.valueOf(map.get("json_extract"));
              JSONObject json = JSONObject.parseObject(str);
              if(json.containsKey("jsBLorawbNo")){
                  String jsBLorawbNo = json.getString("jsBLorawbNo");/**B/L OR AWB NO*/
                  row.createCell(2).setCellValue(jsBLorawbNo);
                  row.getCell(2).setCellStyle(setBorder); 
              }else{
                  row.createCell(2).setCellValue("");
                  row.getCell(2).setCellStyle(setBorder); 
              } 
              if(json.containsKey("jsEta")){
                  String jsEta = json.getString("jsEta");/**ETA*/
                  row.createCell(3).setCellValue(jsEta);
                  row.getCell(3).setCellStyle(setBorder); 
              }else{
                  row.createCell(3).setCellValue("");
                  row.getCell(3).setCellStyle(setBorder); 
              }
              if(json.containsKey("jsHy")){
                  String jsHy = json.getString("jsHy");/**海运整柜(注明箱型)*/
                  row.createCell(8).setCellValue(jsHy);
                  row.getCell(8).setCellStyle(setBorder); 
              }else{
                  row.createCell(8).setCellValue("");
                  row.getCell(8).setCellStyle(setBorder); 
              }
              if(json.containsKey("jsJzxNum")){
                  String jsJzxNum = json.getString("jsJzxNum");/**集装箱数量*/
                  row.createCell(9).setCellValue(jsJzxNum);
                  row.getCell(9).setCellStyle(setBorder);
              }else{
                  row.createCell(9).setCellValue("");
                  row.getCell(9).setCellStyle(setBorder);
              }
              if(json.containsKey("jsWeight")){
                  String jsWeight = json.getString("jsWeight");/**毛重*/
                  row.createCell(10).setCellValue(jsWeight);
                  row.getCell(10).setCellStyle(setBorder);
              }else{
                  row.createCell(10).setCellValue("");
                  row.getCell(10).setCellStyle(setBorder);
              } 
              if(json.containsKey("jsTj")){
                  String jsTj = json.getString("jsTj");/**体积*/
                  row.createCell(11).setCellValue(jsTj);
                  row.getCell(11).setCellStyle(setBorder);
              }else{
                  row.createCell(11).setCellValue("");
                  row.getCell(11).setCellStyle(setBorder);
              }
              if(json.containsKey("jsSumfy")){
                  String jsSumfy = json.getString("jsSumfy");/**物流费用合计金额*/
                  row.createCell(30).setCellValue(jsSumfy);
                  row.getCell(30).setCellStyle(setBorder);
              }else{
                  row.createCell(30).setCellValue("");
                  row.getCell(30).setCellStyle(setBorder);
              }
              /**关税金额(必须和关税单金额核对)*/
              String tariff = "";//关税
              String addedTax = "";//增值税
              double sumNum = 0;//同发票号关税和
              double sumNum1 = 0;//同发票号增值税和
              if(jsonb.containsKey("decLists")) { 
                  String string = jsonb.getString("decLists"); 
                  
                  JSONArray picArray = JSONArray.parseArray(string);
                  for(int q =0;q<picArray.size();q++){
                      JSONObject json1 = picArray.getJSONObject(q);
                      if(json1.get("tariff")!=null){
                          sumNum += Double.parseDouble(json1.getString("tariff")); //**关税金额(必须和关税单金额核对)*//*
                          sumNum1 += Double.parseDouble(json1.getString("addedTax"));
                    }
                  }
                  
                  
                  row.createCell(31).setCellValue(sumNum+" ");
                  row.getCell(31).setCellStyle(setBorder);
                   
                  row.createCell(32).setCellValue(sumNum1+" ");
                  row.getCell(32).setCellStyle(setBorder);
             
              } 
             
              if(json.containsKey("jsFybm")){
                  String jsFybm = json.getString("jsFybm");/**费用部门*/
                  row.createCell(33).setCellValue(jsFybm);
                  row.getCell(33).setCellStyle(setBorder);
              }else{
                  row.createCell(33).setCellValue("");
                  row.getCell(33).setCellStyle(setBorder);
              }
             
             
              String sql = " select * from ldc_order_tax a where  a.Invoiceno = '"+invoice_code+"' ";
              List<Map<String, Object>> list1 = jdbcTemplate.queryForList(sql);
              for(int j=12;j<31;j++){
                  row.createCell(j).setCellValue(""); 
                }
              for(int k=0;k<list1.size();k++){
                  Map<String, Object> map1 = new HashMap<>();
                  if(k<list1.size()){
                      map1 = list1.get(k);
                  }
                  if(map1.get("order_tax_name")!=null){
                      String order_tax_name = String.valueOf(map1.get("order_tax_name"));
                      String order_tax = String.valueOf(map1.get("order_tax"));
                      if(map1.get("order_tax")!=null){
                          order_tax = String.valueOf(map1.get("order_tax"));       
                      }else{
                          order_tax = "";       
                      }
                      if("报关费".equals(order_tax_name)){ 
                          row.createCell(12).setCellValue(order_tax);       
                      }
                      if("换单费".equals(order_tax_name)) {
                          row.createCell(13).setCellValue(order_tax);
                        }
                        if("查验费".equals(order_tax_name)) {
                            row.createCell(14).setCellValue(order_tax);
                        }
                        if("港杂费".equals(order_tax_name)) {
                            row.createCell(15).setCellValue(order_tax);        
                        }
                        if("THC".equals(order_tax_name)) {
                            row.createCell(16).setCellValue(order_tax);
                        }
                        if("LSSBAFCAF".equals(order_tax_name.trim())) {
                            row.createCell(17).setCellValue(order_tax);            
                        }
                        if("报检费安保费".equals(order_tax_name)) { 
                            row.createCell(18).setCellValue(order_tax);
                        }
                        if("换单代理费".equals(order_tax_name)) {
                            row.createCell(19).setCellValue(order_tax);
                        }
                        if("三检费".equals(order_tax_name)) {
                            row.createCell(20).setCellValue(order_tax);            
                        }
                        if("代垫仓库理货费(港建 理货 搬移 )".equals(order_tax_name)) {                         
                            row.createCell(21).setCellValue(order_tax);                
                        }
                        if("仓储费".equals(order_tax_name)) {
                            row.createCell(22).setCellValue(order_tax);                 
                        }
                        if("木托销毁".equals(order_tax_name)) {
                            row.createCell(23).setCellValue(order_tax);                
                        }
                        if("检验代理费".equals(order_tax_name)) {
                            row.createCell(24).setCellValue(order_tax);    
                        }
                        if("拆箱费".equals(order_tax_name)) {
                            row.createCell(25).setCellValue(order_tax);    
                        }
                        if("运费".equals(order_tax_name)) {
                            row.createCell(26).setCellValue(order_tax);    
                        }
                        if("坏污箱费".equals(order_tax_name)) {
                            row.createCell(27).setCellValue(order_tax);    
                        }
                        if("集装箱超期费".equals(order_tax_name)) {
                            row.createCell(28).setCellValue(order_tax);    
                        }
                        if("其它".equals(order_tax_name)) {
                            row.createCell(29).setCellValue(order_tax);    
                        }
                        if("物流费".equals(order_tax_name)) {
                            row.createCell(30).setCellValue(order_tax);    
                        }
//                        if("关税".equals(order_tax_name)) {
//                           row.createCell(31).setCellValue(order_tax);    
//                        }
//                        if("增值税".equals(order_tax_name)) {
//                           row.createCell(32).setCellValue(order_tax);    
//                        }
                      
                      
                      
                  }
                  
              }
              if(invoice_code.equals(invoice_code_old)){
                  cnt++;
                  if(i==list.size()-1){
                      //当最后一行时看情况合并
                      for(int j=0;j<34;j++){
                          if(j!=4&&j!=5&&j!=6&&j!=7){
                              row.getCell(j).setCellValue("");
                              CellRangeAddress region1 = new CellRangeAddress(i-cnt+2, i+2, (short) j, (short) j);
                              sheetAt.addMergedRegion(region1); 
                          }
                      }
                  }  
                  
              }else{
                  if(cnt>0){
                      //合并单元格
                      for(int j=0;j<34;j++){
                          if(j!=4&&j!=5&&j!=6&&j!=7){
                              row.getCell(j).setCellValue("");
                              CellRangeAddress region1 = new CellRangeAddress(i+2-cnt-1, i-1+2, (short) j, (short) j);
                              sheetAt.addMergedRegion(region1);
                          }
                      }
                  }  
                   cnt=0;
              }
              invoice_code_old=invoice_code;
              for(int j=12;j<31;j++){
                row.getCell(j).setCellStyle(setBorder);
              }
             
         }
         //合计
         XSSFRow row =  sheetAt.createRow(list.size()+3);
         for (int i = 0; i <34; i++) {
             row.createCell(i);
             row.getCell(i).setCellStyle(setBorder); 
         }
         row.createCell(0).setCellValue("合计:");
         row.getCell(0).setCellStyle(setBorder); 

         row.getCell(8).setCellStyle(setBorder); 
         for(int j=12;j<33;j++){
             double sum = 0;
             for(int i=2;i<list.size()+2;i++){
                 String value = sheetAt.getRow(i).getCell(j).getStringCellValue();
                 if(StringUtils.isEmpty(value)){
                     value="0";
                 }
                 sum += Double.parseDouble(value);
             }
             row.createCell(j).setCellValue(sum);
             row.getCell(j).setCellStyle(setBorder); 
         }
        
        //前台反应
        response.reset();  
        response.setCharacterEncoding("UTF-8");  
        response.setContentType("application/vnd.ms-excel");  //保证不乱码  
        try
        {
            Date date=new Date();
            SimpleDateFormat format=new SimpleDateFormat("MMddHHmmss");
            String time="bb"+format.format(date)+".xlsx";
            response.setHeader("Content-Disposition","attachment;" + " filename=" + new String(time.getBytes("utf-8"), "ISO-8859-1"));
           
        }
        catch (UnsupportedEncodingException e1) {        
            e1.printStackTrace();
        }  
        try  
        {  
            ByteArrayOutputStream oss =new  ByteArrayOutputStream(); 
            OutputStream os = response.getOutputStream();
            work.write(oss);  
              
            byte temp[] = oss.toByteArray();  
            ByteArrayInputStream in1 = new ByteArrayInputStream(temp);  
            int n = 0;      
            while ((n = in1.read(temp)) >0) {      
                 os.write(temp, 0, n);      
             }    
            os.flush();  
            os.close();  
        } catch(Exception e){
        
            e.printStackTrace();
        }
        
    }
原文地址:https://www.cnblogs.com/xueblvip/p/12579170.html