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发送各种形式的邮件的方法汇总
Nov 09 Python
python实现Decorator模式实例代码
Feb 09 Python
django传值给模板, 再用JS接收并进行操作的实例
May 28 Python
python实现定时提取实时日志程序
Jun 22 Python
深入了解Django View(视图系统)
Jul 23 Python
大家都说好用的Python命令行库click的使用
Nov 07 Python
如何在mac环境中用python处理protobuf
Dec 25 Python
Python3标准库glob文件名模式匹配的问题
Mar 13 Python
如何利用python web框架做文件流下载的实现示例
Jun 02 Python
python ETL工具 pyetl
Jun 07 Python
matplotlib交互式数据光标mpldatacursor的实现
Feb 03 Python
如何用用Python将地址标记在地图上
Feb 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
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
Ext 表单布局实例代码
2009/04/30 Javascript
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
JQuery 获得绝对,相对位置的坐标方法
2010/02/09 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
2010/06/28 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
Vue.js每天必学之计算属性computed与$watch
2016/09/05 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
VUE页面中加载外部HTML的示例代码
2017/09/20 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
JavaScript程序设计高级算法之动态规划实例分析
2017/11/24 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
wxpython 学习笔记 第一天
2009/03/16 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
对Pytorch中Tensor的各种池化操作解析
2020/01/03 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
nohup的用法
2014/08/10 面试题
集体婚礼证婚词
2014/01/13 职场文书
大学生冰淇淋店商业计划书
2014/01/14 职场文书
毕业论文致谢信
2015/05/14 职场文书
导游词之山东八大关
2019/12/18 职场文书
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL
Flask response响应的具体使用
2021/07/15 Python
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL