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 24 Python
python+selenium开发环境搭建图文教程
Aug 11 Python
详解python里使用正则表达式的全匹配功能
Oct 19 Python
Python cookbook(数据结构与算法)实现优先级队列的方法示例
Feb 18 Python
Python实现OpenCV的安装与使用示例
Mar 30 Python
解决python报错MemoryError的问题
Jun 26 Python
python实现写数字文件名的递增保存文件方法
Oct 25 Python
python程序封装为win32服务的方法
Mar 07 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
Mac 使用python3的matplot画图不显示的解决
Nov 23 Python
使用python求解二次规划的问题
Feb 29 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 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
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
js正则表达式匹配数字字母下划线等
2015/04/14 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
js微信支付实现代码
2016/12/22 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
vue实现全选和反选功能
2017/08/31 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
PyMongo安装使用笔记
2015/04/27 Python
基于Python List的赋值方法
2018/06/23 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
C语言如何决定使用那种整数类型
2016/11/26 面试题
Java程序员面试题
2016/09/27 面试题
小学安全汇报材料
2014/08/14 职场文书
成绩单评语
2015/01/04 职场文书
2015年工会工作总结范文
2015/07/23 职场文书