发新帖

详细介绍PHPExcel读取Excel时间的示例代码

零下一度 2022-1-27 1000

详细介绍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());
}


最新回复 (0)
返回
零下一度
主题数
931
帖子数
0
注册排名
1