每日一招,每日掌握一个要点,日积月累的积累。虽然马上成为不了大神,大牛,但离大神不远了 。
1.PHPExcel需要导入含有下拉框 解决办法:
使用setReadDataOnly(TRUE),
有下拉框的excel导入进来后:excel时间为2014-5-27这种格式,但是导入php文件时却是41986一串数字
解决办法:
if($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_NUMERIC){////版本过低的话请加上 getParent 例:$cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat();$cellstyleformat = $cell->getStyle( $cell->getCoordinate() )->getNumberFormat();$formatcode = $cellstyleformat->getFormatCode();// 判断是否为日期类型if (preg_match('/^([$[A-Z]*-[0-9A-F]*])*[hmsdy]/i', $formatcode)) {$value = https://www.itzhengshu.com/excel/gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value));} else {//PHPExcel 能够将日期/时间值识别为日期/时间,但是使用了setReadDataOnly(true),识别不了,所以多加一个判断if (in_array($col,$dateCol)){$value = https://www.itzhengshu.com/excel/date("Y-m-d", strval(PHPExcel_Shared_Date::ExcelToPHP($value)));}else {$value = https://www.itzhengshu.com/excel/PHPExcel_Style_NumberFormat::toFormattedString($value,$formatcode);}}}
完整代码:
canRead($filePath)) {$PHPReader = new PHPExcel_Reader_Excel5();if (!$PHPReader->canRead($filePath)) {return "File Can Not Be Readed.";}}#只读取表格数据,忽略里面的各种格式,否则会内存耗尽$PHPReader->setReadDataOnly(TRUE);$PHPExcel = $PHPReader->load($filePath);if (is_int($sheet)) {$currentSheet = $PHPExcel->getSheet($sheet);} else {$currentSheet = $PHPExcel->getSheetByName($sheet);}if (empty($currentSheet)) {return "Sheet Not Exists.";}/**取得一共有多少列*/$maxColumn = $currentSheet->getHighestColumn();$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($maxColumn);/**取得一共有多少行*/$rowCount = $currentSheet->getHighestRow();$result = array();for ($row = 1; $row <= $rowCount; $row) {$totalLen = 0; //记录行总长度for ($col = 0; $col <= $highestColumnIndex;$col) {$cell =$currentSheet->getCellByColumnAndRow($col, $row);$value=https://www.itzhengshu.com/excel/$cell->getValue();// excel导入进来后:excel时间为2014-5-27这种格式,但是导入php文件时却是41986一串数字 , 解决办法:if($cell->getDataType() == PHPExcel_Cell_DataType::TYPE_NUMERIC){////版本过低的话请加上 getParent 例:$cell->getParent()->getStyle($cell->getCoordinate())->getNumberFormat();$cellstyleformat = $cell->getStyle( $cell->getCoordinate() )->getNumberFormat();$formatcode = $cellstyleformat->getFormatCode();// 判断是否为日期类型if (preg_match('/^([$[A-Z]*-[0-9A-F]*])*[hmsdy]/i', $formatcode)) {$value = https://www.itzhengshu.com/excel/gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value));} else {//PHPExcel 能够将日期/时间值识别为日期/时间,但是使用了setReadDataOnly(true),识别不了 , 所以多加一个判断if (in_array($col,$dateCol)){$value = https://www.itzhengshu.com/excel/date("Y-m-d", strval(PHPExcel_Shared_Date::ExcelToPHP($value)));}else {$value = https://www.itzhengshu.com/excel/PHPExcel_Style_NumberFormat::toFormattedString($value,$formatcode);}}}if (is_object($value)) {$value = $value->__toString();}$value = https://www.itzhengshu.com/excel/trim($value);$result[$row][] = $value;$totalLen= strlen(trim($value));}if ($totalLen == 0) unset($result[$row]); //去掉空行}return array_values($result);}// $dateCol 第几列为日期数据$dateCol= [0];self:: readEXCELDate($filePath, 0, $dateCol);
热门推荐
2.每日一招:docker安装easyswoole
【PHPExcel导入含有下拉框解决办法】3.个人可以做哪些副业兼职赚钱?
