Python读取excel文件中带公式的值的实现


Posted in Python onApril 17, 2020

在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值

但是用之前的读取方法进行读取的时候,返回值为空

import os
import xlrd
from xlutils.copy import copy

file_path = os.path.abspath(os.path.dirname(__file__)) # 获取当前文件目录
print(file_path)
root_path = os.path.dirname(file_path)  # 获取文件上级目录
data_path = root_path + '\\data' # 拼接data文件夹地址
data_file = data_path + '\\api.xlsx'  # 拼接excel文件地址
data = xlrd.open_workbook(data_file) # 读取文件
sheet = data.sheet_by_index(0)  # 切换到第一个sheet

def get_excel(row, col):
  """
  excel 单元格读取
  :param row: 
  :param col: 
  :return: 
  """
  rows = sheet.nrows # 获取最大行号
  cols = sheet.ncols # 获取最大列号
  path_name = sheet.cell_value(row, col)  # 获取单元格值
  return rows,cols,path_name

查询之后发现普通的读取不能直接读取带单元格的值。现在采用

openpyxl下的load_workbook模块

from openpyxl import load_workbook
def get_xlrd(self,row,col):
  wb = load_workbook(self.data_file, data_only=True)
  ws = wb.worksheets[0]
  return ws.cell(row,col).value

openpyxl 读取带公式的excel时,可能会存在这些问题

要么读出来是“None”,要么是“公式本身”

wb = openpyxl.load_workbook('daikuan.xlsx',data_only = True)-------读出来的是 none
#wb = openpyxl.load_workbook('daikuan.xlsx',data_only = False)------------读出来的是 公式本身

解决办法:
公式是代码写进去的,这样读出来就是None。
手动写入公式并保存,再用openpyxl读取,能读取到公式的结果。
代码写入的公式/值,需要手动打开Excel,并保存,再用openpyxl读取,就能读取到公式了。

或者调用win32com.client import Dispatch 模块。运行下面代码后再进行读取,就能读取到数据/值

from win32com.client import Dispatch

def just_open(filename=file_name):
  xlApp = Dispatch("Excel.Application")
  xlApp.Visible = False
  xlBook = xlApp.Workbooks.Open(filename)
  xlBook.Save()
  xlBook.Close()

到此这篇关于Python读取excel文件中带公式的值的实现的文章就介绍到这了,更多相关Python读取excel公式的值内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
简单的python协同过滤程序实例代码
Jan 31 Python
python实现自主查询实时天气
Jun 22 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
说说如何遍历Python列表的方法示例
Feb 11 Python
Scrapy-Redis结合POST请求获取数据的方法示例
May 07 Python
Python应用领域和就业形势分析总结
May 14 Python
Python如何筛选序列中的元素的方法实现
Jul 15 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
Python如何读写CSV文件
Aug 13 Python
python 浮点数四舍五入需要注意的地方
Aug 18 Python
python自动化发送邮件实例讲解
Jan 04 Python
Python可视化神器pyecharts之绘制箱形图
Jul 07 Python
在Matplotlib图中插入LaTex公式实例
Apr 17 #Python
python中for in的用法详解
Apr 17 #Python
解决Jupyter无法导入已安装的 module问题
Apr 17 #Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 #Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 #Python
jupyternotebook 撤销删除的操作方式
Apr 17 #Python
使用python matplotlib 画图导入到word中如何保证分辨率
Apr 16 #Python
You might like
php中数据的批量导入(csv文件)
2006/10/09 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
form自动提交实例讲解
2017/07/10 PHP
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
javascript算法学习(直接插入排序)
2011/04/12 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
javaScript语法总结
2016/11/25 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
Python交互环境下实现输入代码
2018/06/22 Python
python匹配两个短语之间的字符实例
2018/12/25 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
详解Flask前后端分离项目案例
2020/07/24 Python
flask项目集成swagger的方法
2020/12/09 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
房产委托公证书
2014/04/08 职场文书
食品安全工作方案
2014/05/07 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
浅析Python中的随机采样和概率分布
2021/12/06 Python
python画条形图的具体代码
2022/04/20 Python
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL