首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:将Excel中的日期数据设置为数组的值

问PHP:将Excel中的日期数据设置为数组的值
EN

Stack Overflow用户
提问于 2016-12-29 17:33:06
回答 2查看 509关注 0票数 0

我有一个使用Yii2框架开发的系统,我有一个包含导入系统的日期值的Excel文件,例如:

ExcelFile

代码语言:javascript
复制
-------------------------------------------------
    Name   |   Birthdate   |    Place of Birth
-------------------------------------------------
   Archie  |  1995-09-18   |        Nevada
   Gerry   |  1989-01-23   |        Gotham

我使用PHPExcel将数据读取到PHP,然后将数据集读取到新的数组,例如

数组

代码语言:javascript
复制
Array
(
    [0] => Array
        (
           [0] => Archie 
           [1] => 42265
           [2] => Nevada
        )
    [1] => Array
        (
           [0] => Gerry
           [1] => 36217
           [2] => Gotham
        )
)

这是从Excel文件中读取数据后的数组结果。

你可以看到上面的结果,数组[0][1]和[1][1]中的数据并不像Excel文件中的日期数据那样包含日期值。

有谁知道怎么解决这个问题吗?或者有人知道我为什么要买这个?

已编辑

控制器中的代码

这是读取Excel文件的代码

代码语言:javascript
复制
  $sheet = $objPHPExcel->getSheet(0);
        $highestRow = $sheet->getHighestRow();
        $highestColumn = $sheet->getHighestColumn();
        $arrayData = [];
        for ($row = 1; $row <= $highestRow; ++$row) {
            $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE);
            if (!is_null($rowData[0][0])) {
                $arrayData[] = array_map(function($values) {
                    $tempArrayKey = [];
                    foreach ($values as $key => $value) {
                        $newKey = $key + 1;
                        $tempArrayKey[] = $newKey . '_' . $value;
                    }
                    return $tempArrayKey;
                }, $rowData);

任何帮助都将不胜感激。谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-12-29 17:40:56

您可以像下面这样获取日期字段:

$sheet->setCellValueByColumnAndRow(0, 1, "2014-10-16");

在单元格中设置字符串值,而不是日期。仅仅因为您将其解释为日期,并不意味着计算机程序会自动将其解释为日期。

或

您可以在更新后的代码中使用以下代码:

$arr[$i] = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($birthdate));

票数 0
EN

Stack Overflow用户

发布于 2016-12-29 19:00:41

您应该按如下所示获取单元格值...

代码语言:javascript
复制
$excelDate = $cell->getValue(); // gives you a number like 44444, which is days since 1900
$stringDate = \PHPExcel_Style_NumberFormat::toFormattedString($excelDate, 'YYYY-MM-DD');

其中,$excelDate是单元格值(日期单元格值),'YYYY-MM-DD‘是您需要的日期格式。\PHPExcel_Style_NumberFormat::toFormattedString是一个内置的PHPExcel函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41376806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档