如何使用PHPExcel获取XLS文件格式值

如何使用PHPExcel获取XLS文件格式值,php,phpexcel,Php,Phpexcel,我已将XLS单元格的尊重编号格式化。这看起来像我的细胞 E8:日期格式的单元格 E9:数字格式单元格 E10:通用格式化单元 E11:格式化单元格的百分比 E12:分数格式单元格 我想在不做任何更改的情况下读取上述单元格数据(2013年5月10日,星期五,41404.00,drfsdf,1/2),我使用下面的方法进行读取,但我没有成功使用下面的每个方法返回单元格的文本值 $objReader = new PHPExcel_Reader_Excel5(); $objReader->se

我已将XLS单元格的尊重编号格式化。这看起来像我的细胞

  • E8:日期格式的单元格
  • E9:数字格式单元格
  • E10:通用格式化单元
  • E11:格式化单元格的百分比
  • E12:分数格式单元格
我想在不做任何更改的情况下读取上述单元格数据(2013年5月10日,星期五,41404.00,drfsdf,1/2),我使用下面的方法进行读取,但我没有成功使用下面的每个方法返回单元格的文本值

$objReader = new PHPExcel_Reader_Excel5();
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($file_path);
$rowIterator = $objPHPExcel->getActiveSheet()->getRowIterator();

$array_data = array();
foreach ($rowIterator as $row) {
   $cellIterator = $row->getCellIterator();
   $cellIterator->setIterateOnlyExistingCells(false);
   $rowIndex = $row->getRowIndex();
   $array_data[$rowIndex] = array('A' => '', 'B' => '');
   foreach ($cellIterator as $cell) {
    if ('A' == $cell->getColumn()) {
         $array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
      } else if ('B' == $cell->getColumn()) {
         $array_data[$rowIndex][$cell->getColumn()] = $cell->getCalculatedValue();
      }
   }
}  
请使用PHPExcel帮助获取XLS文件的查看值,如:2013年5月10日星期五,41404.00,drfsdf,1/2。

$objReader->setReadDataOnly(true);
否则,PHPExcel无法知道单元格是否格式化为日期


setReadDataOnly(true)告诉PHPExcel仅加载每个单元格的原始数据。由于MS Excel区分日期/时间和浮点数的唯一方法是通过数字格式掩码(而不是原始数据),并且您告诉PHPExcel不要读取数字格式掩码,PHPExcel无法分辨差异,因此所有浮点数都被简单地视为浮点数

您也可以使用工作表的toArray()方法消除行和单元格迭代器循环的需要如果包含5/10/2013的日期格式单元格使用区域设置格式掩码,则PHPExcel只能使用默认日期掩码将其显示为常规日期,因为它不支持区域设置。。。但是您仍然将值转换为日期格式no。。。。MS Excel不在单元格中存储日期。它存储一个浮点值,只有数字格式掩码将其标识为日期,并给出了如何显示它的一些指导原则。单元中的“真实值”是41552的浮点值。所使用的数字格式掩码将其标识为特定于区域设置的日期,而PHPExcel则尽职尽责地将其格式化为日期;但由于PHPExcel不知道区域设置,因此无法使用MS Excel使用的确切格式,因为MS Excel使用的确切格式因查看文件的人而异(基于他们的国家),除非您知道哪些单元格包含日期,如果使用了
setReadDataOnly(true),则将日期格式掩码设置为在读取单元格的格式化值之前选择的格式则否,无法区分日期/时间和其他浮动。唯一的区别是formatmask和
setReadDataOnly(true)禁止读取该信息。。。如果
setReadDataOnly(false)
然后可以使用
PHPExcel\u Shared\u Date::isDateTime()
来测试单元格是否包含日期/时间值,或者类似
getFormattedValue()
getCalculatedValue()的方法
将返回格式化的日期string@Duleep-这取决于应用于单元格的日期编号格式掩码:如果格式仅显示年份的两位数字,则两个日期看起来相同