javaPOI導出excel代碼

此文件已經通過測試 OK, 需要poi-3.7-20101029.jar 等日誌Jar包  
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;  
  
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也等同爲隱藏 
*/  
 }  
  
   
   
}  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章