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使用scrapy解析js示例
Jan 23 Python
Python的time模块中的常用方法整理
Jun 18 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 Python
在django中使用自定义标签实现分页功能
Jul 04 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
python 移除字符串尾部的数字方法
Jul 17 Python
Python两个字典键同值相加的几种方法
Mar 05 Python
VSCode中自动为Python文件添加头部注释
Nov 14 Python
python matplotlib如何给图中的点加标签
Nov 14 Python
Python进行统计建模
Aug 10 Python
python实现在列表中查找某个元素的下标示例
Nov 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
PL-880隐藏功能
2021/03/01 无线电
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
layui前端框架之table表数据的刷新方法
2018/08/17 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
2018/03/19 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
利用anaconda作为python的依赖库管理方法
2019/08/13 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
Python项目打包成二进制的方法
2020/12/30 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
审核会计岗位职责
2013/11/08 职场文书
法学函授自我鉴定
2014/02/06 职场文书
教师求职信
2014/06/17 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
停水通知
2015/04/16 职场文书
归途列车观后感
2015/06/17 职场文书
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS