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()
经验分享 程序员 微信小程序 职场和发展