phpexcel选择图纸和柱

phpexcel选择图纸和柱,php,memory,phpexcel,Php,Memory,Phpexcel,我目前正在做一项作业,要求我循环浏览一个巨大的excel文件。我正在使用phpexcel来完成这项工作。我在这个项目中有两个问题 问题是当我加载文件时,我得到内存已满错误 在使用setActiveSheetIndex(“”)函数时,我试图读取 代码一页接一页,但目前我不能 我只需要选取选定的列,而不是整行,我 已尝试实现phpexcel用户指南中所示的示例,但 如果没有做到这一点,我必须实施这一点,以减少成本 处理时间 这是我正在使用的代码 set_time_limit (6000); requ

我目前正在做一项作业,要求我循环浏览一个巨大的excel文件。我正在使用phpexcel来完成这项工作。我在这个项目中有两个问题

  • 问题是当我加载文件时,我得到内存已满错误 在使用
    setActiveSheetIndex(“”)
    函数时,我试图读取 代码一页接一页,但目前我不能

  • 我只需要选取选定的列,而不是整行,我 已尝试实现phpexcel用户指南中所示的示例,但 如果没有做到这一点,我必须实施这一点,以减少成本 处理时间

  • 这是我正在使用的代码

    set_time_limit (6000);
    require_once('classes/phpexcel.php');
    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
    $objReader->setReadDataOnly(true);
    $objPHPExcel = $objReader->load("2.xlsx");
    $objWorksheet = $objPHPExcel->setActiveSheetIndex('0') ;
    $i=0;$dum=false;$sum=0;
    foreach ($objWorksheet->getRowIterator() as $row) 
    {
    $cellIterator = $row->getCellIterator();
    $cellIterator->setIterateOnlyExistingCells(false); 
    if($dum) //to ignore first cell 
    {                                                  .
    foreach ($cellIterator as $cell) 
    {    if($i==2||$i==3||$i==4||$i==9)
        {
              if($i==2)
              {
              $value[$i]=$cell->getValue();
              $num1=$value[$i]; // get the starting date and time
              }
              if($i==3)
              {
              $value[$i]=$cell->getValue();
              $num2=$value[$i]; // get the ending date and time
              }
              if($i==4)
              { 
              $value[$i]=$cell->getValue(); 
              $asd=preg_split('#(?=\d)(?<=[a-z])#i',$value[$i] ); //convert strings as asd12321 to asd , 12321
              $value[$i]=$asd[1]; // to read only digit
              }
              if($i==9)
              {
              $value[$i]=$cell->getValue(); // read a string
              $value[$i+1]=$num2-$num1; //to take diff in minutes between the two 
              }
    
        }$i++;
    
    }$i=0;
    
    $con =  mysql_connect("localhost","root","");
    if (!$con)
    {$value[0]=$value[2];
     die('Could not connect: ' . mysql_error());
    }mysql_select_db("mobilink", $con);
    $sql="INSERT INTO my query ....";
    if (!mysql_query($sql,$con))
    {
    die('Error: ' . mysql_error());
    }
    $sum++;
    
    
     mysql_close($con);
       }
     $dum=true;
    
    }
    
    设置时间限制(6000);
    一次需要_('classes/phpexcel.php');
    $objReader=PHPExcel_IOFactory::createReader('Excel2007');
    $objReader->setReadDataOnly(true);
    $objPHPExcel=$objReader->load(“2.xlsx”);
    $objWorksheet=$objPHPExcel->setActiveSheetIndex('0');
    $i=0$dum=假$总和=0;
    foreach($objWorksheet->getRowIterator()作为$row)
    {
    $cellIterator=$row->getCellIterator();
    $cellIterator->setiterateonleyexistingcells(false);
    if($dum)//忽略第一个单元格
    {                                                  .
    foreach($cellIterator作为$cell)
    {如果($i==2 | |$i==3 | |$i==4 | |$i==9)
    {
    如果($i==2)
    {
    $value[$i]=$cell->getValue();
    $num1=$value[$i];//获取开始日期和时间
    }
    如果($i==3)
    {
    $value[$i]=$cell->getValue();
    $num2=$value[$i];//获取结束日期和时间
    }
    如果($i==4)
    { 
    $value[$i]=$cell->getValue();
    $asd=preg_split('#)(?=\d)(?在文档中

    http://phpexcel.codeplex.com/downloads/get/504328
    
    第7页第4.3节介绍了如何选择特定列而不是整个电子表格

    class MyReadFilter implements PHPExcel_Reader_IReadFilter {
    
     public function readCell($column, $row, $worksheetName = '') { 
    // Read rows 1 to 7 and columns A to E only 
    if ($row >= 1 && $row <= 7) {
     if (in_array($column,range('A','E'))) {
     return true; 
       }
     } 
      return false;
     } 
    } 
    /** Create an Instance of our Read Filter **/
    
     $filterSubset = new MyReadFilter();
     [...]
    
    类MyReadFilter实现PHPExcel\u Reader\u IReadFilter{
    公共函数readCell($column,$row,$worksheetName=''){
    //仅读取第1行至第7行和第A列至第E列
    如果($row>=1&&$row