php - phpexcel中的单元格格式

标签 php phpexcel

我正在尝试使用 phpexcel 读取一些 excel 文件,目前为止一切正常。 phpexcel 有点太聪明了,它会从我的单元格中删除前导零。我想我需要告诉它把单元格当作一个文本字符串,而不是一般的或数字。但我失败了。我什至在 stackoverflow 上找到了关于此的线程,但建议的解决方案根本行不通。

下面是我正在处理的内容的一个片段。

foreach(@$objWorksheet->getRowIterator() as $row){
    $cellIterator = $row->getCellIterator();
    $cellIterator->setIterateOnlyExistingCells(false);
    foreach($cellIterator as $cell){
        #$objWorksheet->getStyle($cell->getCoordinate())->getNumberFormat()->setFormatCode('@');
        $cells[] = $cell->getValue();
    }
}

有什么想法吗?我不想限制自己只阅读数字内容,因为我无法控制用户上传的内容。将所有内容都视为字符串是完美的。

/佩德

最佳答案

getValue() 方法完全按照它应该做的去做,没有试图变得聪明。它返回存储在单元格中的实际值。如果该单元格包含一个整数,它返回一个整数;如果单元格包含 float ,则返回 float ;如果它包含一个字符串,它返回一个字符串。聪明的做法是将该值作为格式化字符串返回(如果适用,前导零),然后您需要使用一种完全不同的方法,并将单元格格式应用于返回值。

foreach($cellIterator as $cell){ 
   $cells[] = PHPExcel_Style_NumberFormat::toFormattedString( $cell->getValue(),
              $objPHPExcel->getCellXfByIndex( $cell->getXfIndex() )->getNumberFormat()->getFormatCode()
   );
}

或者如果单元格包含公式:

foreach($cellIterator as $cell){ 
   $cells[] = PHPExcel_Style_NumberFormat::toFormattedString( $cell->getCalculatedValue(),
              $objPHPExcel->getCellXfByIndex( $cell->getXfIndex() )->getNumberFormat()->getFormatCode()
   );
}

并且请不要使用@来尝试抑制错误。 PHPExcel 抛出异常,您真的应该捕获这些异常。

但是,对于您正在做的事情,您可能会考虑工作表的 toArray() 方法,它将返回工作表中所有单元格值的数组。

关于php - phpexcel中的单元格格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4239181/

相关文章:

PHP Excel 计算公式

php - 在自定义查询php中匹配用户密码

php - 在执行 INSERT 之前,您的 MySQL 是在 JSON 编码之前还是在 JSON 编码之后真正转义数据?

phpexcel - 使用phpExcel在合并的单元格之间写入文本

php - 尝试在 Internet Explorer 中下载 xlsx 2007 文件

PHPExcel 数据系列不工作

PHPExcel内存问题

javascript - 使用 AJAX 将表单输入发送到 PHP

javascript - 如何使用javascript对json类型数据进行排序?

php - 提交表单时如何将日期和时间添加到数据库中?