<分区>
我正在尝试使用 PhpExcel 库导入一个 excel 文件
对于所有其他字段,getValue()
函数都有效,但是当它遇到格式为 ms-excel2013 中设置的日期的字段时
exel 文件中的日期字段格式为 d-m-Y,如 16-11-2014
但是当我尝试导入它的值时 getValue()
返回 11-16-14
当传递给 strtotime
进一步 返回 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;
}