登录  /  注册
首页 > php教程 > php手册 > 正文

phpexcel读取excel表格时间的例子

php中文网
发布: 2016-05-26 08:19:49
原创
2366人浏览过

phpexcel是php中专业来操作excel表格的一个php插件了,下文我们就来看看phpexcel读取excel表格时间的例子,希望下文能够帮助到各位。

编辑通过excel表格修改了大批的产品价格和促销时间,让我们技术批量导入到线上数据库。

这样对于我们来说是一件在简单不过的事情了,保护phpexcel导表利器,瞬间解决问题。

可是,进入数据库一看:蒙了,导入的时间格式有问题,展示的不是时间,是数字,郁闷中。

然后通过php输出,果然不是时间的格式。

百度一遍发现,phpexcel里面提供了这样的方法getFormattedValue()来读出时间的,将getValue()换成

getFormattedValue();

$abc = $currentSheet->getCell ( 'A' . $currentRow )->getFormattedValue ();

这样就可以顺利的读出excel表里的时间,重新更新数据库,OK。

下面看个例子

<?php
error_reporting(E_ALL);
date_default_timezone_set(&#39;Asia/shanghai&#39;);
/** PHPExcel_IOFactory */
require_once &#39;../Classes/PHPExcel/IOFactory.php&#39;;
$inputFileName = &#39;6081076641077444758.xls&#39;;
$objReader = new PHPExcel_Reader_Excel5();
$objPHPExcel = $objReader->load($inputFileName);
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
$tempArray = array();
for ($j = 2; $j <= $highestRow; $j++) {
    for ($k = &#39;A&#39;; $k <= $highestColumn; $k++) {
        if ($k == &#39;M&#39; || $k == &#39;O&#39;) //M列和O列是时间
        $tempArray[] = excelTime($objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue());
        else $tempArray[] = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();
    }
    print_r($tempArray);
    unset($tempArray);
}
function excelTime($date, $time = false) {
    if (function_exists(&#39;GregorianToJD&#39;)) {
        if (is_numeric($date)) {
            $jd = GregorianToJD(1, 1, 1970);
            $gregorian = JDToGregorian($jd + intval($date) - 25569);
            $date = explode(&#39;/&#39;, $gregorian);
            $date_str = str_pad($date[2], 4, &#39;0&#39;, STR_PAD_LEFT) . "-" . str_pad($date[0], 2, &#39;0&#39;, STR_PAD_LEFT) . "-" . str_pad($date[1], 2, &#39;0&#39;, STR_PAD_LEFT) . ($time ? " 00:00:00" : &#39;&#39;);
            return $date_str;
        }
    } else {
        $date = $date > 25568 ? $date + 1 : 25569;
        /*There was a bug if Converting date before 1-1-1970 (tstamp 0)*/
        $ofs = (70 * 365 + 17 + 2) * 86400;
        $date = date("Y-m-d", ($date * 86400) - $ofs) . ($time ? " 00:00:00" : &#39;&#39;);
    }
    return $date;
}
登录后复制


本文链接:

收藏随意^^请保留教程地址.

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号