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二叉树遍历的实现方法
Nov 21 Python
python读取浮点数和读取文本文件示例
May 06 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 Python
Python实现读取json文件到excel表
Nov 18 Python
Python中字典的浅拷贝与深拷贝用法实例分析
Jan 02 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
python递归下载文件夹下所有文件
Aug 31 Python
python实现在内存中读写str和二进制数据代码
Apr 24 Python
Python学习之os模块及用法
Jun 03 Python
Pyhton模块和包相关知识总结
May 12 Python
python如何正确使用yield
May 21 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
如何做到多笔资料的同步
2006/10/09 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
Zend Framework教程之Autoloading用法详解
2016/03/08 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
JavaScript Event学习第五章 高级事件注册模型
2010/02/07 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
使用Bootstrap美化按钮实例代码(demo)
2017/02/03 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
[41:56]Spirit vs Liquid Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
Python基于贪心算法解决背包问题示例
2017/11/27 Python
flask 实现token机制的示例代码
2019/11/07 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
CSS3区域模块region相关编写示例
2015/08/28 HTML / CSS
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
个人查摆剖析材料
2014/10/04 职场文书
会计师事务所实习证明
2014/11/16 职场文书
活动主持人开场白
2015/05/28 职场文书
医院消毒隔离制度
2015/08/05 职场文书
python 三边测量定位的实现代码
2021/04/22 Python
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
MySQL into_Mysql中replace与replace into用法案例详解
2021/09/14 MySQL