使用python读取excel文件时,读不到单元格内的公式计算后的值!

最近需要使用python去读写excel文件(.xlsx与.csv格式的)
然而我发现,若是一个单元格内是一个公式,则无法读出该公式计算后的值
使用openpyxl,不加data_only=True的话,会输出公式本身,加上data_only=True,则输出了一个空字符串
使用xlrd的话,也是输出了一个空字符串
请问这得怎么解决呢

1

7个回答

第一个图用错了,用这个图的公式图片说明

0
Danta423
湖心残雪 回复Newbei~: 因为你使用公式后没有保存 我也出现了你一样的错误 ,excel直接获取了保存前的公式的值 我的那个excel函数是cell
5 个月之前 回复
weixin_44078216
Newbei~ 回复qq_32415833: 使用openpyxl.Workbook()函数生成Excel文档并保存后,单元格中公式并没有进行计算,所以提取其值的时候是None,当我手动打开Excel并保存后,才可提取公式的值,网络上没有搜到解决方式!
5 个月之前 回复
qq_32415833
qq_32415833 请问如何实现的呢?我用的这个遇见有公式的直接输出NAN,请赐教
7 个月之前 回复
qq_32415833
qq_32415833 回复qq_33773522: 请问如何实现的呢?我用的这个遇见有公式的直接输出NAN,请赐教
7 个月之前 回复
qq_33773522
姑射山人 似乎是我那几个excel坏了,我试了其他的都可以,谢谢您!
11 个月之前 回复
2

当'xlsx’被生成并在Excel程序中打开并保存之后(这个过程Excel会把公式结果计算出来),该文件附带有两套值,一套是公式全都没有计算的(data_only=False(默认)),一套是公式计算了结果的(data_only=True)。(如果没有被Excel打开并保存,则只有一套值(data_only=False的那套,公式没有计算结果的)。
此时,以data_only=True或默认data_only=False打开会得到两种不同的结果,各自独立,即data_only=True状态下打开的,会发现公式结果为None(空值)或者一个计算好的常数,而不会看到它原本的公式是如何。而data_only=False则只会显示公式而已。因此,data_only=True状态下打开,如果最后用save()函数保存了,则原xlsx文件中,公式会被替换为常数结果或空值。而data_only=False状态下打开,最后用save()函数保存了的话,原xlsx文件也会只剩下data_only=False的那套值(即公式),另一套(data_only=True)的值会丢失,如想重新获得两套值,则仍旧需要用Excel程序打开该文件并保存。

1

打开excel文件的时候 加上 data__only=True, 然后 print value即可,如果结果是空,检查一下excel里的公式是否正确返回结果

0
u013026225
撸镇的迅哥儿 回复: 手动输入的公式,可以读到结果,openpyxl写的公式读取就是None
8 个月之前 回复
u013026225
撸镇的迅哥儿 回复: 读取不到是因为你的公式是openpyxl写的,读取就为None,使用openpyxl写的公式,还要手动打开Excel文件,并保存,这样才能读取到公式的结果
8 个月之前 回复
qq_33773522
姑射山人 但是我输出值的时候,因为我需要字符串类型的,使用了print str(value),请问这有没有影响呢
12 个月之前 回复
qq_33773522
姑射山人 就是加上 data__only=True后,结果是空的
12 个月之前 回复
qq_33773522
姑射山人 excel里的公式是正确的,手动打开excel显示也是正确的
12 个月之前 回复

查看公式是否正确,有可能对应不同列了,可参照下面地址:
https://blog.csdn.net/oh5W6HinUg43JvRhhB/article/details/78948886

0

我的可以读取,换个读取函数,用我图片中的读取函数试试看![图片说明](https://img-ask.csdn.net/upload/201807/06/1530869176_25571.png)图片说明

0

这个是我随机生成的列,第10列是用公式求出来的图片说明

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
使用Python获取Excel文件中单元格公式的计算结果
假设有如下Excel文件,其中第二个WorkSheet中数据如下:其中D列为公式,现在要求输出该列公式计算的数值结果,代码如下:代码运行结果:----------相关阅读----------1900页Python系列PPT分享一:基础知识(106页)1900页Python系列PPT分享二:Python序列(列表、元组、字典、集合)(154页)1900页Python系列PPT分享三:选择与循环结构语
openpyxl读取excel中公式的结果值
wb_a = openpyxl.load_workbook(filearray[0],data_only=True)excel_Result = openpyxl.load_workbook(文件名, data_only=True)
无法读取EXCEL中的数据单元格。有数据,但是读出来全是空值。
无法读取EXCEL中的数据单元格。有数据,但是读出来全是空值。 解决方法: 1.在导入数据连接字符串中,将IMEX=1加入,“Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Data.xls";Extended Properties="Excel 8.0;HDR=Yes;IMEX=1; ”,这样就可以。 注: “HDR=Ye
java 读取excel文件中经过公式算出的列值
我在读取excel表格的时候,发现明明好好的数值列,在某一行就是报错,debug了一下,发现那一列是经过公式算出来的 比如值是:=A1+B1+C1。 如果想要经过计算后的此列的值,就需要用到HSSFFormulaEvaluator.  我参考的是在一个bbs上看到的:http://bbs.csdn.net/topics/340055433import java.io.FileInputStream
ASP.NET 读取EXCEL 单元格 无法读取 空值 不显示
读取excel时,某些单元格为空值 前些日子,写了一个excel导入数据库的共同batch,突然有一天发现当我修改excel某一列的值的时候突然读不出来值了.奇怪之余,做了一些调研. 原来如此: 当我们用olebb读取excel的时候,如果没有配置imex=1的属性,微软的处理机制是将列转换为同一类型来读取的.例如你在第一行写的数字格式,而第二行写的字符格式,就会出现某些列有值却读
java poi读取Excel里面含有公式的单元格的值
public static String getCellValue(Cell cell) { int cellType = cell.getCellType(); String cellValue = ""; switch (cellType) { case HSSFCell.CELL_TYPE_NUMERIC: cellValue = String.valueOf(cell
python在excel插入几个值之后,刷新表格公式的计算结果,怎么弄啊
python在excel插入几个值之后,刷新表格公式的计算结果,怎么弄啊 ''' Created on 2015年4月3日 读取exl计算数据 @todo 尚未完成 重新计算公式? @author: youxiang ''' import xlrd, os from Logger import logger from xlrd.formula import evaluate_name_f
读取excel里面值为公式的列
这只是我在项目里面遇到的问题,以及解决方法,写法比较笨拙,可以参考FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); Cell freight_new = row.getCell(j);//获取列CellValue cellValue = evaluator.evaluate(fre...
Java POI 读取带有空单元格或者缺失单元格的excel文件
Java POI 读取带有空单元格或者缺失单元格的excel文件 博客分类:  Java excelxssfpoihssfsheet  参考文档:http://poi.apache.org/spreadsheet/quick-guide.html#Iterator  请注意MissingCellPolicy定义了如何处理缺失的单元格/空单元格:  Java代
python使用xlrd读取excel数据时,整数和日期变小数的解决办法
想让excel数据返回一个字符串字典list,造了一个excel。数据如下: 用代码读取后发现整型和日期变成了小数(123456变成了123456.0,2017/5/20 5:20变成了42875.22222222222): 有个比较简单的解决办法就是在数字和日期的单元格内容前加上一个英文的引号即可。如果数据比较多,也可以批量加英文引号的前缀(网上都有方法)。 ...
ADO.NET(OleDb)读取Excel表格时的一个BUG
假设我们有如下一个Excel表格:    现在要使用C#程序读取其内容:  using System;  using System.Data.OleDb;    namespace Skyiv.Ben.Test  {    sealed class ExcelTest    {      static void Main()      {        try    
Aspose.Cells.dll 读写Excel的用法总结-技术&分享
Aspose.Cells.dll 读写Excel的用法总结-技术&分享 读Excel 写Excel
python 读取excel中单元格的内容
                         python 读取excel中单元格的内容    excel文件内容:   读取excel代码: # coding=utf-8 import xlrd import sys reload(sys) sys.setdefaultencoding('utf-8') import traceback class excelHandl...
解决ASP.NET 读取EXCEL 单元格 无法读取 空值 不显示
读取excel时,某些单元格为空值  当我们用oledb读取excel的时候,如果没有配置imex=1的属性,微软的处理机制是将列转换为同一类型来读取的.例如你在第一行写的数字格式,而第二行写的字符格式,就会出现某些列有值却读不出来.其实问题也很简单,如果知道问题所在的话.属性设置为"imex=1"即可  附以下参考: string xlsdriver = @"provider=micr
python读取excel表,获取空单元格,报错还是获取到空字符串?
经过测试发现, 当某行的列最多的时候,再获取其下一列就会报错 其他行不是列最多的时候,在获取其下一列就不会报错 原因:excel开辟内存空间是 按照矩形的区域,长是最长的列,高是最多的行。即使用户没有输入某些单元格,但是excel也会默认用空字符串进行填充。举个例子: 这是一个excel表 a,b,c 1,2 ,k 那么它的真实区域就是 横3竖3。 你获取 (0,0)得到的是 a
POI读取带有公式的Excel单元格
来自:http://blog.csdn.net/cuihaiyang/article/details/7193027 private static String getStringCellValue(Cell cell) {// 获取单元格数据内容为字符串类型的数据 String strCell = ""; if (cell == null) { ...
c#.net不能完全读取Excel内容的问题
由于工作的需要读取Excel文件导入数据库,由于列的数据类型不确定,可能是数值也有可能是字符串,所以导致数据不能读取的问题,最后才发现是连接字符串的问题,正确的代码如下:private DataSet InstrumentExcelToDataSet(string Path) ...{                        try ...{                strin
小结:POI写Excel公式(函数)及从Excel中读取公式计算值
//写公式: HSSFCEll newCell = row.createCell(newColIndex); newCell.setCellFormula("A1+B1"); newCell.setCellType(Cell.CELL_TYPE_FORMULA); 读公式值: HSSFFormuulaEvaluator eva = new HSSFFormuulaEvaluato
[C#新手入门 九] C#读取Excel表中的数据时,有的数据读取不到
今天把程序发布到服务器IIS后,运行发现一个问题,有的excel导入模板出现导入数据丢失,某列第一行是空白没有值,后面是数字类型的数据,导入时整列值后变成空白了。导入的方式是在客户机选择Excel导入模板,上传到服务器,在服务器上执行读取Excel,数据写入数据库。注册表修改内容如下:在HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.
POI读取Excel公式列
case HSSFCell.CELL_TYPE_FORMULA: // 公式 FormulaEvaluator evaluator = cell.getSheet().getWorkbook().getCreationHelper().createFormulaEvaluator(); evaluator.evaluateFormulaCell(cell); CellValue cellVa
NPOI操作excel后 单元格公式计算值无法自动更新的问题
在我使用vb.net 调用NPOI操作excel时,导入了excelsheet一批值,但是发现 单元格中带有公式的值不能自动更新就是Q5内的公式为=Q3,我用NPOI修改了Q3的值以后,打开Q5,发现Q5还是以前的值,我必须双击Q5orQ3,Q5内的公式才会重新计算而更新到修改后的值因此我广泛的搜集资料,最终的解决办法是,在程序最后添加一句(关闭文件前),使得sheetdata自动重算:sheet...
使用Python的pandas库读Excel表格.xlsx格式无法读取问题
使用Python的pandas库读Excel表格.xlsx格式无法读取问题 做数据分析首先应该导入数据,我这里导入的是 .csv 数据。 出现错误:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xd0 in position 0: invalid continuation byte. 由于后台数据管理者给到我的数据是.xlsx格式...
c#读取Excel数据不全
读取方式:                string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filePath + ";" + ";Extended Properties=\"Excel 12.0;HDR=No;IMEX=1\"";          可以先参考:http://blog.csdn.n
用NPOI操作EXCEL-NPOI计算公式-通过NPOI获得公式的返回值
一、获取模板文件中公式的返回值 如在D盘中有一个名为text.xls的Excel文件,其内容如下: 注意C1单元格中设置的是公式“A1∗A1*A1∗B1”,而不是值“12”。利用NPOI,只需要写简单的几句代码就可以取得此公式的返回值: HSSFWorkbook wb = new HSSFWorkbook(new FileStream("d:/test.xls",FileMode.Open));...
【Python模块】使用Python xlrd读取excel中的测试数据
一、安装xlrd模块 1、安装pip wget https://bootstrap.pypa.io/get-pip.py python get-pip.py 2、使用pip安装xlrd pip install xlrd 二、基本操作 1、获取excel基本信息 data = xlrd.open_workbook('/root/data.xlsx') #打开...
POI读取带有公式的Excel单元格
项目中需要使用Excel导入数据,读取Excel单元格的方法如下: private static String getStringCellValue(Cell cell) {// 获取单元格数据内容为字符串类型的数据 String strCell = ""; if (cell == null) { return "";
POI读取excel表格,首列出现跨行表格时,读取表格数据不全解决办法
在POI读取表格时候。如上图表格。在一般读取时,因为A4-A8被合并,导致在读取时,只能读取到下图数据: 而很多条记录很忽略。 下面贴出groovy下处理代码: (0..<wb.numberOfSheets).each { sheetIndex ->     def st = wb.getSheetAt(sheetIndex)     /*      * 遍历每...
关于npoi表格读取的问题
 1.{"未将对象引用设置到对象的实例。"}row.GetCell(7).StringCellValueICell cell=row.GetCell(7);当cell为null的时候则没有cell值。
NPOI获取有公式的单元格数据
如果直接取值取得就是公式,如下图 判断一下类型就可以了
Java-POI读取excel(null的cell也读取输出)
/** * * 读写excel * */ public class RWExcel { private String filePath; private int sheetNum = 0; /** * 构造方法 * */ public RWExcel(String filePath,int sheetNum){ this.filePath = f...
Python读取Excel单元格的内容
python读取excel的单元格返回类型 Python通过xlrd对Excel进行读取操作时,返回的数据类型(ctype)有下面5中类型: 0 – empty:空 1 – string:字符串 2 – number:数字 3 – date:日期 4 – boolean:布尔 5 – error import xlrd import os from LYKION.self.log import ...
Python如何读取excel单元格的缩进
有些excel中有这种利用缩进表示层次结构的方式,那么python如何解析它们呢? 工具:openpyxl 代码如下:#!/usr/bin/env python # -*- coding: utf-8 -*-from openpyxl import load_workbookwb = load_workbook('a.xlsx')ws = wb.get_sheet_by_name(u'年度B
pandas从excel读取数据处理的注意事项
##excel中支持的数据类型较pandas多的多 因为从excel读取的数据类型很多默认是object,数据处理前建议转换成str等。pandas中当多列同为object时,实际数据不相同。 如merge时 ggg=pd.merge(cs,c,how="inner",left_on="单号",right_on="运单号") 同为object,数据也有相同但merge时就不会联出数据 ...
关于MFC中读取EXCEL文件的操作
转自:点击打开链接 .h文件的源码代码如下: 其中的头文件都是OLE的头文件。如何导出可以参考 http://blog.csdn.net/wyz365889/article/details/7599924 一下是具体代码 头文件: #pragma once //OLE的头文件 #include #include #include #i
python读取文件列表,pandas操作excel
python读取文件列表,pandas操作excel 目标 读取指定文件下所有excel文件 根据excel文件一列的内容分条件新增列 保存并输入新excel文件 思路 读取文件利用os.walk() 判断、新增列利用pandas 输入新excel文件利用pandas的ExcelWriter() #!/usr/bin/env python3 # -*- coding: utf-8 -*- ...
JAVA POI读取Excel中Cell为null的处理
空数据:没有任何编辑过的单元格(非空格) 有时候我们需要对根据每一列的信息进行处理,这里就会出现易错的缺陷。 1.不需要这些空数据 row = sheet.getRow(i); for (Cell c : row) { //处理 } 2.需要这些空数据 row = sheet.getRow(i); for (int j=0;j<row.getLastCellNum();j+...
poi-3.17,可以读取excel
POI jar包。使用Java语言,通过POI进行excel的读取,支持xls格式和xlsx格式。
java xssf 如果读取excel中公式的值
excel 如下:    C列= A*B 想要读取C列单元格的=A2*B2的值 import java.io.FileInputStream; import java.util.Date; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellValue; imp
python读取excel中单元格的内容返回的5种类型
文章转自:https://www.cnblogs.com/xxiong1031/p/7069006.html python读取excel中单元格的内容返回的有5种类型,即上面例子中的ctype: ctype:  0   empty 1   string 2   number 3   date 4   boolean 5   error #
C#读取excel数据时,文本格式和数值格式的内容无法正常全部读取
表现:excel中某列中,有的单元格左上角有绿色箭头标志,有的没有,c#编写读取程序,但是只能读取出带绿色箭头的单元格中的内容,其余不带的读取不到内容 原因:excel中单元格因为是文本格式而存储了数值,导致后台错误检查,在左上角显示绿色箭头 解决:string strConn; 原来读取不完全的写法:strConn = "Provider=Microsoft.Jet.OLEDB.4.0;D
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python读班级数据 使用python教程