Erlo

PHPExcel大文件处理方法

时间:2017-11-15   阅读:1466次   来源:Erlo.vip
页面报错
点赞

<?php

    include('PHPExcel.php');

    include('PHPExcel/IOFactory.php');

    #zs#*

    *PHPExcel.php 这个类文件可以直接百度下载一个。它是一个完整的插件。里面有很多方法可以用

     * 读取excel过滤器类 单独文件

     #fzs#

    class PHPExcelReadFilter implements PHPExcel_Reader_IReadFilter {


        public $startRow = 1;

        public $endRow;


        public function readCell($column, $row, $worksheetName = '') {

            if (!$this->endRow) {

                return true;

            }

            

            if ($row >= $this->startRow && $row <= $this->endRow) {

                return true;

            }


            return false;

        }


    }

    #zs#*

     * 读取excel转换成数组

     *

     * @param string $excelFile 文件路径

     * @param int $startRow 开始读取的行数

     * @param int $endRow 结束读取的行数

     * @return array

     #fzs#

    class ljExcel{

        public function readFromExcel($excelFile, $startRow = 1, $endRow = 100) {

            

            #zs##fzs#

            $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;

            $cacheSettings = array( 'memoryCacheSize' => '380MB');

            PHPExcel_Settings::setCacheStorageMethod($cacheMethod,$cacheSettings);

            #zs##fzs#

            

            

            $excelType = PHPExcel_IOFactory::identify($excelFile);

            $excelReader = PHPExcel_IOFactory::createReader($excelType);


            if(strtoupper($excelType) == 'CSV') {

                $excelReader->setInputEncoding('GBK');

            }


            if ($startRow && $endRow) {

                $excelFilter           = new PHPExcelReadFilter();

                $excelFilter->startRow = $startRow;

                $excelFilter->endRow   = $endRow;

                $excelReader->setReadFilter($excelFilter);

            }


            $phpexcel    = $excelReader->load($excelFile);

            $activeSheet = $phpexcel->getActiveSheet();


            $highestColumn      = $activeSheet->getHighestColumn(); //最后列数所对应的字母,例如第1行就是A

            $highestColumnIndexs = PHPExcel_Cell::columnIndexFromString($highestColumn); //总列数

            $highestColumnIndex=$highestColumnIndexs;

            unset($highestColumnIndexs);

            

            $data = array();

            for ($row = $startRow; $row <= $endRow; $row++) {

                for ($col = 0; $col < $highestColumnIndex; $col++) {

                    $data[$row][] = (string) $activeSheet->getCellByColumnAndRow($col, $row)->getValue();

                }

                if(implode($data[$row], '') == '') {

                    unset($data[$row]);

                }

            }

            return $data;

        }

    }


提交留言

评论留言

还没有评论留言,赶紧来抢楼吧~~

吐槽小黑屋()

* 这里是“吐槽小黑屋”,所有人可看,只保留当天信息。

  • Erlo吐槽

    Erlo.vip2021-06-23 04:59:21Hello、欢迎使用吐槽小黑屋,这就是个吐槽的地方。
  • 返回顶部

    给这篇文章打个标签吧~

    棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认