zoukankan      html  css  js  c++  java
  • 数据以Excel形式导出导服务器,再将文件读取到客户端另存 以HSSFWorkbook方式实现

    public void exportExcel(List<P2pInfo> repayXist,HttpServletRequest request,HttpServletResponse response,List<DimNode> listArea,String drxh) throws Exception{   

    log.info("导出银还款信息Excel文件");   

    FileOutputStream fos=null;   

    InputStream is=null;   

    OutputStream os=null;   

    BufferedInputStream bis=null;   

    BufferedOutputStream bos=null;   

    try {   

     //当前日期    

    String dateStr=DateUtil.parseDateFormat(new Date(), "yyyyMMdd");    

    //银导出文件服务器上存放路径    

    String ysbPath=getSystemConfigValue(ConstantsApplication.YSB_EXPORT_PATH);    

    String folderFileName="YSB" + dateStr + "_" + drxh;    

    String filePath=ysbPath+"/"+folderFileName;    

    StringOperator.deletePath(filePath);   

     File file=new File(filePath);    

    file.delete();   

     CommonUtils.mkDirs(filePath);    

    String fileNameHtml=ConstantsApplication.YSB_OPERATION_CODE+"_"+dateStr+"_"+drxh+".xls";    

    String fileName=filePath+"/"+fileNameHtml;        

    /*导出到服务器上指定文件:D:ExportYSB下*/   

     fos=new FileOutputStream(fileName);   

     //创建Excel文件对象    H

    SSFWorkbook workbook = new HSSFWorkbook();   

     //创建Sheet对象    HSSFSheet sheet1 = workbook.createSheet();    

    //设置Excel样式    

    // 设置列宽       

    sheet1.setColumnWidth(0, 3000);      

     sheet1.setColumnWidth(1, 6000);      

     sheet1.setColumnWidth(2, 3000);       

    sheet1.setColumnWidth(3, 4000);       

    sheet1.setColumnWidth(4, 3000);    

    // 设置标题字体       

    HSSFFont headfont = workbook.createFont();       

    headfont.setFontName("黑体");       

    headfont.setFontHeightInPoints((short) 10);

    // 字体大小       

    headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗       // 标题样式       

    HSSFCellStyle headstyle = workbook.createCellStyle();       

    headstyle.setFont(headfont);       

    headstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中       

    headstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中      

     headstyle.setLeftBorderColor(HSSFColor.BLACK.index);       

    headstyle.setBorderLeft((short) 1);       

    headstyle.setRightBorderColor(HSSFColor.BLACK.index);       

    headstyle.setBorderRight((short) 1);       

    headstyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体       

    headstyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.        /*普通单元格样式*/    

    HSSFFont font = workbook.createFont();          

    font.setFontName("宋体");          

    font.setFontHeightInPoints((short) 10);          

    // 普通单元格样式          

    HSSFCellStyle contentStyle = workbook.createCellStyle();          

    contentStyle.setFont(font);          

    contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中          

    contentStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中          

    contentStyle.setWrapText(true);          

    contentStyle.setLeftBorderColor(HSSFColor.BLACK.index);          

    contentStyle.setBorderLeft((short) 1);          

    contentStyle.setRightBorderColor(HSSFColor.BLACK.index);          

    contentStyle.setBorderRight((short) 1);          

    contentStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单元格的边框为粗体          

    contentStyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色.   

       //创建行对象    

    HSSFRow row1;    

    //第一行标题    

    row1 = sheet1.createRow(0);    

    row1.createCell(0).setCellValue("帐户名");   

     row1.createCell(1).setCellValue("银行账号");    

    row1.createCell(2).setCellValue("收款金额");   

     row1.createCell(3).setCellValue("资金用途");    

    row1.createCell(4).setCellValue("商家订单号");    

    //为标题引入上面设置的样式    

    row1.getCell(0).setCellStyle(headstyle);    

    row1.getCell(1).setCellStyle(headstyle);   

     row1.getCell(2).setCellStyle(headstyle);    

    row1.getCell(3).setCellStyle(headstyle);    

    row1.getCell(4).setCellStyle(headstyle);    

    row1.setHeightInPoints((short)20);    

    if (null!=repayXist&&repayXist.size()>0) {    

     int size=repayXist.size()+1;     

    int j=0;    

     P2pRepayInfo p2pRepayInfo=null;     

    DimNode dimNode=null;     

    for (int i = 1; i < size; i++) {      

    j=i-1;      

    p2pRepayInfo=repayXist.get(j);     

     row1 = sheet1.createRow(i);      

    row1.createCell(0).setCellValue(p2pRepayInfo.getLoanName());      

    row1.createCell(1).setCellValue(p2pRepayInfo.getFactRepayAccountNo());      //应还本金+利息      

    Double dueCI=(p2pRepayInfo.getDuetoCapital()==null?0:p2pRepayInfo.getDuetoCapital())+(p2pRepayInfo.getDuetoInterest()==null?0:p2pRepayInfo.getDuetoInterest());      //已还本金+已还利息      

    Double paidCI=(p2pRepayInfo.getPaidCapital()==null?0:p2pRepayInfo.getPaidCapital())+(p2pRepayInfo.getPaidInterest()==null?0:p2pRepayInfo.getPaidInterest());      

    row1.createCell(2).setCellValue(dueCI-paidCI);      

    row1.createCell(3).setCellValue(" ");      //商家订单号——地区      

    for (int k = 0; k < listArea.size(); k++) {       

    dimNode=listArea.get(k);       

    if (dimNode.getNodeNo().equals(p2pRepayInfo.getAreaNo())) {        

    row1.createCell(4).setCellValue(dimNode.getNodeName());        

    break;       

    }     

     }      

    row1.getCell(0).setCellStyle(contentStyle);      

    row1.getCell(1).setCellStyle(contentStyle);      

    row1.getCell(2).setCellStyle(contentStyle);      

    row1.getCell(3).setCellStyle(contentStyle);      

    row1.getCell(4).setCellStyle(contentStyle);      

    row1.setHeightInPoints((short)15);    

     }    

    }         

     workbook.write(fos);        

    /*将保存到服务器上的Excel文件读取到客户端*/   

     //清空输出流   

     response.reset();    

    response.setCharacterEncoding("utf-8");   

     response.setHeader("Content-disposition", "attachment;filename="+fileNameHtml);    

    response.setContentType("application/msexcel");   

     is=new FileInputStream(fileName);   

     bis=new BufferedInputStream(is);    

    os=response.getOutputStream();    

    bos=new BufferedOutputStream(os);   

     int read=0;    

    byte[] bytes=new byte[8072];    

    while ((read=bis.read(bytes,0, bytes.length))!=-1) {     

    bos.write(bytes, 0, read);    

    }    

    bos.flush();  

     } catch (Exception e) {   

     e.printStackTrace();   

    }finally{    

    try {     

    fos.close();     

    os.close();     

    bos.close();    

     is.close();     

    bis.close();    

    } catch (IOException e) {     

    log.info("银生宝还款信息文件导出异常……");     

    e.printStackTrace();     

    throw new Exception("银生宝还款信息文件导出异常……", e);   

     }   

    }  

    }

    //删除目录下文件
        public static void deletePath(String filepath) throws Exception {
         File f = new File(filepath);//定义文件路径         
            if(f.exists() && f.isDirectory()){//判断是文件还是目录  
            //若有则把文件放进数组,并判断是否有下级目录  
            File delFile[]=f.listFiles();  
            int i =f.listFiles().length;  
            for(int j=0;j<i;j++){  
                if(delFile[j].isDirectory()){  
                 deletePath(delFile[j].getAbsolutePath());//递归调用del方法并取得子目录路径  
                 }  
                 delFile[j].delete();//删除文件  
            }
            }
        }

    /**   *   * @功能描述:判断文件目录是否存在如果不存在则创建目录  

    * @param filePath   *           

    目录路径   *

    @return   *

    @throws Exception   *

    @创建时间   * @author zst   *

    @throws APSException   */

     public static void mkDirs(String filePath) {   

    // 判断路径是否存在   

    File directory = new File(filePath.toString());  

     if (directory.exists() && directory.isDirectory()) {

      }   else {    // 如果不存在则创建目录    directory.mkdirs();   }  }

  • 相关阅读:
    40个Java集合面试问题和答案
    jsp九大内置对象:request、response、session、application、out、page、pageContext、config、exception
    JAVA多线程和并发基础面试问答
    线程的五大状态
    人物与动物快速抠图技巧
    实时监听数据库变化
    inter jion与WITH (NOLOCK) 排他锁(脏读)
    Win定时任务未正常运行的bug(win Server2019)
    HttpWebRequest与HttpWebResponse的关系
    A5M2 sql自动换行快捷键
  • 原文地址:https://www.cnblogs.com/Defry/p/4571613.html
Copyright © 2011-2022 走看看