我正在使用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文件时忽略计算值相关推荐

  1. java excel 导入 格式转换_【转】JAVA实现EXCEL的导入和导出(二)

    =================摘要===================== java如何操作Excel(数据导入导出)(转) jxl.jar,可以到http://sourceforge.net/ ...

  2. 计算机表格 求差,EXCEL表格中两列怎么计算差/2个excel表格数据求差

    怎样在EXCEL表格中求两列数的差? A\B列为数据,在C1输入公式=A1-B1,选中C1之后,并双击右下角黑点向下填充. 算A列和与B列和的差值,用公式=SUM(A:A)-SUM(B:B)即可. 怎 ...

  3. excel导入导出工具类_Hutool Java工具类库导出Excel,超级简单

    前言 在开发应用系统的时候,导出文件是必不可少的功能. 以前用过POI.easyexcel等工具的导入导出功能,但总感觉太麻烦了,代码特别多,感觉并不是很好用. 今天给大家介绍一款新工具,java工具 ...

  4. python按行读取文件取消空白行_在Python中读取文件时忽略空行的最简单方法

    我将堆栈生成器表达式:with open(filename) as f_in: lines = (line.rstrip() for line in f_in) # All lines includi ...

  5. Excel制表技巧公式及函数

    Excel制表技巧(48)公式及函数 2006年12月14日 星期四 22:18 函数与公式的概念 什么是函数? Excel函数即是预先定义,执行计算.分析等处理数据任务的特殊公式.以常用的求和函数S ...

  6. 10w 行级别数据的 Excel 导入优化记录

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 作者 | 后青春期的Keats 来源 | https://w ...

  7. 10w行级别数据的Excel导入优化记录

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:后青春期的Keats www.cnblogs.com/kea ...

  8. 4次迭代!10w行级别数据的Excel导入优化记录

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达今日推荐:2020年7月程序员工资统计,平均14357元,又跌了,扎心个人原创100W+访问量博客:点击前往,查看更多 链接 ...

  9. npoi 执行公式_生成excel文件时NPOI无法计算公式

    NPOI库 . 已创建Excel文件,但未计算公式.这是我第一次使用NPOI库. 经过大量的谷歌搜索,我发现了一些代码片段,我用在我的代码计算公式,但仍然没有运气. 此例程使用随机数值和动态组合的公式 ...

  10. Java后端:10w行级别数据的Excel导入优化记录

    一些细节 数据导入:导入使用的模板由系统提供,格式是 xlsx (支持 65535+行数据) ,用户按照表头在对应列写入相应的数据 数据校验:数据校验有两种: 字段长度.字段正则表达式校验等,内存内校 ...

最新文章

  1. linux centos7 报错: “Repository base is listed more than once in the configuration“和“没有可用软件包 xxx“ 解决方法
  2. 星巴克是如何处理订单的?
  3. 华为合作oppovivo小米鸿蒙,华为鸿蒙成功的关键:要让小米、OPPO、VIVO都用上鸿蒙...
  4. java中类型转换的造型_Java-类型转换 - 吉胖子很瘦的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. dig指定服务器查询域名解析时间
  6. Linux USB驱动框架分析 【转】
  7. POJ 3154 Graveyard【多解,数论,贪心】
  8. 设计模式 接口隔离原则
  9. 关于MATLAB实现的数字信号处理(四)
  10. 玉伯 对 前端的 金玉良言
  11. 【ARM】【NEON加速介绍】
  12. cxgrid定位在第一行并显示内置编辑器
  13. Java 反射常用方法
  14. 1、pandas使用sort_values排序
  15. 转 自定义View之onMeasure()
  16. 嵌入式软件设计(1)--概述
  17. 获取windows7 trustedInstaller权限
  18. 繁体转简体 java_在java中,怎么把繁体字转化为简体字
  19. 游戏编程精粹1---数学技巧---可预测随机数---2
  20. matlab的RI是什么,LTE上报的CQI、PMI、RI分别有什么用

热门文章

  1. RESTful API入门学习笔记
  2. linux网桥中stp分析,linux网桥中stp分析
  3. 计算机毕业设计ssm基于远程协作的汽车故障诊断系统t6ipg系统+程序+源码+lw+远程部署
  4. 1、ZigBee 开发教程之基础篇—ZigBee简介和学习方法
  5. Unity不规则按钮
  6. linux 实现离线迅雷,Linux下使用wget/aria2进行离线迅雷批量下载
  7. 树莓派内网穿透方法大全
  8. 程序开发类本科论文结构【2022年修改】
  9. 基于java的springboot宠物商城系统毕业设计springboot开题报告
  10. 1.还不会部署高可用的kubernetes集群?看我手把手教你使用二进制部署v1.23.6的K8S集群实践(上)