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实现Const详解
Jan 27 Python
python实现八大排序算法(1)
Sep 14 Python
Python 使用with上下文实现计时功能
Mar 09 Python
基于Django框架利用Ajax实现点赞功能实例代码
Aug 19 Python
Python中extend和append的区别讲解
Jan 24 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
Python实现的调用C语言函数功能简单实例
Mar 13 Python
python 三元运算符使用解析
Sep 16 Python
执行Python程序时模块报错问题
Mar 26 Python
python合并多个excel文件的示例
Sep 23 Python
Pytorch 如何加速Dataloader提升数据读取速度
May 28 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
PHP 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
javaScript Array(数组)相关方法简述
2009/07/25 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
Python实现使用request模块下载图片demo示例
2019/05/24 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
四年级数学教学反思
2014/02/02 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
追悼会主持词
2014/03/20 职场文书
公司年会搞笑主持词
2014/03/24 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
学校捐书活动总结
2015/05/08 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python