查看所有公式
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()