Python 讀取excel文件中帶公式的值


在進行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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM