详细介绍PHPExcel读取Excel时间的示例代码
//读取Excel文件
$info = pathinfo ( $path );
$ext = $info ['extension'];
$excelReader = null;
if($ext == 'xls') {
$excelReader = new PHPExcel_Reader_Excel5();
}
else{
$excelReader = new PHPExcel_Reader_Excel2007();
}
$phpExcelInstance = $excelReader->load($path);
$sheet = $phpExcelInstance -> getSheet ( 0 );
// 读取第一個工作表
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumm = $sheet->getHighestColumn(); // 取得总列数
/** 循环读取每个单元格的数据 **/
$arr = array ();
for ( $row = 2 ; $row <= $highestRow ; $row ++ ){
// 行数是以第2行开始
$cell = $sheet->getCellByColumnAndRow(0, $row);
$value = $cell->getValue();
if (empty($create_date) || !isset($create_date)){
$create_date = date("Y-m-d");
}else{
if($cell->getDataType()==PHPExcel_Cell_DataType::TYPE_NUMERIC){
$cellstyleformat=$cell->getStyle()->getNumberFormat(); //获取cell类型
$formatcode=$cellstyleformat->getFormatCode(); //获取cell格式代码,时间格式为mm-dd-yy
if (preg_match('/^(/[/$[A-Z]*-[0-9A-F]*/])*[hmsdy]/i', $formatcode)) {
$create_date = gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value));
}else{
$create_date = PHPExcel_Style_NumberFormat::toFormattedString($value,$formatcode);
}
}
elseif($cell->getDataType()==PHPExcel_Cell_DataType::TYPE_STRING){
$date = date_create($value);
if($date){
$create_date = date_format($date,'Y-m-d H:i:s');
}
else{
$err_msg = '表格第'.$row.'行时间格式错误';
}
}
else{
$create_date = date("Y-m-d");
}
}
}
if($cell->getDataType()==PHPExcel_Cell_DataType::TYPE_NUMERIC && $i!=1 && $j==0){
$formatcode=$cell->getStyle()->getNumberFormat()->getFormatCode(); //获取cell格式代码,时间格式为mm-dd-yy
if($formatcode == PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX14 || $formatcode == PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH){
$cellstyleformat=$cell->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); //获取cell类型
$eValue = @iconv("utf-8","gbk",$cell->getValue());
$eValue = PHPExcel_Style_NumberFormat::toFormattedString($eValue,$formatcode);
}
else{
$eValue = @iconv("utf-8","gbk", $cell->getFormattedValue());
}
}
$cell = $currentSheet->getCellByColumnAndRow($j, $i);
if($cell->getDataType()==PHPExcel_Cell_DataType::TYPE_NUMERIC && $i!=1 && $j==0){
$cell->getStyle()->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); //获取cell类型
$eValue = @iconv("utf-8","gbk",$cell->getValue());
$formatcode=$cell->getStyle()->getNumberFormat()->getFormatCode();
$eValue = PHPExcel_Style_NumberFormat::toFormattedString($eValue,$formatcode);
}
else{
$eValue = @iconv("utf-8","gbk", $cell->getFormattedValue());
}