失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php excel导入读取公式本身不计算 使用PHPExcel读取Excel文件时忽略计算值

php excel导入读取公式本身不计算 使用PHPExcel读取Excel文件时忽略计算值

时间:2021-12-13 09:34:22

相关推荐

php excel导入读取公式本身不计算 使用PHPExcel读取Excel文件时忽略计算值

我正在使用setReadDataOnly(true)读取XLS文件.读取对象再次保存为新的Excel文件.不幸的是,一些单元格值的计算不正确(这与使用小计公式的单元格的计算错误有关).如果我理解正确,XLS文件中的每个单元格都包含预先计算的值以及公式.如果我可以让

PHPExcel在读取文件时不尝试计算公式(而只是按原样使用预先计算的值),我可以解决这个问题.我认为setReadDataOnly(true)或setPreCalculateFormulas(false)可能会实现这一点,但事实并非如此.

附加信息

感谢Mark的解释,我在我的案例中研究了getCalculatedValue()和getOldCalculatedValue()之间的区别.我使用以下代码读取文件,然后再次写出来:

$excel_reader = PHPExcel_IOFactory::createReaderForFile($file);

$excel_reader->setReadDataOnly(true);

$excel_obj_temp = $excel_reader->load($file);

// Test one of the values in question

$excel_obj_temp->setActiveSheetIndexByName("Form 11");

error_log("val:".$excel_obj_temp->getActiveSheet()->getCell("E36")->getCalculatedValue());

error_log("old_val:".$excel_obj_temp->getActiveSheet()->getCell("E36")->getOldCalculatedValue());

$new_file = "new_generated_name";

$excel_writer = new PHPExcel_Writer_Excel5($excel_obj_temp);

$excel_writer->setPreCalculateFormulas(false);

$excel_writer->save($unprotected_file);

读取文件时,它使用getOldCalculatedValue()显示正确的值.如果我在没有setPreCalculateFormulas(false)的情况下保存文件并再次读取文件,则getCalculatedValue()和getOldCalculatedValue()都返回相同(不正确)的结果.这符合Mark的解释,如果你没有设置setPreCalculateFormulas(false),将在保存时重新计算值

但是,如果我用setPreCalculateFormulas(false)保存文件(这似乎是正确的方法)并再次读取文件,getCalculatedValue()返回错误的结果,getOldCalculatedValue()返回0,这是错误的.

为什么保存后会清除缓存的值?我需要应用setPreCalculateFormulas(false)吗?

如果觉得《php excel导入读取公式本身不计算 使用PHPExcel读取Excel文件时忽略计算值》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。