`
renzhen
  • 浏览: 251186 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

    博客分类:
  • PHP
阅读更多
  最近,在做一个导入功能,在系统中使用PHPExcel类库,读取上传的Excel文件,然后进行字段映射,最后将Excel内的数据导入到系统中。其中,关于日期格式的导入,使我犯了难。
  首先,如何导入日期,因为PHPExcel中日期格式在获取时得到的是数字,并不是日期字符串,于是,网上就有许多代码,用于将Excel中获取的数字转换成PHP使用的Unix Time,其实不必这么麻烦。PHPExcel中就有这样的方法:PHPExcel_Shared_Date::ExcelToPHP($value) 。可以直接使用。
   如果到这里就结束,那这篇文章就有点太没意思了,在开发时,我还未一个问题犯了难,那就是如何自动判别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;
}

其中,关于日期判断的部分主要是以下部分:
$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  
分享到:
评论
2 楼 huangwancheng 2013-04-16  
你好 请问可以发一份导入excel的源码吗?或者你使用的PHPExcel类 因为我网上下载的类都会报错 不太会解决 非常感谢!395090096@qq.com
1 楼 xiaoluozi513 2012-10-28  
if (preg_match('/^(\[\$[A-Z]*-[0-9A-F]*\])*[hmsdy]/i', $formatcode))
看不懂这句判断依据是什么,$formatcode的值好像都是“General”

相关推荐

    使用PHPExcel导入导出excel格式文件

    在IT行业中,处理数据是日常任务之一,而Excel作为广泛使用的电子表格软件,其格式的导入与导出功能对于数据的交互和分析至关重要。本文将深入探讨如何使用PHPExcel库来实现PHP环境中对Excel文件的读取和写入操作。 ...

    phpexcel生成excel类

    PHPExcel 提供了丰富的功能,如格式化单元格、插入图表、设置公式等,使得在 Web 应用程序中生成和处理 Excel 数据变得非常便捷。 `create2.php`、`createxls.php` 和 `xls.php` 这些文件可能是包含示例代码的脚本...

    PHPExcel-1.8_excel_

    9. **示例代码**:压缩包中的示例文件可以帮助开发者了解如何使用PHPExcel进行具体操作,包括读取、写入、格式化和公式计算等。 10. **版本兼容性**:尽管PHPExcel已经停止更新,但1.8版仍可处理大部分Excel文件...

    PHPExcel_数据导出excel

    在数据导出方面,PHPExcel提供了灵活的方法来组织和格式化数据。你可以将数据库查询结果、数组或其他数据结构转换为Excel表格。例如,你可以使用foreach循环遍历数据并填充到Excel工作表中,从而实现批量数据的导出...

    phpExcel 导入导出带图片的excel表格

    `phpExcel`是一个广泛使用的PHP库,它允许开发者创建、读取和修改Microsoft Excel文件,即使这些文件包含图像。本篇文章将深入探讨如何利用`phpExcel`库来处理带有图片的Excel表格。 首先,我们需要理解`phpExcel`...

    PHPExcel下载excel工具类

    在Thinkphp框架中使用PHPExcel,通常需要以下步骤: 1. **安装PHPExcel**:通过Composer(PHP的依赖管理工具)进行安装,或者手动下载库文件。 2. **引入库文件**:在Thinkphp的控制器或模型中,加载PHPExcel类库。 ...

    PHPExcel 1.8 Excel导入导出

    1. **初始化PHPExcel对象**:使用`PHPExcel_IOFactory`类的`load()`方法加载Excel文件。 2. **遍历工作表**:获取工作簿中的每个工作表,并通过迭代单元格来读取数据。 3. **处理数据**:根据需要对数据进行清洗、...

    phpExcel_php操作excel类

    - **工作表(Worksheet)**: 工作簿内的单个表格,类似于Excel中的一个Tab页。 - **单元格(Cell)**: 工作表中的最小单位,包含数据或公式。 ### 2. 使用`PHPExcel`创建Excel文件 要创建一个新的Excel文件,首先...

    PHPExcel-1.8.zip_phpexcel

    - **公式计算**:在单元格中使用Excel的内置公式进行计算,例如SUM、AVERAGE等。 - **数据处理**:对读取的数据进行分析、排序、过滤等操作,然后写回到Excel文件中。 - **图表生成**:根据数据生成图表,如柱状图、...

    PHPExcel 1.8版本导出excel

    2. **创建工作簿和工作表**:使用PHPExcel,你可以创建一个新的工作簿对象,这相当于Excel中的一个文件。然后,添加工作表到工作簿中,每个工作表代表Excel中的一个单独的Tab。 3. **设置单元格值**:在工作表中,...

    PHPExcel生成excel表格

    PHPExcel是一款在PHP环境中广泛使用的第三方库,专门用于创建、读取和修改Microsoft Excel文件。它提供了丰富的API,允许开发者在Web应用中方便地生成Excel表格,处理数据导入和导出功能,尤其适用于需要大量处理...

    php使用PHPExcel读取Excel的demo

    2. **创建IOFactory实例**:使用`PHPExcel_IOFactory::createReader()`方法创建一个读取器对象,指定要读取的文件格式,例如`'Excel2007'`或`'Excel5'`。 3. **加载文件**:使用`load()`方法加载Excel文件,这会...

    php实现利用phpexcel导入导出数据至excel

    php5.4环境下的 PHPExcel-1.8 使用,只要 Classes下的文件,并改名为 phpexcel 1,建立mysql数据库,把excel_demo.sql导入到你的数据库,采取utf-8编码; 2,导入时候请按照xls/demo.xls的格式导入,在linux系统下 ...

    PHPExcel-1.7.0 php 生成excel

    IO Factory是PHPExcel中用于读写Excel文件的工厂类,它提供了多种不同的读写适配器,如`PHPExcel_Reader_Excel5`用于读取BIFF8格式,`PHPExcel_Writer_Excel2007`用于写入OOXML格式。 5. **性能优化**: - 使用...

    phpexcel 生成excel

    - 数据验证:可以设定单元格的数据验证规则,如输入范围、日期格式等。 - 页眉页脚:可以设置工作表的页眉和页脚内容。 - 自定义列宽:`$worksheet-&gt;getColumnDimension('A')-&gt;setWidth(20);` 8. **注意事项** ...

    基于PHP实现的医务系统,后期的数据库信息可以导出为Excel表格,使用的PHPExcel.zip

    该压缩包文件“基于PHP实现的医务系统,后期的数据库信息可以导出为Excel表格,使用的PHPExcel.zip”是一个包含PHP编程语言实现的医疗...同时,这样的系统也可以在小型医疗机构或诊所中使用,实现简单的信息化管理。

    Thinkphp 3.2利用phpexcel将数据通过excel导出

    下面,我们将深入探讨如何在ThinkPHP 3.2中使用PHPExcel将数据导出到Excel文件。 首先,我们需要了解PHPExcel库。PHPExcel是一款开源的PHP类库,用于读取和写入多种Excel文件格式,包括.BIFF(Excel 97-2003)和....

    PHPExcel中文手册

    - **4.6.3 写的日期或时间到单元格**:说明了如何正确格式化日期和时间。 - **4.6.4 写成一个单元格的公式**:介绍了如何将公式写入单元格。 - **4.6.5 公式的区域设置**:解释了如何根据区域设置调整公式的显示。 -...

Global site tag (gtag.js) - Google Analytics