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 10 Python
python复制与引用用法分析
Apr 08 Python
Python 爬虫图片简单实现
Jun 01 Python
理解python中生成器用法
Dec 20 Python
python numpy 一维数组转变为多维数组的实例
Jul 02 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
pycharm修改界面主题颜色的方法
Jan 17 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
Mar 05 Python
Python中判断子串存在的性能比较及分析总结
Jun 23 Python
OpenCV Python实现拼图小游戏
Mar 23 Python
Python Dict找出value大于某值或key大于某值的所有项方式
Jun 05 Python
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
Jun 08 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对图像的各种处理函数代码小结
2013/07/08 PHP
PHP的拦截器实例分析
2014/11/03 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
2015/02/07 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
初识javascript 文档碎片
2010/07/13 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
JavaScript实现表格快速变色效果代码
2015/08/19 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
nodejs实现截取上传视频中一帧作为预览图片
2017/12/10 NodeJs
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
老生常谈进程线程协程那些事儿
2017/07/24 Python
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
python的re正则表达式实例代码
2018/01/24 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
为什么python比较流行
2020/06/19 Python
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
英国老牌潮鞋店:Offspring
2019/08/19 全球购物
Java多态性的定义以及类型
2014/09/16 面试题
网吧消防安全制度
2014/01/28 职场文书
合作意向协议书范本
2014/03/31 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
暂住证明怎么写
2015/06/19 职场文书
Mysql数据库命令大全
2021/05/26 MySQL
python实现会员信息管理系统(List)
2022/03/18 Python