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内置函数之filter map reduce介绍
Nov 30 Python
对于Python中线程问题的简单讲解
Apr 03 Python
浅谈Python中的闭包
Jul 08 Python
Python的Django框架中的Context使用
Jul 15 Python
深入解析Python中的线程同步方法
Jun 14 Python
Python使用ntplib库同步校准当地时间的方法
Jul 02 Python
python 上下文管理器使用方法小结
Oct 10 Python
Python之Scrapy爬虫框架安装及使用详解
Nov 16 Python
Python实现针对给定字符串寻找最长非重复子串的方法
Apr 21 Python
学习python分支结构
May 17 Python
django queryset 去重 .distinct()说明
May 19 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
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
javascript 限制输入脚本大全
2009/11/03 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
2016/09/03 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
关于angularJs指令的Scope(作用域)介绍
2016/10/25 Javascript
javascript简单进制转换实现方法
2016/11/24 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
vue实现通讯录功能
2018/07/14 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
浅谈angular2子组件的事件传递(任意组件事件传递)
2018/09/30 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
2017/04/24 Python
实例讲解Python3中abs()函数
2019/02/19 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
PHP解析URL是哪个函数?怎么用?
2013/05/09 面试题
生物技术研究生自荐信
2013/11/12 职场文书
自荐信格式技巧有哪些呢
2013/11/19 职场文书
个人函授自我鉴定
2014/03/25 职场文书
小学教师年度个人总结
2015/02/05 职场文书
2016年敬老月活动总结
2016/04/05 职场文书