如何使用PHPExcel读取xlsx文件的第二页?

如何使用PHPExcel读取xlsx文件的第二页?,php,phpexcel,import-from-excel,Php,Phpexcel,Import From Excel,我知道如何阅读我的xlsx电子表格并循环阅读第一张表格 它有5张纸,我很难找到第一张以外的任何一张 下面是我使用的代码,它直接来自文档。 您可以看到,我试图利用setActiveSheet,但这引发了对未定义方法PHPExcel::setActiveSheet()的错误调用 代码: $objReader = PHPExcel_IOFactory::createReader('Excel2007'); $objReader->setReadDataOnly(true); $objPHPExc

我知道如何阅读我的xlsx电子表格并循环阅读第一张表格

它有5张纸,我很难找到第一张以外的任何一张

下面是我使用的代码,它直接来自文档。 您可以看到,我试图利用setActiveSheet,但这引发了对未定义方法PHPExcel::setActiveSheet()的错误调用

代码

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("cmt_school_data.xlsx");
//$objPHPExcel->setActiveSheet(1);
$objWorksheet = $objPHPExcel->getActiveSheet();

echo '<table border=1>' . "\n";

foreach ($objWorksheet->getRowIterator() as $row) {

  echo '<tr>' . "\n";

  $cellIterator = $row->getCellIterator();

  // This loops all cells, even if it is not set.
  // By default, only cells that are set will be iterated.
  $cellIterator->setIterateOnlyExistingCells(false);

  foreach ($cellIterator as $cell) {
    echo '<td>' . $cell->getValue() . '</td>' . "\n";
  }

  echo '</tr>' . "\n";

}

echo '</table>' . "\n";
$objReader=PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel=$objReader->load(“cmt_school_data.xlsx”);
//$objPHPExcel->setActiveSheet(1);
$objWorksheet=$objPHPExcel->getActiveSheet();
回显“”。“\n”;
foreach($objWorksheet->getRowIterator()作为$row){
回显“”。“\n”;
$cellIterator=$row->getCellIterator();
//即使未设置,也会循环所有单元格。
//默认情况下,仅迭代设置的单元格。
$cellIterator->setiterateonleyexistingcells(false);
foreach($cellIterator作为$cell){
回显'.$cell->getValue().'.'.\n';
}
回显“”。“\n”;
}
回显“”。“\n”;

好吧……这些名字都是骗人的。setActiveSheetIndex也执行get,因此解决方案如下

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("cmt_school_data.xlsx");
$objWorksheet = $objPHPExcel->setActiveSheetIndex(1);
//objWorksheet = $objPHPExcel->getActiveSheet();
echo '<table border=1>' . "\n";
foreach ($objWorksheet->getRowIterator() as $row) {
  echo '<tr>' . "\n";
  $cellIterator = $row->getCellIterator();
  $cellIterator->setIterateOnlyExistingCells(false); // This loops all cells,
                                                     // even if it is not set.
                                                     // By default, only cells
                                                     // that are set will be
                                                     // iterated.
  foreach ($cellIterator as $cell) {
    echo '<td>' . $cell->getValue() . '</td>' . "\n";
  }
  echo '</tr>' . "\n";
}
echo '</table>' . "\n";
$objReader=PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
$objPHPExcel=$objReader->load(“cmt_school_data.xlsx”);
$objWorksheet=$objPHPExcel->setActiveSheetIndex(1);
//objWorksheet=$objPHPExcel->getActiveSheet();
回显“”。“\n”;
foreach($objWorksheet->getRowIterator()作为$row){
回显“”。“\n”;
$cellIterator=$row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);//这将循环所有单元格,
//即使没有设置。
//默认情况下,仅显示单元格
//一切都会好起来的
//迭代。
foreach($cellIterator作为$cell){
回显'.$cell->getValue().'.'.\n';
}
回显“”。“\n”;
}
回显“”。“\n”;
setLoadAllSheets();
$objPHPExcel=$objReader->load($inputFileName);
回声“
”; echo$objPHPExcel->getSheetCount(),'sheet',($objPHPExcel->getSheetCount()==1)?'s','loaded

; $loadedSheetNames=$objPHPExcel->getSheetNames(); foreach($loadedSheetName作为$sheetIndex=>$loadedSheetName){ echo**$sheetIndex**,'->',$loadedSheetName,'
'; $sheetData=$objPHPExcel->**getSheet**(**$sheetIndex**)->toArray(null、true、true、true); var_dump($sheetData); }?>
我知道现在回答这个问题已经太晚了。但我找到的解决办法如下

//load library - EXCEL
$this->load->library('excel');
$objPHPExcel = PHPExcel_IOFactory::load('./folder/exceldata.xls');

//Get How Many Sheets in your Excel file.
echo $objPHPExcel->getSheetCount();
    foreach($objPHPExcel->getWorksheetIterator() as $worksheet)
    {
      $highestRow = $worksheet->getHighestRow();
      $highestColumn = $worksheet->getHighestColumn();
      //echo $highestRow;
      //echo $highestColumn;
      //die();
      for($row=2; $row<=$highestRow; $row++)
      {
        $column1 = $worksheet->getCellByColumnAndRow(0, $row)->getValue();
        $column2= $worksheet->getCellByColumnAndRow(1, $row)->getValue();

        $finaldata[] = array(
            'data1'   =>    trim($column1),
            'data2'   =>    trim($column2),
          );
      }
    }
    /*echo "<pre>";
    echo count($finaldata);
    print_r($finaldata);
    die();*/
然后,要通过索引访问工作表,请使用getSheet()方法。请注意,图纸的索引是从0开始的。 e、 g

在你的情况下,如果你只想读第2页

$worksheet = $objPHPExcel->getSheet(1);
或者,要从Excel文件中读取所有工作表,必须使用foreach循环,如下所示

//load library - EXCEL
$this->load->library('excel');
$objPHPExcel = PHPExcel_IOFactory::load('./folder/exceldata.xls');

//Get How Many Sheets in your Excel file.
echo $objPHPExcel->getSheetCount();
    foreach($objPHPExcel->getWorksheetIterator() as $worksheet)
    {
      $highestRow = $worksheet->getHighestRow();
      $highestColumn = $worksheet->getHighestColumn();
      //echo $highestRow;
      //echo $highestColumn;
      //die();
      for($row=2; $row<=$highestRow; $row++)
      {
        $column1 = $worksheet->getCellByColumnAndRow(0, $row)->getValue();
        $column2= $worksheet->getCellByColumnAndRow(1, $row)->getValue();

        $finaldata[] = array(
            'data1'   =>    trim($column1),
            'data2'   =>    trim($column2),
          );
      }
    }
    /*echo "<pre>";
    echo count($finaldata);
    print_r($finaldata);
    die();*/
foreach($objPHPExcel->getWorksheetIterator()作为$worksheet)
{
$highestRow=$worksheet->getHighestRow();
$highestColumn=$worksheet->getHighestColumn();
//回声$highestRow;
//echo$highestColumn;
//模具();
对于($row=2;$rowGetCellByColumnRow(0,$row)->getValue();
$column2=$worksheet->getCellByColumnRow(1,$row)->getValue();
$finaldata[]=数组(
'data1'=>trim($column1),
'data2'=>trim($column2),
);
}
}
/*回声“;
回声计数(最终数据);
打印(最终数据);
模具()*/

正如您已经发现的,setActiveSheet()不存在:setActiveSheetIndex()和setActiveSheetIndexByName()是两种可用于更改活动工作表的方法。我可以从哪里下载此库?