gpt4 book ai didi

php - phpexcel中的单元格格式

转载 作者:可可西里 更新时间:2023-11-01 12:56:12 24 4
gpt4 key购买 nike

我正在尝试使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com