openpyxl 使用公式


查看所有公式

from openpyxl.utils import FORMULAE
print(len(FORMULAE))
print(FORMULAE)

# 公式是否存在
print('x' in FORMULAE) # 返回為 True

 

from openpyxl import Workbook

wb = Workbook()
sheet = wb.active
sheet['a1'] = '銷量A'
sheet['B1'] = '銷量B'
sheet['C1'] = '總銷量'
sheet['a2'] = 10
sheet['a3'] = 15
sheet['b2']= 20
sheet['b3'] = 25

for i in range(2,4):
    cell_a = 'A'+str(i)
    cell_b = 'B'+str(i)
    cell_c = 'C'+ str(i)
    sheet[cell_c] = '=sum({},{})'.format(cell_a,cell_b)
    
wb.save('new_test.xlsx')

顯示公式值

wbook = load_workbook(filename='formula_1.xlsx',data_only=True)
# load_workbook方法中涉及到較多的屬性,包括read_only,keep_vba,guess_types,data_only等。
# data_only用於讀取cell中的值,當單元格中的值是一個公式的時候,會返回計算到的結果。
# data_only 控制具有公式的單元格是否具有公式(默認值)或上次Excel讀取工作表時存儲的值。

我們運行替換后的代碼的后,打印cell_C2值的時候是為卻為None,這是為什么呢?查詢相關的資料的解釋可以參考:

https://blog.51cto.com/antidarkness/1974684

那么這個問題該怎么解決呢?我們可以使用win32庫進行打開關閉的操作之后,在使用openpyxl打開文件傳入data_only=True即可,使用win32打開保存的代碼如下:(注意filaname需要傳一個全路徑)

from win32com.client import Dispatch
filename
= r'C:\Users\LEGION\Desktop\tweets_code\formula_1.xlsx' xlApp = Dispatch('Excel.Application') xlApp.Visible = False xlBook = xlApp.Workbooks.Open() xlBook.Save() xlBook.Close()

 


免責聲明!

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



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