数据以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();   }  }

你可能感兴趣的:(HSSFWorkbook)