【问题标题】:Reading values from specific range of cells using phpexcel使用phpexcel从特定范围的单元格中读取值
【发布时间】:2014-01-15 03:12:53
【问题描述】:

我对@9​​87654322@ 很陌生。我想要做的是从下面的excel电子表格中读取一些单元格是一个示例电子表格,突出显示的部分显示了要读取的部分

我已经做了一些必要的初始化:

  $objPHPExcel = PHPExcel_IOFactory::load($filename); 

任何建议都会有所帮助,谢谢。

【问题讨论】:

  • 除了加载文件之外,您还尝试过什么?无论如何,我不确定是否有任何 phpexcel 舒适功能可以阅读整个区域;也许你可以遍历文件并读取每个单元格的值,这是基本思想..

标签: php phpexcel


【解决方案1】:

您可以使用 Worksheet 的 rangeToArray() 方法将单元格区域的内容传输到 PHP 数组:

$myDataArray = $objPHPExcel->getActiveSheet()->rangeToArray('B4:N7', NULL, True, True);

方法的参数是:

 * @param string $pRange Range of cells (i.e. "A1:B10"), or just one cell (i.e. "A1")
 * @param mixed $nullValue Value returned in the array entry if a cell doesn't exist
 * @param boolean $calculateFormulas Should formulas be calculated?
 * @param boolean $formatData Should formatting be applied to cell values?
 * @param boolean $returnCellRef False - Return a simple array of rows and columns 
 *                                       indexed by number counting from zero
 *                               True -  Return rows and columns indexed by their 
 *                                       actual row and column IDs

【讨论】:

  • 谢谢,这个方法也很酷。在看到这篇文章之前,我已经做了一个解决方法。但对于我的问题,这些列是动态的,即可能不仅仅以'N7'结束
  • 如果列是动态的,则计算出范围并构建一个字符串,如'B4:N7'
  • 有没有办法做到这一点没有加载文件?当我加载文件时,它会带来“允许的内存大小”问题。
  • @AleOtero93 - 然后只加载您需要的文件部分,或使用单元缓存,或任何减少内存使用的记录方法......但如果您想从一个电子表格文件,那么您必须至少加载该文件的一部分
  • @AleOtero93 - 你已经成为 StackOverflow 的成员足够长的时间了,知道如果你想问一个问题,那么你应该把它作为一个问题来问,而不是作为对答案的评论一个模糊相关的问题
【解决方案2】:

我已经找到了解决这个问题的方法......

$objReader = new PHPExcel_Reader_Excel2007();
        $objReader->setReadDataOnly(true);
        $objPHPExcel = $objReader->load($filename); // load filename into PHPExcel object
        $objPHPExcel->setActiveSheetIndexByName('CA1');
        $objWorksheet = $objPHPExcel->getActiveSheet();

        $row_index = $objWorksheet->getHighestRow(); // e.g. 5
        $col_name = $objWorksheet->getHighestColumn(); // e.g. B
        $col_index = PHPExcel_Cell::columnIndexFromString($col_name); // e.g. 1 (which is equivalent to B)


        for($row =4; $row <= $row_index; $row++){                
            for($col=1; $col<=$col_index; $col++){
                echo $objWorksheet->getCellByColumnAndRow($col, $row)->getValue().' ';
            }
            echo '<br>';
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-25
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    相关资源
    最近更新 更多