最近,在做一个导入功能,在系统中使用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
分享到:
相关推荐
在IT行业中,处理数据是日常任务之一,而Excel作为广泛使用的电子表格软件,其格式的导入与导出功能对于数据的交互和分析至关重要。本文将深入探讨如何使用PHPExcel库来实现PHP环境中对Excel文件的读取和写入操作。 ...
PHPExcel 提供了丰富的功能,如格式化单元格、插入图表、设置公式等,使得在 Web 应用程序中生成和处理 Excel 数据变得非常便捷。 `create2.php`、`createxls.php` 和 `xls.php` 这些文件可能是包含示例代码的脚本...
9. **示例代码**:压缩包中的示例文件可以帮助开发者了解如何使用PHPExcel进行具体操作,包括读取、写入、格式化和公式计算等。 10. **版本兼容性**:尽管PHPExcel已经停止更新,但1.8版仍可处理大部分Excel文件...
在数据导出方面,PHPExcel提供了灵活的方法来组织和格式化数据。你可以将数据库查询结果、数组或其他数据结构转换为Excel表格。例如,你可以使用foreach循环遍历数据并填充到Excel工作表中,从而实现批量数据的导出...
`phpExcel`是一个广泛使用的PHP库,它允许开发者创建、读取和修改Microsoft Excel文件,即使这些文件包含图像。本篇文章将深入探讨如何利用`phpExcel`库来处理带有图片的Excel表格。 首先,我们需要理解`phpExcel`...
在Thinkphp框架中使用PHPExcel,通常需要以下步骤: 1. **安装PHPExcel**:通过Composer(PHP的依赖管理工具)进行安装,或者手动下载库文件。 2. **引入库文件**:在Thinkphp的控制器或模型中,加载PHPExcel类库。 ...
- **公式计算**:在单元格中使用Excel的内置公式进行计算,例如SUM、AVERAGE等。 - **数据处理**:对读取的数据进行分析、排序、过滤等操作,然后写回到Excel文件中。 - **图表生成**:根据数据生成图表,如柱状图、...
1. **初始化PHPExcel对象**:使用`PHPExcel_IOFactory`类的`load()`方法加载Excel文件。 2. **遍历工作表**:获取工作簿中的每个工作表,并通过迭代单元格来读取数据。 3. **处理数据**:根据需要对数据进行清洗、...
下面,我们将深入探讨如何在ThinkPHP 3.2中使用PHPExcel将数据导出到Excel文件。 首先,我们需要了解PHPExcel库。PHPExcel是一款开源的PHP类库,用于读取和写入多种Excel文件格式,包括.BIFF(Excel 97-2003)和....
- **工作表(Worksheet)**: 工作簿内的单个表格,类似于Excel中的一个Tab页。 - **单元格(Cell)**: 工作表中的最小单位,包含数据或公式。 ### 2. 使用`PHPExcel`创建Excel文件 要创建一个新的Excel文件,首先...
2. **创建工作簿和工作表**:使用PHPExcel,你可以创建一个新的工作簿对象,这相当于Excel中的一个文件。然后,添加工作表到工作簿中,每个工作表代表Excel中的一个单独的Tab。 3. **设置单元格值**:在工作表中,...
PHPExcel是一款在PHP环境中广泛使用的第三方库,专门用于创建、读取和修改Microsoft Excel文件。它提供了丰富的API,允许开发者在Web应用中方便地生成Excel表格,处理数据导入和导出功能,尤其适用于需要大量处理...
2. **创建IOFactory实例**:使用`PHPExcel_IOFactory::createReader()`方法创建一个读取器对象,指定要读取的文件格式,例如`'Excel2007'`或`'Excel5'`。 3. **加载文件**:使用`load()`方法加载Excel文件,这会...
php5.4环境下的 PHPExcel-1.8 使用,只要 Classes下的文件,并改名为 phpexcel 1,建立mysql数据库,把excel_demo.sql导入到你的数据库,采取utf-8编码; 2,导入时候请按照xls/demo.xls的格式导入,在linux系统下 ...
IO Factory是PHPExcel中用于读写Excel文件的工厂类,它提供了多种不同的读写适配器,如`PHPExcel_Reader_Excel5`用于读取BIFF8格式,`PHPExcel_Writer_Excel2007`用于写入OOXML格式。 5. **性能优化**: - 使用...
- 数据验证:可以设定单元格的数据验证规则,如输入范围、日期格式等。 - 页眉页脚:可以设置工作表的页眉和页脚内容。 - 自定义列宽:`$worksheet->getColumnDimension('A')->setWidth(20);` 8. **注意事项** ...
该压缩包文件“基于PHP实现的医务系统,后期的数据库信息可以导出为Excel表格,使用的PHPExcel.zip”是一个包含PHP编程语言实现的医疗...同时,这样的系统也可以在小型医疗机构或诊所中使用,实现简单的信息化管理。
- **4.6.3 写的日期或时间到单元格**:说明了如何正确格式化日期和时间。 - **4.6.4 写成一个单元格的公式**:介绍了如何将公式写入单元格。 - **4.6.5 公式的区域设置**:解释了如何根据区域设置调整公式的显示。 -...