【发布时间】:2015-07-24 06:15:40
【问题描述】:
我正在尝试使用 PhpExcel 库导入 excel 文件
对于所有其他字段,getValue() 函数有效,但是当它遇到格式日期为 ms-excel2013 中设置的字段时
exel 文件中的日期字段格式为 d-m-Y,例如 16-11-2014
但是当我尝试导入它的值时,getValue() 返回11-16-14,当传递给strtotime 进一步returns false 反过来导致date('Y-m-d',strtotime($date)) 返回1970-01-01。
我搜索了整个网络和 stackoverflow,但没有一个解决方案能解决我的问题。
在 excel 文件中,我看到日期为 16-11-2014 并希望它按原样导入。
这是代码
protected function importExcel($filePath) {
$excelData = array();
if ($filePath) {
$objPHPExcel = PHPExcel_IOFactory::load($filePath);
$objPHPExcel->setReadDataOnly(true);
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
$worksheetTitle = $worksheet->getTitle();
$highestRow = $worksheet->getHighestRow(); // e.g. 10
$highestColumn = $worksheet->getHighestColumn(); // e.g 'F'
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$nrColumns = ord($highestColumn) - 64;
$data = array();
for ($row = 1; $row <= $highestRow; ++$row) {
$values = array();
for ($col = 0; $col < $highestColumnIndex; ++$col) {
$cell = $worksheet->getCellByColumnAndRow($col, $row);
if (PHPExcel_Shared_Date::isDateTime($cell))
throw new Exception("is date time"); // just a check
$val = $cell->getValue();
if (isset($val) && $val)
$data[$row][$col] = $val;
}
}
$excelData[$worksheetTitle] = $data;
}
return $excelData;
}
return FALSE;
}
【问题讨论】:
-
@miken32 不,这不是重复的,因为我在发布问题和答案之前检查了整个网络。请阅读此处提到的问题和答案,您会知道其中的区别。正如 Mark Baker(PhpExcel lib 协调员)自己试图帮助我。