前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHPExcel所遇到问题的知识点总结

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

作者头像
joshua317
发布2018-04-16 13:07:13
7550
发布2018-04-16 13:07:13
举报
文章被收录于专栏:技术博文技术博文

工作中进行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()));

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

代码语言:javascript
复制
<?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()));

*******************/
?>
  
 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-05-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档