日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

使用PHPExcel判别和格式化Excel中的日期格式

發(fā)布時間:2025/5/22 php 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用PHPExcel判别和格式化Excel中的日期格式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自:http://renzhen.iteye.com/blog/799391

最近,在做一個導(dǎo)入功能,在系統(tǒng)中使用PHPExcel類庫,讀取上傳的Excel文件,然后進(jìn)行字段映射,最后將Excel內(nèi)的數(shù)據(jù)導(dǎo)入到系統(tǒng)中。其中,關(guān)于日期格式的導(dǎo)入,使我犯了難。?

? 首先,如何導(dǎo)入日期,因?yàn)镻HPExcel中日期格式在獲取時得到的是數(shù)字,并不是日期字符串,于是,網(wǎng)上就有許多代碼,用于將Excel中獲取的數(shù)字轉(zhuǎn)換成PHP使用的Unix Time,其實(shí)不必這么麻煩。PHPExcel中就有這樣的方法: PHPExcel_Shared_Date::ExcelToPHP($value) ?。可以直接使用。?

?? 如果到這里就結(jié)束,那這篇文章就有點(diǎn)太沒意思了,在開發(fā)時,我還未一個問題犯了難,那就是如何自動判別Excel單元格是日期類型,照例,我Google了一遍,沒有很好的文章解決這個問題,于是我就自己看著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,'<br>';
? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? $result[$sheetname][$row-1][$col]=$value;
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? return 0;
}

其中,關(guān)于日期判斷的部分主要是以下部分:?

$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 ?




總結(jié)

以上是生活随笔為你收集整理的使用PHPExcel判别和格式化Excel中的日期格式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。