php判断excel时间格式,使用PHPExcel判别和格式化Excel中的日期格式的例子

首先,如何导入日期,因为PHPExcel中日期格式在获取时得到的是数字,并不是日期字符串,于是,网上就有许多代码,用于将Excel中获取的数字转换成PHP使用的Unix Time,其实不必这么麻烦。phpexcel中就有这样的方法:PHPExcel_Shared_Date::ExcelToPHP($value) 。可以直接使用。

另外,如何自动判别Excel单元格是日期类型,看着PHPExcel文档和源码,实现如下:

复制代码 代码如下:

function Read_Excel_File2($file_name,&$result){

require_once 'include/PHPExcel/Classes/PHPExcel/IOFactory.php';

$result=null;

$objReader = PHPExcel_IOFactory::createReader('Excel5');

//    $objReader->setReadDataOnly(true);

try{

$objPHPExcel = $objReader->load($file_name);

}catch(Exception $e){}

if(!isset($objPHPExcel)) return "无法解析文件";

$allobjWorksheets = $objPHPExcel->getAllSheets();

foreach($allobjWorksheets as $objWorksheet){

$sheetname=$objWorksheet->getTitle();

$highestRow = $objWorksheet->getHighestRow(); // e.g. 10

$highestColumn = $objWorksheet->getHighestColumn();

$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);

for ($row = 1; $row <= $highestRow; ++$row) {

for ($col = 0; $col <= $highestColumnIndex; ++$col) {

$cell =$objWorksheet->getCellByColumnAndRow($col, $row);

$value=$cell->getValue();

if($cell->getDataType()==PHPExcel_Cell_DataType::TYPE_NUMERIC){

$cellstyleformat=$cell->getParent()->getStyle( $cell->getCoordinate() )->getNumberFormat();

$formatcode=$cellstyleformat->getFormatCode();

if (preg_match('/^(\[\$[A-Z]*-[0-9A-F]*\])*[hmsdy]/i', $formatcode)) {

$value=gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value));

}else{

$value=PHPExcel_Style_NumberFormat::toFormattedString($value,$formatcode);

}

//                    echo $value,$formatcode,'
';

}

$result[$sheetname][$row-1][$col]=$value;

}

}

}

return 0;

}

其中,关于日期判断的部分主要是以下部分:

复制代码 代码如下:

$cell =$objWorksheet->getCellByColumnAndRow($col, $row);

$value=$cell->getValue();

if($cell->getDataType()==PHPExcel_Cell_DataType::TYPE_NUMERIC){

$cellstyleformat=$cell->getParent()->getStyle( $cell->getCoordinate() )->getNumberFormat();

$formatcode=$cellstyleformat->getFormatCode();

if (preg_match('/^(\[\$[A-Z]*-[0-9A-F]*\])*[hmsdy]/i', $formatcode)) {

$value=gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value));

}else{

$value=PHPExcel_Style_NumberFormat::toFormattedString($value,$formatcode);

}

}

以上用到的PHPExcel版本是 1.7.2 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值