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 & Flask 实现RESTful Web API的实例
Sep 19 Python
python:print格式化输出到文件的实例
May 14 Python
Opencv实现抠图背景图替换功能
May 21 Python
python画图把时间作为横坐标的方法
Jul 07 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
Oct 24 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 Python
django 模版关闭转义方式
May 14 Python
k-means 聚类算法与Python实现代码
Jun 01 Python
Django xadmin安装及使用详解
Oct 26 Python
OpenCV图像变换之傅里叶变换的一些应用
Jul 26 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
Apr 06 Python
用PYTHON去计算88键钢琴的琴键频率和音高
Apr 10 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生成带有雪花背景的验证码
2006/10/09 PHP
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
jquery trim() 功能源代码
2011/02/14 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
JS编程小常识很有用
2012/11/26 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
2015/08/13 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
简单实现nodejs上传功能
2017/01/14 NodeJs
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
Vue3 中的数据侦测的实现
2019/10/09 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python实现PS图像抽象画风效果的方法
2018/01/23 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
python绘制热力图heatmap
2020/03/23 Python
python访问hdfs的操作
2020/06/06 Python
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
ktv收银员岗位职责
2013/12/16 职场文书
财务部总监岗位职责
2014/03/12 职场文书
安全标语大全
2014/06/10 职场文书
医院搬迁方案
2014/06/14 职场文书
家属慰问信
2015/02/14 职场文书
五年级作文之想象作文
2019/10/30 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
Redis实现订单过期删除的方法步骤
2022/06/05 Redis