2012-10-23 18 views
1

我使用PHPExcel library打開現有的Excel電子表格然後在其中創建一個新工作表獲取新創建的工作表的ID?

我正在使用的代碼(不包括所有的初始化的/等保存爲所有正常工作)如下:

#======================================================# 
# OPEN EXISTING EXCEL SPREADSHEET      # 
#======================================================# 

    if (!file_exists(CURRENT_FILE)) { 
     exit("Please run " . CURRENT_FILE . " first." . EOL); 
    } 

    echo date('H:i:s') , " Load from Excel2007 file" , EOL; 
    $objPHPExcel = PHPExcel_IOFactory::load(CURRENT_FILE); 

#======================================================# 



#======================================================# 
# SET UP WORKSHEETS         # 
#======================================================# 

    echo date('H:i:s') , " Create new worksheet for month" , EOL; 
    $objPHPExcel->createSheet(); 
    $objPHPExcel->getActiveSheet()->setTitle(date("d M", strtotime($weeks[1])) . ' - ' . date("d M", strtotime($weeks[4]))); 

#======================================================# 

什麼我試圖做的是:

  • 打開現有的Excel文件(這可能對已經1個或多個工作表)
  • 創建一個新的工作表
  • 設置新的w^orksheet的標題
  • 內容添加到新的工作表

然而,似乎是發生什麼是這樣的:

  • 打開現有的Excel文件
  • 創建一個新的工作表
  • 集的第一個工作表的標題爲我設置的日期
  • 將內容添加到FIRST工作表

PHP Excel Worksheets

所以,我想我需要做的是這樣的:

  • 打開現有Excel文件
  • 添加新的工作表
  • 獲取新添加的工作表的ID(像mysql_insert_id()這樣的命令)
  • 將活動工作表設置爲該ID
  • 設置活動工作表
  • 的標題內容添加到活動工作表

不過,我似乎無法找到PHPExcel文檔中這樣的命令。有一個存在嗎?如果沒有,是否有任何可行的解決方法呢?我不想覆蓋本文檔中的現有工作表。

由於提前,

+0

什麼版本的PHPExcel?你使用最新的1.7.8版本嗎? –

+0

對不起@MarkBaker - 是的。 – dunc

回答

2

您可以採取的createSheet()進行方法實際上返回你的新工作表的事實。

$newMonthSheet = $objPHPExcel->createSheet(); 
$newMonthSheet->setTitle(date("d M", strtotime($weeks[1])) . ' - ' . date("d M", strtotime($weeks[4]))); 
+0

棒極了。然後,爲了添加內容,我簡單地使用'$ newMonthSheet-> getActiveSheet() - > setCellValue('A1',''value');'? – dunc

+0

啊 - 刪除'getActiveSheet'命令,工作正常。如果你在Mark附近,還有另外一個問題 - 那麼我怎樣才能將這個最新的表格設置爲'activeIndex',即Excel第一次打開文件時顯示的工作表? – dunc

+1

$ newMonthSheet是一個工作表對象,而不是工作簿對象,因此您不必調用getActiveSheet()對工作表來設置活動工作表,有$ objPHPExcel-> setActiveSheetIndex($ n)其中$ n是索引或者($ objPHPExcel-> setActiveSheetIndexByName($ name)),其中$ name是您給出的工作表的名稱/標題 –

相關問題