python打开excel的函数-Python读取excel文件中带公式的值的实现
在進(jìn)行excel文件讀取的時(shí)候,我自己設(shè)置了部分直接從公式獲取單元格的值
但是用之前的讀取方法進(jìn)行讀取的時(shí)候,返回值為空
import os
import xlrd
from xlutils.copy import copy
file_path = os.path.abspath(os.path.dirname(__file__)) # 獲取當(dāng)前文件目錄
print(file_path)
root_path = os.path.dirname(file_path) # 獲取文件上級(jí)目錄
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) # 切換到第一個(gè)sheet
def get_excel(row, col):
"""
excel 單元格讀取
:param row:
:param col:
:return:
"""
rows = sheet.nrows # 獲取最大行號(hào)
cols = sheet.ncols # 獲取最大列號(hào)
path_name = sheet.cell_value(row, col) # 獲取單元格值
return rows,cols,path_name
查詢之后發(fā)現(xiàn)普通的讀取不能直接讀取帶單元格的值。現(xiàn)在采用
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時(shí),可能會(huì)存在這些問(wèn)題
要么讀出來(lái)是“None”,要么是“公式本身”
wb = openpyxl.load_workbook("daikuan.xlsx",data_only = True)-------讀出來(lái)的是 none
#wb = openpyxl.load_workbook("daikuan.xlsx",data_only = False)------------讀出來(lái)的是 公式本身
解決辦法:
公式是代碼寫進(jìn)去的,這樣讀出來(lái)就是None。
手動(dòng)寫入公式并保存,再用openpyxl讀取,能讀取到公式的結(jié)果。
代碼寫入的公式/值,需要手動(dòng)打開Excel,并保存,再用openpyxl讀取,就能讀取到公式了。
或者調(diào)用win32com.client import Dispatch 模塊。運(yùn)行下面代碼后再進(jìn)行讀取,就能讀取到數(shù)據(jù)/值
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()
到此這篇關(guān)于Python讀取excel文件中帶公式的值的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python讀取excel公式的值內(nèi)容請(qǐng)搜索python博客以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持python博客!
總結(jié)
以上是生活随笔為你收集整理的python打开excel的函数-Python读取excel文件中带公式的值的实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: sqlserver 两表联查去重_去山东
- 下一篇: 已放弃 (核心已转储)_辽宁已放弃师弟!