本文实例讲述了thinkPHP+PHPExcel实现读取文件日期的方法。分享给大家供大家参考,具体如下: 我们使用PHPExcel读取excel文件后发现,时间都是类似于这样的数字:41890.620138889,那么如何将它处理成我们想要的2014-09-08 14:53:00这样格式的日期呢,看代码: Vendor('PHPExcel.PHPExcel.IOFactory'); $inputFileName = 'Public/demo/demo.xls'; $objReader = new PHPExcel_Reader_Excel5(); $objPHPExcel = $objRea 在开发过程中,我们经常需要处理来自不同数据源的数据,其中包括Excel文件。在使用PHP处理Excel文件时,PHPExcel库是一个非常实用的工具。然而,当我们读取包含日期的单元格时,PHPExcel会返回一个以浮点数表示的日期值,如41890.620138889,这并不是我们常见的日期格式。本文将详细介绍如何使用thinkPHP结合PHPExcel将这些数值转换为人类可读的日期格式,如"2014-09-08 14:53:00"。 我们需要引入PHPExcel库。在thinkPHP框架中,通常通过Vendor函数加载第三方类库。例如: ```php Vendor('PHPExcel.PHPExcel.IOFactory'); ``` 接着,我们需要创建一个对象来读取Excel文件: ```php $inputFileName = 'Public/demo/demo.xls'; $objReader = new PHPExcel_Reader_Excel5(); $objPHPExcel = $objReader->load($inputFileName); ``` 这里,`$inputFileName`是Excel文件的路径,`$objReader`是用于读取Excel文件的对象,而`$objPHPExcel`则是加载后的Excel工作簿。 然后,我们可以获取工作表的信息,如行数和列数: ```php $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); // 取得总行数 $highestColumn = $sheet->getHighestColumn(); // 取得总列数 ``` 接下来,我们需要遍历单元格并处理日期数据。假设H列是存储日期的列,可以这样做: ```php $tempArray = array(); for ($j = 2; $j <= $highestRow; $j++) { for ($k = 'A'; $k <= $highestColumn; $k++) { if ($k == 'H') { // 指定H列为时间所在列 $tempArray[] = gmdate("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue())); } else { $tempArray[] = $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue(); } } echo "<pre>"; print_r($tempArray); unset($tempArray); echo "</pre>"; } ``` 在上述代码中,`PHPExcel_Shared_Date::ExcelToPHP()`是关键函数,它将Excel中的日期浮点数转换为Unix时间戳。然后,我们使用`gmdate()`函数将Unix时间戳转换为"Y-m-d H:i:s"格式的日期字符串。 需要注意的是,由于Excel的时间戳是基于1900年1月1日的,因此在处理时可能需要考虑到这一点。在某些情况下,如果日期早于1900年,可能会出现错误,需要额外处理。 通过上述步骤,我们可以成功地使用thinkPHP和PHPExcel读取并格式化Excel文件中的日期数据。这个过程对于数据导入、分析或报表生成等场景非常有用。结合thinkPHP的其他功能,如数据库操作,可以构建更复杂的业务逻辑,提升开发效率。在实际开发中,可以根据具体需求进行调整,例如添加错误处理、优化性能等。
- 粉丝: 6
- 资源: 950
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助