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类定义和类继承详解
May 08 Python
对python插入数据库和生成插入sql的示例讲解
Nov 14 Python
一百行python代码将图片转成字符画
Feb 19 Python
对Python正则匹配IP、Url、Mail的方法详解
Dec 25 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
Apr 17 Python
python3 selenium自动化 frame表单嵌套的切换方法
Aug 23 Python
Python之Numpy的超实用基础详细教程
Oct 23 Python
python实现低通滤波器代码
Feb 26 Python
如何使用pandas读取txt文件中指定的列(有无标题)
Mar 05 Python
基于Django signals 信号作用及用法详解
Mar 28 Python
django model的update时auto_now不被更新的原因及解决方式
Apr 01 Python
python中函数返回多个结果的实例方法
Dec 16 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加密解密实用类分享
2014/01/07 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
Python利用IPython提高开发效率
2016/08/10 Python
如何高效使用Python字典的方法详解
2017/08/31 Python
Python输入二维数组方法
2018/04/13 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
pymongo中group by的操作方法教程
2019/03/22 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
毕业生的自我评价范文
2013/12/31 职场文书
教师开学感言
2014/02/14 职场文书
商超业务员岗位职责
2014/03/12 职场文书
办公室岗位职责
2015/02/04 职场文书
Python制作动态字符画的源码
2021/08/04 Python
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL