2011-08-12 46 views
2

我想了解如何從PHPExcel中的單元格獲取數據,但我不知道。我讀了所有的文檔,我做了這個:PHPExcel如何使用讀取器的數據

<?php 
include('PHPExcel/Classes/PHPExcel/Reader/Excel2007.php'); 
class MyReadFilter implements PHPExcel_Reader_IReadFilter 
{ 
    public function readCell($column, $row, $worksheetName = '') { 
     // Read title row and rows 20 - 30 
     if ($row == 1 || ($row >= 20 && $row <= 30)) { 
      return true; 
     } 

     return false; 
    } 
} 
$objReader = new PHPExcel_Reader_Excel2007(); 
$objReader->setReadFilter(new MyReadFilter()); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load("sample_mymails222.xlsx"); 
print_r($objPHPExcel); 
?> 

print_r顯示非常大的數組。 我認爲有一些函數可以從$ objPHPExcel中的單元格獲取數據。

怎麼辦?

Thanx!

回答

2

請閱讀文檔章節4.5(包含在PHPExcel下載包)

+0

哦,非常感謝你! – Mirgorod

25

對於別人誰想要一個更加有用的答案,在上面的例子中的代碼之後,這裏是一個快速片段,將解析活動工作表放入多維數組中(此示例將忽略OP創建的ReadFilter)。

$data = array(); 
$worksheet = $objPHPExcel->getActiveSheet(); 
foreach ($worksheet->getRowIterator() as $row) { 
    $cellIterator = $row->getCellIterator(); 
    $cellIterator->setIterateOnlyExistingCells(false); 
    foreach ($cellIterator as $cell) { 
    $data[$cell->getRow()][$cell->getColumn()] = $cell->getValue(); 
    } 
} 
var_dump($data); 

順便說一句我說「更有幫助的答案」的原因是,我也有一個很難搞清楚的PHPExcel文件(其中包括6個單獨的文件,並沒有真正的API類參考)首次周圍。

的OP說,他「閱讀所有的文檔」,但我猜測,像我一樣,他通過一個名爲PHPExcel用戶文檔文件中讀取 - 讀電子表格Files.doc,說明如何在電子表格中讀出,但不包括使用內容。

爲了找到答案,你必須深入研究PHPExcel開發者文檔.doc並回到第4部分(我發現上面的例子)。

是的,我的過錯不徹底,但顯然這是一個反覆出現的問題。 :-)

+0

感謝您的工作代碼示例! –

+0

製作發行版的/ Documentation/API目錄中有一個完整的API參考文檔......儘管目錄名稱 –

+0

@MarkBaker PHPExcel非常出色,但有多少人完全無視它的存在,這真是太神奇了!我無法抱怨任何事情!我只是提供一個消解(我知道你真的不需要這樣做),但是我認爲人們認爲找到PHPExcel文檔並不容易,因爲它被顯示的方式。在我看來,Codeigniter的用戶指南是一個偉大的,乾淨的,容易找到所有關於codeigniter的最佳參考之一..您可以搜索信息的方式,例子等。在PHPExcel中,搜索有點困難,但沒有什麼困難。幾乎我所有的問題在這裏,我找到了答案做更好的搜索 – Periback

3

讀取Excel文件,你可以使用這個

require_once('PHPExcel.php'); 
 
$input_file_type = PHPExcel_IOFactory::identify($excel_file); 
 
$obj_reader = PHPExcel_IOFactory::createReader($input_file_type); 
 
$obj_reader->setReadDataOnly(true); 
 
     
 
$objPHPExcel = $obj_reader->load($excel_file); 
 
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0); 
 
$highest_row = $objWorksheet->getHighestRow(); 
 
$highest_col = $objWorksheet->getHighestColumn(); 
 
//$highest_col_index = PHPExcel_Cell::columnIndexFromString($highest_col); 
 
     
 
// start $row from 2, if you want to skip header 
 
for ($counter = 2; $counter <= $highest_row; $counter++) 
 
{ 
 
    $row = $objWorksheet->rangeToArray('A'.$counter.':'.$highest_col.$counter); 
 
    $row = reset($row);    
 
}

+0

我知道你發佈這個以來就是一個looong時間。但我找不到任何幫助。如何在$ row中打印數據?我總是得到'未定義的偏移量'。 PLease一些幫助= \ – PlayHardGoPro

+1

請發送您的代碼 –

+0

真的非常感謝您答覆老兄。我剛剛解決了這個問題,發現了一個document.doc,附有一些解釋...謝謝先生! <3 – PlayHardGoPro