有些时候excel中直接通过公式进行计算比较方便,这样会比较简洁。并且下面代码也解决了excel读取单元格内容时(通过公式计算的值)为None的问题,咱们废话不多说,直接上代码。
import sys
import openpyxl
from win32com.client import Dispatch #win32com安装指令为:python -m pip install pypiwin32path = sys.path[0] #获取当前脚本路径def just_open():# 保存excel使公式计算出结果xlApp = Dispatch("Excel.Application")xlApp.Visible = FalsexlBook = xlApp.Workbooks.Open(filename)xlBook.Save()xlBook.Close()#创建一个工作簿,并命名工作表名称为'Demo'
wb=openpyxl.Workbook()
ws=wb.active #指定当前显示(活动)的sheet对象
ws.title='Demo'
SheetData= wb.get_sheet_by_name('Demo')#新建一个工作表,并往A列写入1-10
SheetName = 'Sheet1'
wb.create_sheet(SheetName)
SheetData1 = wb.get_sheet_by_name(SheetName)for i in range(10):SheetData1["A%d" % (i+1)].value = i + 1SheetData1["B1"] = '=sum(A:A)' ##求工作表'Sheet1'的A列平均值,然后写入'Sheet1'中
SheetData1["B2"] = '=sum(A1:A10)'
SheetData["A1"] = '=AVERAGE(%s!A:A)' % SheetName
SheetData["A2"] = '=INT(AVERAGE(%s!A:A))' % SheetName #求工作表'Sheet1'的A列平均值并取整,然后写入'Demo'中
SheetData["A3"] = '=sum(%s!A:A)' % SheetNamewb.save('123.xlsx')#如果直接读取单元格内的值(通过公式计算的值)则为'None',则应通过下面方式实现。
#读取excel公式计算的值。
filename= path + '/' + '123.xlsx'
just_open()
wb1=openpyxl.load_workbook(filename, data_only=True)
SheetData=wb1.worksheets[0]
print(SheetData["A1"].value, SheetData["A2"].value, SheetData["A3"].value)for j in SheetData["A"]: #获取第A列的数据print(j.value, end=' ')
print()