/**
 * Excel WorkBook對象類
 * @author zhouqian
 *
 */
public class ExcelWorkBook {
 /** 工作簿 */
 private static HSSFWorkbook workbook = new HSSFWorkbook();
 
 /** 工作表 */
 private HSSFSheet sheet;
 
 /** 表頭數據 */
 private String[] tableHeader;
 
 /**
  * 構造函數
  * @param workbookName 工作表名
  * @param tableHeader 表頭數據
  */
 public ExcelWorkBook(String workbookName, String[] tableHeader) {
  super();
  this.tableHeader = tableHeader;
  sheet = workbook.createSheet(workbookName);
 }
 
 /**
  * 創建表頭
  * @param headerName
  */
 public void createTableHeader(String headerName) {
  HSSFHeader header = sheet.getHeader();
  header.setCenter(headerName);
  HSSFRow headerRow = sheet.createRow(0);
  int cellNumber = tableHeader.length;
  for (int i = 0; i < cellNumber; i++) {
   HSSFCell headerCell = headerRow.createCell((short)i);
   headerCell.setEncoding(HSSFCell.ENCODING_UTF_16);
   headerCell.setCellValue(tableHeader[i]);
  }
 }
 
 /**
  * 創建行
  * @param data 要寫入的數據
  * @param rowIndex 第rowIndex行
  */
 public void createTableRow(String[] data, int rowIndex) {
  HSSFRow row = sheet.createRow(rowIndex);
  for (int i = 0; i < data.length; i++) {
   HSSFCell cell = row.createCell((short)i);
   cell.setEncoding(HSSFCell.ENCODING_UTF_16);
   cell.setCellValue(data[i]);
  }
  
 }
 
 /**
  * 創建整個Excel表
  * @param headerName
  */
 public void createExcelSheet(String headerName, String[][] data) {
  this.createTableHeader(headerName);
  
  String[] rowData;
  for (int i = 0; i < data.length; i++) {
   rowData = data[i];
   createTableRow(rowData, i + 1);
  }
  
 }
 
 /**
  * 導出Excel表格
  * @param os
  * @throws IOException
  */
 public void exportExcel(OutputStream os) throws IOException {
  sheet.setGridsPrinted(true);
  HSSFFooter footer = sheet.getFooter();
  footer.setRight("Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages());
  workbook.write(os);
 }

 public HSSFSheet getSheet() {
  return sheet;
 }

 public void setSheet(HSSFSheet sheet) {
  this.sheet = sheet;
 }

 public String[] getTableHeader() {
  return tableHeader;
 }

 public void setTableHeader(String[] tableHeader) {
  this.tableHeader = tableHeader;
 }
}