zoukankan      html  css  js  c++  java
  • java 利用poi生成Excel文件

    import java.io.File;  
    import java.io.FileInputStream;  
    import java.io.FileOutputStream;  
    import java.io.OutputStream;  
    import java.util.List;  
      
    import org.apache.log4j.Logger;  
    import org.apache.poi.hssf.usermodel.HSSFCell;  
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;  
    import org.apache.poi.hssf.usermodel.HSSFFont;  
    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.hssf.util.HSSFColor;  
    import org.apache.poi.hssf.util.Region;  
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;  
      /**
        *此文件已经通过测试 OK, 需要poi-3.7-20101029.jar 等日志Jar包  
        **/
    public class ExportExcelUtil {  
    
     private static Logger logger = Logger.getLogger(ExportExcelUtil.class);  
       
     private HSSFWorkbook workbook = null;  
     @SuppressWarnings("unused")  
     private HSSFSheet sheet = null;  
       
     public HSSFWorkbook getWorkbook() {  
      return workbook;  
     }  
      
     public void setWorkbook(HSSFWorkbook workbook) {  
      this.workbook = workbook;  
     }  
      
    // public HSSFSheet getSheet() {  
    //  return sheet;  
    // }  
      
    // public void setSheet(HSSFSheet sheet) {  
    //  this.sheet = sheet;  
    // }  
          
     public ExportExcelUtil(HSSFWorkbook workbook){  
         this.workbook = workbook;  
     }  
       
     public ExportExcelUtil(HSSFWorkbook workbook, HSSFSheet sheet) {  
      super();  
      this.workbook = workbook;  
      this.sheet = sheet;  
     }  
       
     /** 
         * 创建通用的Excel空白行信息 
         * @param workbook 如果为空 则没有样式 
         * @param sheet (创建sheet) 
         * @param rowNO 报表的单行行号(创建第几行) 
         * @param rowHeight 报表的单行行高 
         * @param colNum 报表的总列数 (合并) 
         */  
     public void createExcelRow(HSSFWorkbook workbook, HSSFSheet sheet, int rowNO, int rowHeight, int colNum) {  
      createExcelRow(workbook, sheet, rowNO, -1, colNum, null, -1, null, null);  
     }  
       
     /** 
         * 创建通用的Excel带标题行信息 
         * @param workbook 如果为空 则没有样式 
         * @param sheet (创建sheet) 
         * @param rowNO 报表的单行行号(创建第几行) 
         * @param rowHeight 报表的单行行高 
         * @param colNum 报表的总列数 (合并) 
         * @param fontCaption 报表行中显示的字符 
         */  
     public void createExcelRow(HSSFWorkbook workbook, HSSFSheet sheet, int rowNO, int rowHeight, int colNum, String fontCaption) {  
      createExcelRow(workbook, sheet, rowNO, -1, colNum, fontCaption, -1, null, null);  
     }  
       
     /** 
         * 创建通用的Excel行信息 
         * @param workbook 如果为空 则没有样式 
         * @param sheet (创建sheet) 
         * @param rowNO 报表的单行行号(创建第几行) 
         * @param rowHeight 报表的单行行高 
         * @param colNum 报表的总列数 (合并) 
         * @param fontCaption 报表行中显示的字符 
         * @param fontSize 字体的大小 (字体大小 默认 200) 
         * @param fontWeight 报表表头显示的字符 
         * @param align 字体水平位置 (center中间  right右  left左) 
         * @param colNum 报表的列数 
         */  
     @SuppressWarnings("deprecation")  
     public void createExcelRow(HSSFWorkbook workbook, HSSFSheet sheet, int rowNO, int rowHeight, int colNum, String fontCaption, int fontSize, String fontWeight, String align) {  
            if(colNum < 0) {  
       logger.debug(this.getClass().getName() + " --> Excel column number is null");  
       colNum = 100;    
      }  
        
      HSSFRow row = sheet.createRow(rowNO);  //创建第一行  
      row.setHeight((short) (rowHeight < 1 ? 300 : rowHeight));  //设置行高  
        
         HSSFCell cell = row.createCell(0);//设置第一行  
      cell.setCellType(HSSFCell.ENCODING_UTF_16); //定义单元格为字符串类型  
      cell.setCellValue(new HSSFRichTextString(fontCaption));  
        
      sheet.addMergedRegion(new Region(rowNO, (short) 0, rowNO, (short) (colNum - 1)));   //指定合并区域  
        
      HSSFCellStyle cellStyle = createCellFontStyle(workbook, fontSize, fontWeight, align);  //设定样式  
      if(cellStyle != null){  
       cell.setCellStyle(cellStyle);  
      }  
     }  
       
     /** 
      * 设置报表列头 
      * @param sheet (创建sheet) 
         * @param rowNO 报表的单行行号(创建第几行) 
         * @param rowHeight 报表的单行行高 
         * @param columnHeader 报表行中显示的字符 
      */  
     public void createColumnHeader(HSSFSheet sheet, int rowNO, int rowHeight, String[] columnHeader) {  
      createColumnHeader(sheet, rowNO, rowHeight, columnHeader, -1, null, null);  
     }  
       
     /** 
      * 设置报表列头 
      * @param sheet (创建sheet) 
         * @param rowNO 报表的单行行号(创建第几行) 
         * @param rowHeight 报表的单行行高 
         * @param columnHeader 报表行中显示的字符 
         * @param fontSize 字体的大小 (字体大小 默认 200) 
      */  
     public void createColumnHeader(HSSFSheet sheet, int rowNO, int rowHeight, String[] columnHeader, int fontSize) {  
      createColumnHeader(sheet, rowNO, rowHeight, columnHeader, fontSize, null, null);  
     }   
       
        /** 
         * 设置报表列头 
         * @param sheet (创建sheet) 
         * @param rowNO 报表的单行行号(创建第几行) 
         * @param rowHeight 报表的单行行高 
         * @param columnHeader 报表行中显示的字符 
         * @param fontSize 字体的大小 (字体大小 默认 200) 
         * @param fontWeight 报表表头显示的字符 
         * @param align 字体水平位置 (center中间  right右  left左) 
         */  
     public void createColumnHeader(HSSFSheet sheet, int rowNO, int rowHeight, String[] columnHeader, int fontSize, String fontWeight,  
       String align) {  
      if(columnHeader == null || columnHeader.length < 1){  
       logger.debug(this.getClass().getName() + " --> Excel columnHeader is null");  
       return ;  
      }  
      HSSFRow row = sheet.createRow(rowNO);  
      row.setHeight((short) rowHeight);  
        
      HSSFCellStyle cellStyle = createCellFontStyle(workbook, fontSize, fontWeight, align);  
            if(cellStyle != null){  
             // 设置单元格背景色  
          cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);  
          cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);  
            }  
               
      HSSFCell cell = null;  
      for (int i = 0; i < columnHeader.length; i++) {  
       sheet.setColumnWidth(i, 20 * 256);  //设置列宽,20个字符宽度。宽度参数为1/256,故乘以256  
       cell = row.createCell(i);  
       cell.setCellType(HSSFCell.ENCODING_UTF_16);  
       if(cellStyle != null){cell.setCellStyle(cellStyle);}  
       cell.setCellValue(new HSSFRichTextString(columnHeader[i]));  
      }  
     }  
       
     /** 
      * 创建数据行 
      * @param sheet (创建sheet) 
         * @param rowNO 报表的单行行号(创建第几行) 
         * @param rowHeight 报表的单行行高 
         * @param columnData 报表行中显示的数据 
         * @param maxValue Excel显示的最大上限 
      */  
     public HSSFSheet createColumnData(HSSFSheet sheet, int rowNO,  String[][] columnData, int maxValue){  
      maxValue = (maxValue < 1 || maxValue > 65535 ) ?  65535 : maxValue ;   
      int currRowNO = rowNO;  
      for (int numNO = currRowNO; numNO < columnData.length + currRowNO; numNO++) {  
        if (numNO% maxValue == 0) {  
         sheet = workbook.createSheet();  
         rowNO = 0;  
        }  
        createColumnDataDesc(sheet, numNO, rowNO, currRowNO, -1, columnData);  
        rowNO++;  
      }  
      return sheet;  
     }  
       
     /** 
      * 创建数据行 
      * @param sheet (创建sheet) 
      * @param numNO 序列号 
         * @param rowNO 报表的单行行号(创建第几行) 
         * @param currRowNO 初始行号 
         * @param rowHeight 报表的单行行高 
         * @param columnData 报表行中显示的数据 
      */  
     private void createColumnDataDesc(HSSFSheet sheet, int numNO, int rowNO, int currRowNO, int rowHeight, String[][] columnData) {  
      createColumnDataDesc(sheet, numNO, rowNO, currRowNO, rowHeight, columnData, -1, null, null);  
     }  
       
     /** 
      * 创建数据行 
      * @param sheet (创建sheet) 
         * @param rowNO 报表的单行行号(创建第几行) 
         * @param rowHeight 报表的单行行高 
         * @param columnData 报表行中显示的数据 
      * @param fontSize 字体大小 默认 200 
      * @param fontWeight 字体粗细 ( 值为bold 为加粗) 
      * @param align 字体水平位置 (center中间  right右  left左) 
      * @param maxValue Excel显示的最大上限 
      */  
     public HSSFSheet createColumnData(HSSFSheet sheet, int rowNO, int rowHeight, String[][] columnData, int fontSize, String fontWeight, String align, int maxValue){  
      maxValue = (maxValue < 1 || maxValue > 65535 ) ?  65535 : maxValue ;   
      int currRowNO = rowNO;  
      for (int numNO = currRowNO; numNO < columnData.length + currRowNO; numNO++) {  
        if (numNO% maxValue == 0) {  
         sheet = workbook.createSheet();  
         rowNO = 0;  
        }  
        createColumnDataDesc(sheet, numNO, rowNO, currRowNO,  rowHeight, columnData, fontSize, fontWeight, align);  
        rowNO++;  
      }  
      return sheet;  
     }  
       
     /** 
      * 创建数据行 
      * @param sheet (创建sheet) 
      * @param numNO 序列号 
         * @param rowNO 报表的单行行号(创建第几行) 
         * @param currRowNO 初始行号 
         * @param rowHeight 报表的单行行高 
         * @param columnData 报表行中显示的数据 
         * @param fontSize 字体的大小 (字体大小 默认 200) 
         * @param fontWeight 报表表头显示的字符 
         * @param align 字体水平位置 (center中间  right右  left左) 
      */  
     private void createColumnDataDesc(HSSFSheet sheet, int numNO, int rowNO, int currRowNO, int rowHeight, String[][] columnData, int fontSize, String fontWeight,  
       String align) {  
      if(columnData == null || columnData.length < 1){  
       logger.debug(this.getClass().getName() + " --> Excel columnData is null");  
    //   return ;  
      }  
      HSSFRow row = sheet.createRow(rowNO);  
      row.setHeight((short) rowHeight);  
        
      HSSFCellStyle cellStyle =null;// createCellFontStyle(workbook, fontSize, fontWeight, align);  
      if(cellStyle != null){  
       cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 指定单元格居中对齐   
      } else {  
       cellStyle = workbook.createCellStyle();  
       cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION); // 指定单元格居中对齐  
      }  
      HSSFCell cell = null;  
      for (int i = 0; i < columnData[numNO - currRowNO].length; i++) {  
       sheet.setColumnWidth(i, 20 * 256);  //设置列宽,20个字符宽度。宽度参数为1/256,故乘以256  
       cell = row.createCell(i);  
       cell.setCellType(HSSFCell.ENCODING_UTF_16);  
       if(cellStyle != null){cell.setCellStyle(cellStyle);}  
       cell.setCellValue(new HSSFRichTextString(columnData[numNO - currRowNO][i]));  
      }  
     }  
       
        /** 
         * 创建内容单元格  
         * @param workbook  HSSFWorkbook 
         * @param row  HSSFRow 
         * @param columnNumber  short型的列索引 
         * @param alignType  对齐方式  (默认居中对齐,如果 alignType=true 则左对齐) 
         * @param value  列值 
         */  
     @SuppressWarnings("deprecation")  
     public void cteateDataCell(HSSFWorkbook workbook, HSSFRow row, int columnNumber, boolean alignType, String value) {  
      HSSFCell cell = row.createCell(((short) columnNumber));  
      cell.setCellType(HSSFCell.ENCODING_UTF_16);  
      cell.setCellValue(new HSSFRichTextString(value));  
        
      HSSFCellStyle cellstyle = workbook.createCellStyle();  
      short align = HSSFCellStyle.ALIGN_CENTER_SELECTION;   
      if(alignType){  
       align = HSSFCellStyle.ALIGN_LEFT;   
      }  
      cellstyle.setAlignment(align); // 指定单元格居中对齐  
      cell.setCellStyle(cellstyle);  
     }  
       
     /** 
         * 创建通用的Excel最后一行的信息 (创建合计行 (最后一行)) 
         * @param workbook 如果为空 则没有样式 
         * @param sheet  
         * @param colNum 报表的总列数 (合并) 
         * @param fontCaption 报表行中显示的字符 
         * @param fontSize 字体的大小 (字体大小 默认 200) 
         * @param fontWeight 报表表头显示的字符 
         * @param align 字体水平位置 (center中间  right右  left左) 
         * @param colNum 报表的列数 (需要合并到的列索引) 
         *  
         */  
     @SuppressWarnings("deprecation")  
     public void createSummaryRow(HSSFWorkbook workbook, HSSFSheet sheet,  
       int colNum, String fontCaption, int fontSize, String fontWeight,  
       String align) {  
      
      HSSFCellStyle cellStyle = createCellFontStyle(workbook, fontSize, fontWeight, align);  
      
      HSSFRow lastRow = sheet.createRow((short) (sheet.getLastRowNum() + 1));  
      HSSFCell sumCell = lastRow.createCell(0);  
      
      sumCell.setCellValue(new HSSFRichTextString(fontCaption));  
      if(cellStyle != null){sumCell.setCellStyle(cellStyle);}  
      sheet.addMergedRegion(new Region(sheet.getLastRowNum(), (short) 0, sheet.getLastRowNum(), (short) (colNum - 1)));// 指定合并区域  
     }  
       
     /** 
      * 设置字体样式   (字体为宋体 ,上下居中对齐,可设置左右对齐,字体粗细,字体大小 ) 
      * @param workbook 如果为空 则没有样式 
      * @param fontSize 字体大小 默认 200 
      * @param fontWeight 字体粗细 ( 值为bold 为加粗) 
      * @param align 字体水平位置 (center中间  right右  left左) 
      */  
     public HSSFCellStyle createCellFontStyle(HSSFWorkbook workbook, int fontSize, String fontWeight, String align){  
      if(workbook == null){   
       logger.debug(this.getClass().getName() + " --> Excel HSSFWorkbook FontStyle is not set");  
       return null;  
      }  
       
            HSSFCellStyle cellStyle = workbook.createCellStyle();  
             
            cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐  
      if(align != null && align.equalsIgnoreCase("left")){  
       cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT); // 指定单元格居中对齐  
      }  
      if(align != null && align.equalsIgnoreCase("right")){  
       cellStyle.setAlignment(HSSFCellStyle.ALIGN_RIGHT); // 指定单元格居中对齐  
      }  
        
      cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐  
      cellStyle.setWrapText(true);// 指定单元格自动换行  
        
      // 单元格字体  
      HSSFFont font = workbook.createFont();  
      if(fontWeight != null && fontWeight.equalsIgnoreCase("normal")){  
       font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);  
      } else{  
       font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
      }  
        
      font.setFontName("宋体");  
      font.setFontHeight((short) (fontSize < 1 ? 200 : fontSize) );  
      cellStyle.setFont(font);  
        
        // 设置字体  
    //        HSSFFont font = workbook.createFont();  
    //        font.setFontHeightInPoints((short) 20); //字体高度  
    //        font.setColor(HSSFFont.COLOR_RED); //字体颜色  
    //        font.setFontName("黑体"); //字体  
    //        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //宽度  
    //        font.setItalic(true); //是否使用斜体  
    //        font.setStrikeout(true); //是否使用划线  
    //  // 添加单元格注释  
    //        // 创建HSSFPatriarch对象,HSSFPatriarch是所有注释的容器.  
    //         HSSFPatriarch patr = sheet.createDrawingPatriarch();  
    //        // 定义注释的大小和位置,详见文档  
    //         HSSFComment comment = patr.createComment(new HSSFClientAnchor(0, 0, 0, 0, (short)4, 2, (short) 6, 5));  
    //        // 设置注释内容  
    //         comment.setString(new HSSFRichTextString("可以在POI中添加注释!"));  
    //        // 设置注释作者. 当鼠标移动到单元格上是可以在状态栏中看到该内容.  
    //         comment.setAuthor("Xuys.");  
      
      return cellStyle;  
     }  
       
     /** 
      * 导出EXCEL文件 
      * @param fileName 文件名称 
      * 测试程序 
      *  
      * //  private static HSSFWorkbook workbook = new HSSFWorkbook(); 
    //      private static HSSFSheet sheet = workbook.createSheet(); 
      HSSFWorkbook workbook = new HSSFWorkbook(); 
            HSSFSheet sheet = workbook.createSheet(); 
      ExportExcelUtil eeu = new ExportExcelUtil(workbook, sheet); 
     
      String[] strArr = new String[] { "序号", "姓名", "性 别", "出生年月", "民族", "籍贯", "备注" }; 
      int colNum = strArr.length; 
     
      int rowNO = 0; 
      //1. titleCaption 
      eeu.createExcelRow(workbook, sheet, rowNO, -1, colNum, "统计报表"); // , 250, "bold", "center" 
      //2. 
      rowNO++; 
      eeu.createExcelRow(workbook, sheet, rowNO, 200, colNum, 
        " 制 表 人: 赵小明       制 表 日 期: " + new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date()), 180, "normal", "right"); 
      //3.columnTitleHeader 
      rowNO++; 
      eeu.createColumnHeader(sheet, rowNO, 300, strArr); 
       
      //4.数据行     循环创建中间的单元格的各项的值 
      rowNO++; 
      String[][] columnData = new String[][]{{ "1", "zhangsan", "男", "1985-10-06 21:00:00", "汉族", "西安", "学生" }, 
        { "2", "猪猪", "女", "出生年月", "民族", "籍贯", "备注" }, 
        { "3", "明明", "男", "1980-07-08", "汉族", "西安", "学生" }, 
        { "4", "光光", "女", "1985-06-30", "汉族", "西安", "学生" }, 
        { "5", "先民", "男", "1987-06-06", "汉族", "西安", "学生" }, 
        { "6", "数据", "女", "1985-04-06", "汉族", "西安", "学生" }, 
        { "7", "历史", "女", "1985-06-06", "汉族", "西安", "学生" }, 
        { "8", "妩媚", "女", "1990-10-06", "汉族", "西安", "学生" }, 
        { "9", "李斯", "男", "1985-06-20", "汉族", "西安", "学生" }, 
        { "10", "犀利", "女", "1985-06-06", "汉族", "西安", "学生" }, 
        { "11", "绅士", "男", "1985-01-06", "汉族", "西安", "学生" }, 
        { "12", "先知", "女", "1984-06-06", "汉族", "西安", "学生" }, 
        { "13", "精明", "男", "1985-06-12", "汉族", "西安", "学生" }, 
        { "14", "科技", "男", "1972-02-03", "汉族", "西安", "学生" }, 
        { "15", "软件", "女", "1985-02-06", "汉族", "西安", "学生" }, 
        { "16", "世道", "男", "1999-03-06", "汉族", "西安", "学生" }, 
        { "17", "明了", "女", "1985-06-06", "汉族", "西安", "学生" }, 
        { "18", "小明", "男", "1984-06-09", "汉族", "西安", "学生" }, 
        { "19", "高娟", "女", "1985-03-06", "汉族", "西安", "学生" }, 
        { "20", "小莉", "女", "1987-12-25", "汉族", "西安", "学生" }} ; 
      sheet = eeu.createColumnData(sheet, rowNO,  columnData, 7); 
            eeu.createSummaryRow(workbook, sheet, colNum, "合计:" + columnData.length, 180, "normal", "right"); 
      eeu.exportExcel("f://Test2011-07-29//test.xls"); 
      */  
     public void exportExcel(String fileName) {  
      OutputStream os = null;  
      try{  
       os = new FileOutputStream(new File(fileName));  
       workbook.write(os);  
       os.close();  
      }catch(Exception e){  
       logger.debug(this.getClass().getName() + " --> export Excel file error :" + e.getMessage());  
      }  
     }  
      
      /**  
       *   利用模板导出Excel 
       *   @param   inputFile   输入模板文件路径  
       *   @param   outputFile   输入文件存放于服务器路径  
       *   @param   dataList   待导出数据  
       *   @throws   Exception  
       *   @roseuid:  
       */   
     @SuppressWarnings("deprecation")  
     public void exportExcelFile(String inputFileName, String outputFileName,  
       List<?> dataList) throws Exception {  
      // 用模板文件构造poi  
      POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFileName));  
      // 创建模板工作表  
      HSSFWorkbook templatewb = new HSSFWorkbook(fs);  
      // 直接取模板第一个sheet对象  
      HSSFSheet templateSheet = templatewb.getSheetAt(1);  
      if (dataList.size()% 65535 == 0) {  
       templateSheet = templatewb.createSheet();  
      }  
      // 得到模板的第一个sheet的第一行对象 为了得到模板样式  
      HSSFRow templateRow = templateSheet.getRow(0);  
      
      // HSSFSheet timplateSheet = templatewb.getSheetAt(1);  
      // 取得Excel文件的总列数  
      int columns = templateSheet.getRow((short) 0)  
        .getPhysicalNumberOfCells();  
      System.out.println("columns   is   :   " + columns);  
      // 创建样式数组  
      HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];  
      
      // 一次性创建所有列的样式放在数组里  
      for (int s = 0; s < columns; s++) {  
       // 得到数组实例  
       styleArray[s] = templatewb.createCellStyle();  
      }  
      // 循环对每一个单元格进行赋值  
      // 定位行  
      for (int rowId = 1; rowId < dataList.size(); rowId++) {  
       // 依次取第rowId行数据 每一个数据是valueList  
       List<?> valueList = (List<?>) dataList.get(rowId - 1);  
       // 定位列  
       for (int columnId = 0; columnId < columns; columnId++) {  
        // 依次取出对应与colunmId列的值  
        // 每一个单元格的值  
        String dataValue = (String) valueList.get(columnId);  
        // 取出colunmId列的的style  
        // 模板每一列的样式  
        HSSFCellStyle style = styleArray[columnId];  
        // 取模板第colunmId列的单元格对象  
        // 模板单元格对象  
        HSSFCell templateCell = templateRow.getCell((short) columnId);  
        // 创建一个新的rowId行 行对象  
        // 新建的行对象  
        HSSFRow hssfRow = templateSheet.createRow(rowId);  
        // 创建新的rowId行 columnId列 单元格对象  
        // 新建的单元格对象  
        HSSFCell cell = hssfRow.createCell((short) columnId);  
        // 如果对应的模板单元格 样式为非锁定  
        if (templateCell.getCellStyle().getLocked() == false) {  
         // 设置此列style为非锁定  
         style.setLocked(false);  
         // 设置到新的单元格上  
         cell.setCellStyle(style);  
        }  
        // 否则样式为锁定  
        else {  
         // 设置此列style为锁定  
         style.setLocked(true);  
         // 设置到新单元格上  
         cell.setCellStyle(style);  
        }  
        // 设置编码  
        // cell.setEncoding(HSSFCell.ENCODING_UTF_16);  
        // Debug.println( "dataValue   :   " + dataValue);  
        // 设置值 统一为String  
        cell.setCellValue(dataValue);  
       }  
      }  
      // 设置输入流  
      FileOutputStream fOut = new FileOutputStream(outputFileName);  
      // 将模板的内容写到输出文件上  
      templatewb.write(fOut);  
      fOut.flush();  
      
      // 操作结束,关闭文件  
      fOut.close();  
      
     }  
       
     public static void main(String[] args) {  
    //  private static HSSFWorkbook workbook = new HSSFWorkbook();  
    //      private static HSSFSheet sheet = workbook.createSheet();  
      HSSFWorkbook workbook = new HSSFWorkbook();  
            HSSFSheet sheet = workbook.createSheet();  
      ExportExcelUtil eeu = new ExportExcelUtil(workbook, sheet);  
      
      String[] strArr = new String[] { "序号", "姓名", "性 别", "出生年月", "民族", "籍贯", "备注" };  
      int colNum = strArr.length;  
        
      int rowNO = 0;  
      //1. titleCaption  
      eeu.createExcelRow(workbook, sheet, rowNO, -1, colNum, "统计报表"); // , 250, "bold", "center"  
      //2.  
      rowNO++;  
      eeu.createExcelRow(workbook, sheet, rowNO, 200, colNum,  
        " 制 表 人: 赵小明       制 表 日 期: " + new java.text.SimpleDateFormat("yyyy-MM-dd").format(new java.util.Date()), 180, "normal", "right");  
      //3.columnTitleHeader  
      rowNO++;  
      eeu.createColumnHeader(sheet, rowNO, 300, strArr);  
        
      //4.数据行     循环创建中间的单元格的各项的值  
      rowNO++;  
      String[][] columnData = new String[][]{{ "1", "zhangsan", "男", "1985-10-06 21:00:00", "汉族", "西安", "学生" },  
        { "2", "猪猪", "女", "出生年月", "民族", "籍贯", "备注" },  
        { "3", "明明", "男", "1980-07-08", "汉族", "西安", "学生" },  
        { "4", "光光", "女", "1985-06-30", "汉族", "西安", "学生" },  
        { "5", "先民", "男", "1987-06-06", "汉族", "西安", "学生" },  
        { "6", "数据", "女", "1985-04-06", "汉族", "西安", "学生" },  
        { "7", "历史", "女", "1985-06-06", "汉族", "西安", "学生" },  
        { "8", "妩媚", "女", "1990-10-06", "汉族", "西安", "学生" },  
        { "9", "李斯", "男", "1985-06-20", "汉族", "西安", "学生" },  
        { "10", "犀利", "女", "1985-06-06", "汉族", "西安", "学生" },  
        { "11", "绅士", "男", "1985-01-06", "汉族", "西安", "学生" },  
        { "12", "先知", "女", "1984-06-06", "汉族", "西安", "学生" },  
        { "13", "精明", "男", "1985-06-12", "汉族", "西安", "学生" },  
        { "14", "科技", "男", "1972-02-03", "汉族", "西安", "学生" },  
        { "15", "软件", "女", "1985-02-06", "汉族", "西安", "学生" },  
        { "16", "世道", "男", "1999-03-06", "汉族", "西安", "学生" },  
        { "17", "明了", "女", "1985-06-06", "汉族", "西安", "学生" },  
        { "18", "小明", "男", "1984-06-09", "汉族", "西安", "学生" },  
        { "19", "高娟", "女", "1985-03-06", "汉族", "西安", "学生" },  
        { "20", "小莉", "女", "1987-12-25", "汉族", "西安", "学生" }} ;  
      sheet = eeu.createColumnData(sheet, rowNO,  columnData, 7);  
            eeu.createSummaryRow(workbook, sheet, colNum, "合计:" + columnData.length, 180, "normal", "right");  
      eeu.exportExcel("f://Test2011-07-29//test.xls");  
      /*  
      在用java 编写生成报表时发现了个问题,将行,列隐藏,将列隐藏很简单用 
        this.sheet.setColumnHidden((short)12, true);将第13列隐藏注意excel的第一列用0表示 
     
      隐藏行: 
     
      HSSFRow row     = sheet.getRow(8);  
          row.setZeroHeight(true); 
     
      将第8行隐藏就是将他的高度设为0也等同为隐藏 
    */  
     }  
      
       
       
    }  
      
  • 相关阅读:
    谈谈关于个人提升的一些思考
    asp.net 委托用法
    DNN 配置 数据库篇
    一个技术为主的博客沦落为娱乐休息的场所
    NDO 组件和例子下载,内置了一个基于Velocity模版引擎的代码生成器
    DNN 研究路线图
    学习DNN开发模块插件的几条主线
    NDO 快速入门
    NDO 简介
    也谈代码生成器
  • 原文地址:https://www.cnblogs.com/llzzy/p/3232299.html
Copyright © 2011-2022 走看看