poi导出EXcel

package com.icss.tools.excel;

 

import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

 

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFComment;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.util.Region;

 

import com.icss.core.db.Record;
import com.icss.core.db.RecordSet;

 

 

 

public class ExportExcel extends MyMethods implements IExcelConstants{

 

  
 /***
  * 导出按地区统计结果的Excel文件
  * @param title
  * @param dataSet
  * @param dataSet2
  * @param dataSet3
  * @param out
  * @param hidAreaId
  * @param hidProvinceId
  * @param apUUId
  * @param exportFirstRow
  * @param exportShowCol
  */ 
 public void exportExcel(String title, RecordSet dataSet0, RecordSet dataSet, RecordSet dataSet2, RecordSet dataSet3, OutputStream out,
   String hidAreaId, String hidProvinceId, String apUUId, String exportFirstRow, String exportShowCol, String nowTime)
 {
   int  [] colIntNums = this.convertStringToIntArrays(exportShowCol);
   int  [] rowNums = this.convertStringToIntArrays(exportFirstRow);
   
  String pattern="yyyy-MM-dd";
  // 声明一个工作薄
  HSSFWorkbook workbook = new HSSFWorkbook();
  // 生成一个表格
  HSSFSheet sheet = workbook.createSheet(title);
  // 设置表格默认列宽度为10个字节
  sheet.setDefaultColumnWidth((short) 16);
  // 生成一个样式
  HSSFCellStyle style0 = workbook.createCellStyle();
  // 设置表头样式
  style0 = ExcelCss.makeStyle(0,workbook) ;
  // 生成一个样式
  HSSFCellStyle style = workbook.createCellStyle();
  // 设置表头样式
  style = ExcelCss.makeStyle(1,workbook) ;
  // 生成并设置另一个样式
  HSSFCellStyle style2 = workbook.createCellStyle();
  style2 = ExcelCss.makeStyle(2,workbook) ;
  // 生成并设置另一个样式
  HSSFCellStyle style3 = workbook.createCellStyle();
  style3 = ExcelCss.makeStyle(3,workbook) ;
  // 生成并设置另一个样式
  HSSFCellStyle style4 = workbook.createCellStyle();
  style4 = ExcelCss.makeStyle(4,workbook) ;
  
  // 声明一个画图的顶级管理器
  HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
  // 定义注释的大小和位置,详见文档
  HSSFComment comment = patriarch.createComment(new HSSFClientAnchor(0, 0, 0, 0, (short) 4, 2, (short) 6, 5));
  // 设置注释内容
  comment.setString(new HSSFRichTextString("可以在POI中添加注释!"));
  // 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容.
  comment.setAuthor("wll");
  //产生表格标题行
  HSSFRow row = sheet.createRow(0);
  if(rowNums!=null)
  {
  short hb1=(short)rowNums[0];
  short hb2=(short)rowNums[1];
  short hb3=(short)rowNums[2];
  sheet.addMergedRegion(new Region(0,(short)0,0,(short)(3+ hb1 + hb2 + hb3)));
  }else
  {
   sheet.addMergedRegion(new Region(0,(short)0,0,(short)27));
  }
  HSSFCell cellHead = row.createCell(0);
  cellHead.setCellStyle(style0);
  HSSFRichTextString texth = new HSSFRichTextString("按地区机场生产统计"+nowTime);
  cellHead.setCellValue(texth);
  //列的合并
  sheet.addMergedRegion(new Region(1,(short)0,1,(short)2));
  sheet.addMergedRegion(new Region(2,(short)0,2,(short)2));
  //行的合并
  sheet.addMergedRegion(new Region(1,(short)1,2,(short)1));
  //行的合并
  sheet.addMergedRegion(new Region(1,(short)2,2,(short)2));
  //列的合并
  short hb1=(short)rowNums[0];
  short hb2=(short)rowNums[1];
  short hb3=(short)rowNums[2];
  //旅客吞吐量
  if(rowNums[0]>0 && rowNums[0]<8)
  {
   sheet.addMergedRegion(new Region(1,(short)4,1,(short)(4 +hb1-1)));
  }else if(rowNums[0] == 0)
  {
   sheet.addMergedRegion(new Region(1,(short)3,1,(short)(4 +hb1-1)));
  }else
  {
   sheet.addMergedRegion(new Region(1,(short)4,1,(short)11));
  }
  //货邮吞吐量
  if( rowNums[0]!=0 && rowNums[1]!=0 )
  {
   sheet.addMergedRegion(new Region(1,(short)(4 + hb1),1,(short)(4+ hb1 + hb2 -1)));   
  }else if(rowNums[0] == 0 && rowNums[1] == 0)
  {
   sheet.addMergedRegion(new Region(1,(short)1,1,(short)1));  
  }else if(rowNums[0] != 0 && rowNums[1] == 0)
  {
   sheet.addMergedRegion(new Region(1,(short)1,1,(short)1 ));
  }else if(rowNums[0] == 0 && rowNums[1] != 0)
  {
   sheet.addMergedRegion(new Region(1,(short)4,1,(short)(4 + hb2-1)));
  }else
  {
   sheet.addMergedRegion(new Region(1,(short)12,1,(short)19));
  }
  //起降次数吞吐量
  if(rowNums[0]!=0 && rowNums[1]!=0 && rowNums[2] != 0 )
  {
   sheet.addMergedRegion(new Region(1,(short)(4+ hb1 + hb2),1,(short)(4+ hb1 + hb2 + hb3 -1)));
  }else if(rowNums[0] == 0 && rowNums[1] == 0 && rowNums[2] == 0)
  {
   sheet.addMergedRegion(new Region(1,(short)(4 - 1),1,(short)(4+hb1+hb2+hb3 - 1 )));
  }else if(rowNums[0] != 0 && rowNums[1] == 0 && rowNums[2] != 0)
  {
   sheet.addMergedRegion(new Region(1,(short)(4 + hb1),1,(short)(4 + hb1 + hb3-1)));
  }else if(rowNums[0] != 0 && rowNums[1] == 0 && rowNums[2] == 0)
  {
   sheet.addMergedRegion(new Region(1,(short)4,1,(short)(4 + hb1-1)));
  }else if(rowNums[0] == 0 && rowNums[1] != 0 && rowNums[2] == 0)
  {
   sheet.addMergedRegion(new Region(1,(short)1,1,(short)1));
  }else if(rowNums[0] != 0 && rowNums[1] != 0 && rowNums[2] == 0)
  {
   sheet.addMergedRegion(new Region(1,(short)(4 + hb1),1,(short)(4+ hb1 + hb2 - 1))); 
  }else if(rowNums[0] == 0 && rowNums[1] == 0 && rowNums[2] != 0)
  {
   sheet.addMergedRegion(new Region(1,(short)4,1,(short)(4+ hb3 - 1))); 
  }else
  {
   sheet.addMergedRegion(new Region(1,(short)20,1,(short)27));
  }
  //第一行
  HSSFRow row1 = sheet.createRow(1);
  List<String> headerList=new ArrayList<String>();
  headerList = this.chooseList(this.headersRow1, colIntNums);
  for(int e=0; e < headerList.size(); e++)
  {
   HSSFCell cell = row1.createCell(e);
   cell.setCellStyle(style);
   HSSFRichTextString text = new HSSFRichTextString(headerList.get(e));
   cell.setCellValue(text);
  }
  //第二行
  HSSFRow row2 = sheet.createRow(2);
  List<String> header1tList=new ArrayList<String>();
  header1tList = this.chooseList(this.headers, colIntNums);
  for (short i = 0; i < header1tList.size(); i++)
  {
   HSSFCell cell = row2.createCell(i);
   cell.setCellStyle(style);
   HSSFRichTextString text = new HSSFRichTextString(header1tList.get(i));
   cell.setCellValue(text);
  }
  
  //第三行
  HSSFRow row3 = sheet.createRow(3);
  
  List<String> header2tList=new ArrayList<String>();
  
  //取得一个record对象
  Record sumRecord=dataSet0.get(0);
  header2tList = this.chooseList(this.accountHeaders, colIntNums);
  
  for(int i=0; i < header2tList.size(); i++)
  {
   if(i<3)
   {
    HSSFCell cell = row3.createCell(i);
    cell.setCellStyle(style);
    HSSFRichTextString text = new HSSFRichTextString(header2tList.get(i));
    cell.setCellValue(text);
   }else{
    HSSFCell cell = row3.createCell(i);
    cell.setCellStyle(style);
    HSSFRichTextString text = new HSSFRichTextString(sumRecord.getString(header2tList.get(i)));
    cell.setCellValue(text);
   }
  }
  int index = 3;
       
  for(int i=0; i<dataSet.size(); i++)
  {
    if(!isExsist(hidAreaId,dataSet.get(i).getString("AREA_UUID")))
    {
        continue;
    }
    //遍历集合数据,产生数据行
    index++;
    row = sheet.createRow(index);
    //取得一个record对象
    Record areaRecord=dataSet.get(i);
    List<String> areaList=new ArrayList<String>();
    areaList = this.chooseList(areaTableContent, colIntNums);
    for(int m=0; m<areaList.size(); m++)
    {
     HSSFCell cellOne = row.createCell(m);
     if(m<=3)
     {
      style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
     }else
     {
      style2.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
     }
     cellOne.setCellStyle(style2);
     cellOne.setCellType(HSSFCell.CELL_TYPE_STRING);
     cellOne.setCellValue(areaRecord.getString(areaList.get(m)));
    }
               
   for(int j=0; j<dataSet2.size(); j++)
     {
    Record provinceRecord=dataSet2.get(j);
    
    if(!isExsist(hidProvinceId,provinceRecord.getString("PROVINCE_UUID")))
    {
     continue;
    }
    
    if(!provinceRecord.getString("AREA_UUID").equals(areaRecord.getString("AREA_UUID")))
    {
     continue;
    }else
    {
     //遍历集合数据,产生数据行
     index++;
     row = sheet.createRow(index);
    }
    List<String> provinceList=new ArrayList<String>();
    provinceList = this.chooseList(provinceTableContent, colIntNums);
    for(int n=0; n<provinceList.size(); n++)
    {
     HSSFCell cellTwo = row.createCell(n);
     if(n<=3)
     {
      style3.setAlignment(HSSFCellStyle.ALIGN_CENTER);
     }else
     {
      style3.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
     }
     cellTwo.setCellStyle(style3);
     cellTwo.setCellType(HSSFCell.CELL_TYPE_STRING);
     cellTwo.setCellValue(provinceRecord.getString(provinceList.get(n)));
    }
       for(int k=0; k<dataSet3.size(); k++)
       {
       Record tjfxRecord=dataSet3.get(k);
       if(!isExsist(apUUId,tjfxRecord.getString("AP_UUID")))
       {
        continue;
       }
       if(!provinceRecord.getString("PROVINCE_UUID").equals(tjfxRecord.getString("PROVINCE_BM")))
       {
        continue;
       }else
       {
        //遍历集合数据,产生数据行
        index++;
        row = sheet.createRow(index);
       }
       List<String> airportList=new ArrayList<String>();
       airportList = this.chooseList(airpotTableContent, colIntNums);
       for(int p=0; p<airportList.size(); p++)
       {
        HSSFCell cellthree = row.createCell(p);
        if(p<=3)
        {
         style4.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        }else
        {
         style4.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
        }
        cellthree.setCellStyle(style4);
        cellthree.setCellType(HSSFCell.CELL_TYPE_STRING);
        cellthree.setCellValue(tjfxRecord.getString(airportList.get(p)));
       }
       }
      }
  }
   try {
     workbook.write(out);
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
 
 
 
}
 
 

 

 
 /**
  * 导出按省份查询的统计结果
  * @param request
  * @param response
  */
    public void exportByProvince(HttpServletRequest request,HttpServletResponse response){
     SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM");//设置日期格式
        String today = df1.format(new Date());
        String startDate=null;
        String endDate=null;
        String sortCondition=null;
        String sortName=null;
        if(request.getParameter("startDate")!=null && !request.getParameter("startDate").equals(""))
        { 
         startDate=request.getParameter("startDate");
        }else
        {
         startDate=today;
        }
        if(request.getParameter("endDate")!=null && !request.getParameter("endDate").equals(""))
        {
         endDate=request.getParameter("endDate");
        }else
        {
         endDate=today;
        }
        if(request.getParameter("sortCondition")!=null && !request.getParameter("sortCondition").equals(""))
        {
         sortCondition=request.getParameter("sortCondition");
        }else
        {
         sortCondition=sortCondition;
        }
        if(request.getParameter("sortName")!=null && !request.getParameter("sortName").equals(""))
        {
         sortName=request.getParameter("sortName");
        }else
        {
         sortName=sortName;
        }
        String nowTime="(" + startDate + "-" + endDate + ")";
        String exportFirstRow=request.getParameter("exportFirstRow");
        String exportShowCol=request.getParameter("exportShowCol");
        String hidAreaId=request.getParameter("exportAreaId");
        String hidProvinceId=request.getParameter("exportProvinceId");
        String hidApUUId=request.getParameter("apUUId");
        request.setAttribute("startDate", startDate);
        request.setAttribute("endDate", endDate);
        TjfxHandler tjfxHandler = new TjfxHandler();
        try
        {
            RecordSet provinceRecordSet=tjfxHandler.getProvinceTjfxSumInfo(startDate, endDate, sortCondition, sortName);
            RecordSet tjfxRecprd=tjfxHandler.getSfTjfxSumInfo(startDate, endDate, sortCondition, sortName);
            RecordSet sumRecordSet = tjfxHandler.getSumTjfxInfo(startDate,endDate);
            ExportSfTjfxExcel ex = new ExportSfTjfxExcel();
            response.setContentType("application/vnd.ms-excel");
      response.setHeader("Content-disposition","attachment; filename=" +new String("报表.xls".getBytes("gb2312"), "ISO8859-1" ) );
           
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");//设置日期格式
            String now = df.format(new Date());
            //OutputStream out = new FileOutputStream(address);
            OutputStream out=response.getOutputStream();
            ex.exportExcel("按省份机场生产统计", sumRecordSet, provinceRecordSet, tjfxRecprd, out, hidAreaId, hidProvinceId, hidApUUId, exportFirstRow, exportShowCol, nowTime);
            out.flush();
            out.close();
      
        }
        catch (Exception e)
        {
            log.error("系统首页:" + e);
            throw new BaseException(ErrorCode.IO_EXCEPTION, e);
        }
    }
   
    /**
     * 功能说明:处理管理局列表详细信息显示
     *
     * @param request
     * @param response
     */
    public void handleGljInfo(HttpServletRequest request,
        HttpServletResponse response)
    {
        RequestKit requestKit = (RequestKit) request.getAttribute("RequestKit");
        // 获取前台界面传入的参数值
        SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM");//设置日期格式
        String today = df1.format(new Date());
        String startDate=null;
        String endDate=null;
        String sortCondition=null;
        String sortName=null;
        if(request.getParameter("startDate")!=null && !request.getParameter("startDate").equals(""))
        { 
         startDate=request.getParameter("startDate");
        }else
        {
         startDate=today;
        }
        if(request.getParameter("endDate")!=null && !request.getParameter("endDate").equals(""))
        {
         endDate=request.getParameter("endDate");
        }else
        {
         endDate=today;
        }
        if(request.getParameter("sortCondition")!=null && !request.getParameter("sortCondition").equals(""))
        {
         sortCondition=request.getParameter("sortCondition");
        }else
        {
         sortCondition=sortCondition;
        }
        if(request.getParameter("sortName")!=null && !request.getParameter("sortName").equals(""))
        {
         sortName=request.getParameter("sortName");
        }else
        {
         sortName=sortName;
        }
        request.setAttribute("startDate", startDate);
        request.setAttribute("endDate", endDate);
        request.setAttribute("sortCondition",sortCondition);
        request.setAttribute("sortName",sortName);
        TjfxHandler tjfxHandler = new TjfxHandler();
        try
        {
         RecordSet sumRecordSet = tjfxHandler.getSumTjfxInfo(startDate,endDate);
         RecordSet gljSumRecordSet=tjfxHandler.getGljTjfxSumInfo(startDate, endDate, sortCondition, sortName);
            RecordSet tjfxGljRecprdSet=tjfxHandler.getGljTjfxInfo(startDate, endDate, sortCondition, sortName);
            request.setAttribute("sumRecordSet", sumRecordSet);
            request.setAttribute("gljSumRecordSet", gljSumRecordSet);
            request.setAttribute("tjfxGljRecprdSet", tjfxGljRecprdSet);
            //SortedMap orderMap= tjfxHandler.getOrderMap();
            //request.setAttribute("orderMap",orderMap);
            request.setAttribute("orderValue",Constants.orderValue);
            request.setAttribute("orderName",Constants.orderName);
            forward("/jsp/tjfx/gljtj.jsp");
        }
        catch (ServletException e)
        {
            log.error("系统首页:" + e);
            throw new BaseException(ErrorCode.SERVLET_EXCEPTION, e);
        }
        catch (Exception e)
        {
            log.error("系统首页:" + e);
            throw new BaseException(ErrorCode.IO_EXCEPTION, e);
        }
    }
   
   
    /**
  * 导出按省份查询的统计结果
  * @param request
  * @param response
  */
    public void exportByGlj(HttpServletRequest request,HttpServletResponse response){
     SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM");//设置日期格式
        String today = df1.format(new Date());
        String startDate=null;
        String endDate=null;
        String sortCondition=null;
        String sortName=null;
        if(request.getParameter("startDate")!=null && !request.getParameter("startDate").equals(""))
        { 
         startDate=request.getParameter("startDate");
        }else
        {
         startDate=today;
        }
        if(request.getParameter("endDate")!=null && !request.getParameter("endDate").equals(""))
        {
         endDate=request.getParameter("endDate");
        }else
        {
         endDate=today;
        }
        if(request.getParameter("sortCondition")!=null && !request.getParameter("sortCondition").equals(""))
        {
         sortCondition=request.getParameter("sortCondition");
        }else
        {
         sortCondition=sortCondition;
        }
        if(request.getParameter("sortName")!=null && !request.getParameter("sortName").equals(""))
        {
         sortName=request.getParameter("sortName");
        }else
        {
         sortName=sortName;
        }
        String nowTime="(" + startDate + "-" + endDate + ")";
        String exportFirstRow=request.getParameter("exportFirstRow");
        String exportShowCol=request.getParameter("exportShowCol");
        String hidAreaId=request.getParameter("exportAreaId");
        String hidOfficeId=request.getParameter("exportProvinceId");
        String hidApUUId=request.getParameter("apUUId");
        request.setAttribute("startDate", startDate);
        request.setAttribute("endDate", endDate);
       
        TjfxHandler tjfxHandler = new TjfxHandler();
        try
        {
         RecordSet officeRecordSet=tjfxHandler.getGljTjfxSumInfo(startDate, endDate,sortCondition, sortName);
            RecordSet tjfxRecprd=tjfxHandler.getGljTjfxInfo(startDate, endDate, sortCondition, sortName);
            RecordSet sumRecordSet = tjfxHandler.getSumTjfxInfo(startDate,endDate);
            ExportGljTjfxExcel ex = new ExportGljTjfxExcel();
            response.setContentType("application/vnd.ms-excel");
      response.setHeader("Content-disposition","attachment; filename=" +new String("报表.xls".getBytes("gb2312"), "ISO8859-1" ) );
           
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");//设置日期格式
            String now = df.format(new Date());
            //OutputStream out = new FileOutputStream(address);
            OutputStream out=response.getOutputStream();
            ex.exportGljExcel("按管理局机场生产统计", sumRecordSet, officeRecordSet, tjfxRecprd, out, hidAreaId, hidOfficeId, hidApUUId, exportFirstRow, exportShowCol,nowTime);
            out.flush();
            out.close();
      
        }
        catch (Exception e)
        {
            log.error("系统首页:" + e);
            throw new BaseException(ErrorCode.IO_EXCEPTION, e);
        }
    }
   
   
   
    /**
     *
     * @Title: getProvinceTree
     * @Description: 获取Province树
     */
    public void getProvinceTree(HttpServletRequest request, HttpServletResponse response)
    {
        log.debug("getTree(request,response) enter");
        TjfxHandler handler = new TjfxHandler();
        TreeView tree;
        String strGoPage = "/jsp/tjfx/sfTree.jsp";
        try
        {
            tree = handler.getProvinceTree();
            log.debug("getTree(request,response) : tree = "
                + tree.toJsonString());
            request.setAttribute("tree", tree);
            log.debug("getTree(request,response) leave");
            forwardIgnoreException(strGoPage);
        }
        catch (Exception e)
        {
            log.error("获得航空器制造厂商树:" + e);
            log.debug("getManufactoryTree(request,response) leave");
            throw new BaseException(ErrorCode.EXCEPTION, e);
        }
    }
   
   
    /**
     *
     * @Title: getGljTree
     * @Description: 获取Glj树
     */
    public void getGljTree(HttpServletRequest request, HttpServletResponse response)
    {
        log.debug("getTree(request,response) enter");
        TjfxHandler handler = new TjfxHandler();
        TreeView tree;
        String strGoPage = "/jsp/tjfx/gljTree.jsp";
        try
        {
            tree = handler.getGljTreeInfo();
            log.debug("getTree(request,response) : tree = "
                + tree.toJsonString());
            request.setAttribute("tree", tree);
            log.debug("getTree(request,response) leave");
            forwardIgnoreException(strGoPage);
        }
        catch (Exception e)
        {
            log.error("获得航空器制造厂商树:" + e);
            log.debug("getManufactoryTree(request,response) leave");
            throw new BaseException(ErrorCode.EXCEPTION, e);
        }
    }

 

 
 

 

 

 

 

 

posted @ 2013-03-06 22:29  Brook Legend  阅读(378)  评论(0)    收藏  举报