PHPExcel如何使用来自阅读器的数据

时间:2011-08-12 10:28:01

标签: php 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中的单元格中获取数据。

怎么做?

感谢名单!

3 个答案:

答案 0 :(得分: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用户文档 - 阅读电子表格文件.doc 的文件,其中解释了如何阅读在电子表格中,但不包括使用内容。

要找到答案,你必须深入研究 PHPExcel开发者文档.doc 并进入第4部分(这是我在上面找到的例子)。

是的,我的错是不彻底,但显然这是一个反复出现的问题。 : - )

答案 1 :(得分:3)

用于阅读excel文件,您可以使用此

&#13;
&#13;
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);            
}
&#13;
&#13;
&#13;

答案 2 :(得分:2)

请阅读文档第4.5章(包含在PHPExcel下载包中)