每日一招,每日掌握一个要点,日积月累的积累 。虽然马上成为不了大神,大牛,但离大神不远了。
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 = gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value));
} else {
//PHPExcel 能够将日期/时间值识别为日期/时间,但是使用了setReadDataOnly(true),识别不了,所以多加一个判断
if (in_array($col,$dateCol)){
$value = date("Y-m-d", strval(PHPExcel_Shared_Date::ExcelToPHP($value)));
}else {
$value = 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=$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 = gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($value));
} else {
//PHPExcel 能够将日期/时间值识别为日期/时间,但是使用了setReadDataOnly(true),识别不了,所以多加一个判断
if (in_array($col,$dateCol)){
$value = date("Y-m-d", strval(PHPExcel_Shared_Date::ExcelToPHP($value)));
}else {
$value = PHPExcel_Style_NumberFormat::toFormattedString($value,$formatcode);
}
}
}
if (is_object($value)) {
$value = $value->__toString();
}
$value = 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
3.个人可以做哪些副业兼职赚钱?