• PHPExcel所遇到问题的知识点总结


    工作中进行excel的时候遇到了两个问题,

    1.excel表中列值过大,由于没有进行特殊处理,程序没法正常运行;

    2.列值中含有日期格式的文本,不能正确读取;

    所以通过网络搜索,并解决了问题,记录一下,以备后用:

    解决方法:

    /****知识点总结*****
    1.列数值过大,可以通过 PHPExcel_Cell::columnIndexFromString($column),获取最大列的数值

    2.针对表格中有日期的,可以通过PHPExcel_Shared_Date::ExcelToPHP($value) 进行格式化,
    如获取一个日期值,可如下面语句进行获取:
    $date = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue()));

    *******************/

    <?php
    //PHPExcel类获取地址 https://github.com/PHPOffice/PHPExcel
    //引入PHPExcel类文件
    include_once './PHPExcel.php';
    //读取的excel文件
    $excelFile = './test.xlsx';
    
    /**实例化读取excel文件类,根据excel版本进行不同获取,下面是不同方式*/
    /***
        //Excel5方式
        $objReader = new PHPExcel_Reader_Excel5();
        $objReader = PHPExcel_IOFactory::createWriter('Excel5');
    
        //Excel2007方式
        $objReader = new PHPExcel_Reader_Excel2007();
        $objReader = PHPExcel_IOFactory::createWriter('Excel2007');
    ***/
    
    //由于我的文件是07版本,所以使用Excel2007方式
    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
    
    //载入excel文件
    $objPHPExcel = $objReader->load($excelFile);
    
    //读取excel的第一个工作表
    $sheet = $objPHPExcel->getSheet(0);
    
    //取得总行数
    $highestRow = $sheet->getHighestRow();
    
    //取得总列数
    $highestColumm = $sheet->getHighestColumn();
    
    //获取最大列值字母对应的数值
    $highestColummNum = PHPExcel_Cell::columnIndexFromString($highestColumm);
    
    
    if (!$highestRow || !$highestColumm) {
        exit('表中无数据');
    }
    
    //获取表格值进行存储
    $dataExcel = array();
    
    $i = 0;
    //如果列值过大,进行计算,
    if ($highestColummNum > 26) {
        //循环读取每个单元格的数据
        for ($row = 2; $row <= $highestRow; $row++) {//行数是以第2行开始
            for ($column = 'A'; PHPExcel_Cell::columnIndexFromString($column) <= $highestColummNum; $column++) {//列数是以A列开始
                if ($column == 'E') {//假设第E列是日期
                $dataExcel[$i][] = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue()));
            } else {
                $dataExcel[$i][] = $sheet->getCell($column.$row)->getValue();
            }
            }
            $i++;
        }
    } else {
        //循环读取每个单元格的数据
        for ($row = 2; $row <= $highestRow; $row++) {//行数是以第2行开始
            for ($column = 'A';$column <= $highestColumm; $column++) {//列数是以A列开始
                if ($column == 'E') {//假设第E列是日期
                $dataExcel[$i][] = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue()));
            } else {
                $dataExcel[$i][] = $sheet->getCell($column.$row)->getValue();
            }
            }
            $i++;
        }
    }
    
    
    if (!$dataExcel) {
        exit('未获取任何数据');
    }
    
    print_r($dataExcel);
    exit;
    
    
    
    /****知识点总结*****
    1.列数值过大,可以通过 PHPExcel_Cell::columnIndexFromString($column),获取最大列的数值
    
    
    2.针对表格中有日期的,可以通过PHPExcel_Shared_Date::ExcelToPHP($value) 进行格式化,
    如获取一个日期值,可如下面语句进行获取:
    $date = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($column.$row)->getValue()));
    
    *******************/
    ?>
      
     
  • 相关阅读:
    压测mysql连接数
    OpenStack SR-IOV
    Scheduler 租户虚机到不同host
    Neutron 集成 DPDK
    Centos 7 密码重置
    win10优化
    Aria
    tomcat lb cluster
    Tomcat.md
    varnish.md
  • 原文地址:https://www.cnblogs.com/joshua317/p/6852570.html
Copyright © 2020-2023  润新知