【发布时间】:2013-07-10 04:47:15
【问题描述】:
目前,我正在为我的工作制作一个程序,该程序使用 PHPexcel 基本上从 excel 表中获取所有数据,制作一个新的 excel 表并将其格式化为文本,并从旧的 excel 中传输所有数据床单。
我的 php 必须能够从旧的 excel 表中获取值并正确解析它们,尤其是日期/数字/等。
除日期外,一切正常。出于某种原因,当我获得单元格的格式化值时;它与第一张表中的日期格式不匹配。特别是这样的值: 12/31/2099 。由于某种原因,它将格式代码错误地读取为 mm-dd-yy 并输出 12-31-99。这非常令人沮丧,我已经在互联网上搜索了一半的答案。请帮忙;我不确定是什么问题!代码:
<?php
$spreadSheet=$_FILES["filebrowser"]["tmp_name"];
/** PHPExcel_IOFactory */
require_once 'Classes/PHPExcel/IOFactory.php';
require_once 'Classes/PHPExcel/Shared/Date.php';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
//Create temporary sheet from uploaded file data
$objPHPExcel = $objReader->load($spreadSheet);
$sheet = $objPHPExcel->getActiveSheet();
$sheet->setTitle("Original Data");
$data=$sheet->getCell("D9")->getFormattedValue();
var_dump($data);
exit;?>
D9 是一个 DATE 格式的单元格,其值为 12/31/2099。此代码打印 12-31-99...
【问题讨论】:
-
尝试 getValue() 而不是 getFormattedValue()
-
getValue() 获取单元格的原始数据值并返回一个浮点数。
-
据我所知 (phpexcel.codeplex.com/discussions/371418),您应该可以使用 Date::Time 将其转换为您想要的日期格式。
-
是的,但是当我从单元格中获取格式代码时,它会返回 mm-dd-yy 的格式代码而不是正确的格式...所以如果我尝试做这样的事情,它不起作用: $s= $sheet->getCell("D9")->getValue(); $d=PHPExcel_Shared_Date::ExcelToPHP($s); $form=$sheet->getStyle("D9")->getNumberFormat()->getFormatCode(); var_dump(日期($form,$d));
-
这是问题的一部分,我无法为用户明确定义格式,我需要格式能够根据用户通过 excel 提供的内容通用。