Python excel数据处理之公式---openpyxl
有些时候excel中直接通过公式进行计算比较方便,这样会比较简洁。并且下面代码也解决了excel读取单元格内容时(通过公式计算的值)为None的问题,咱们废话不多说,直接上代码。
import sys import openpyxl from win32com.client import Dispatch #win32com安装指令为:python -m pip install pypiwin32 path = sys.path[0] #获取当前脚本路径 def just_open(): # 保存excel使公式计算出结果 xlApp = Dispatch("Excel.Application") xlApp.Visible = False xlBook = 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 + 1 SheetData1["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) % SheetName wb.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()