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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
Python3.0与2.X版本的区别实例分析
Aug 25 Python
python 生成器生成杨辉三角的方法(必看)
Apr 10 Python
手把手教你python实现SVM算法
Dec 27 Python
Django 使用Ajax进行前后台交互的示例讲解
May 28 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
利用python Selenium实现自动登陆京东签到领金币功能
Oct 31 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
tensorflow自定义激活函数实例
Feb 04 Python
python函数enumerate,operator和Counter使用技巧实例小结
Feb 22 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
关于PySnooper 永远不要使用print进行调试的问题
Mar 04 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
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
asp批量修改记录的代码
2008/06/25 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
2013/12/16 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
js重写方法的简单实现
2016/07/10 Javascript
jQuery插件之validation插件
2017/03/29 jQuery
微信小程序自动客服功能
2017/11/02 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
Jquery让form表单异步提交代码实现
2019/11/14 jQuery
python使用7z解压apk包的方法
2015/04/18 Python
深入讲解Python编程中的字符串
2015/10/14 Python
python密码错误三次锁定(实例讲解)
2017/11/14 Python
python基于http下载视频或音频
2018/06/20 Python
浅述python中深浅拷贝原理
2018/09/18 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
python实现动态数组的示例代码
2019/07/15 Python
Django之腾讯云短信的实现
2020/06/12 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
资产评估专业大学生求职信
2013/09/29 职场文书
自我鉴定总结
2014/03/24 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
建筑工程质量通病防治方案
2014/06/08 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
致地震灾区的慰问信
2015/03/23 职场文书
药店收银员岗位职责
2015/04/07 职场文书
质检员工作总结2015
2015/04/25 职场文书
党员带头倡议书
2015/04/29 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书