Python讀取excel文件中帶公式的值的實現(xiàn)
在進行excel文件讀取的時候,我自己設(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) # 獲取文件上級目錄 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
查詢之后發(fā)現(xiàn)普通的讀取不能直接讀取帶單元格的值?,F(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時,可能會存在這些問題
要么讀出來是“None”,要么是“公式本身”
wb = openpyxl.load_workbook('daikuan.xlsx',data_only = True)-------讀出來的是 none #wb = openpyxl.load_workbook('daikuan.xlsx',data_only = False)------------讀出來的是 公式本身
解決辦法:
公式是代碼寫進去的,這樣讀出來就是None。
手動寫入公式并保存,再用openpyxl讀取,能讀取到公式的結(jié)果。
代碼寫入的公式/值,需要手動打開Excel,并保存,再用openpyxl讀取,就能讀取到公式了。
或者調(diào)用win32com.client import Dispatch 模塊。運行下面代碼后再進行讀取,就能讀取到數(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文件中帶公式的值的實現(xiàn)的文章就介紹到這了,更多相關(guān)Python讀取excel公式的值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
擴展Django admin的list_filter()可使用范圍方法
今天小編就為大家分享一篇擴展Django admin的list_filter()可使用范圍方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08詳解pandas映射與數(shù)據(jù)轉(zhuǎn)換
這篇文章主要介紹了pandas映射與數(shù)據(jù)轉(zhuǎn)換的相關(guān)資料,幫助大家更好的利用python進行數(shù)據(jù)分析,感興趣的朋友可以了解下2021-01-01Python 網(wǎng)絡(luò)編程起步(Socket發(fā)送消息)
現(xiàn)在開始學(xué)習(xí)網(wǎng)絡(luò)編程,先從簡單的UDP協(xié)議發(fā)送消息開始。我們需要有接受消息的服務(wù)端程序(Server.py)和發(fā)送消息的客戶端程序(Client)。2008-09-09Python中FastAPI項目使用 Annotated的參數(shù)設(shè)計的處理方案
FastAPI 是一個非?,F(xiàn)代化和高效的框架,非常適合用于構(gòu)建高性能的 API,FastAPI 是一個用于構(gòu)建 API 的現(xiàn)代、快速(高性能)web 框架,基于 Python 類型提示,這篇文章主要介紹了Python中FastAPI項目使用 Annotated的參數(shù)設(shè)計,需要的朋友可以參考下2024-08-08如何使用python實現(xiàn)模擬鼠標(biāo)點擊
這篇文章主要介紹了如何使用python實現(xiàn)模擬鼠標(biāo)點擊,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01