如何使用openpyxl读取和修改Excel中的公式,实现自动化计算?
Posted 字节跳远
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用openpyxl读取和修改Excel中的公式,实现自动化计算?相关的知识,希望对你有一定的参考价值。
要使用openpyxl读取和修改Excel中的公式,可以使用openpyxl.cell.cell.Cell对象中的value属性,该属性可以读取或修改单元格中的值或公式。以下是一个示例:
makefile
from openpyxl import load_workbook
# 加载Excel文件
wb = load_workbook(filename="test.xlsx")
# 获取第一个工作表
ws = wb.active
# 读取第二行第一列的公式
formula = ws.cell(row=2, column=1).value
# 修改公式
new_formula = formula.replace("A", "B")
ws.cell(row=2, column=1).value = new_formula
# 计算公式并输出结果
result = ws.cell(row=2, column=1).value
print(result)
# 保存工作簿
wb.save("test.xlsx")
在这个示例中,我们首先加载了一个Excel文件,然后获取了第一个工作表。接下来,我们读取了第二行第一列的公式,将其中的字母"A"替换为"B",然后将修改后的公式写回到了单元格中。最后,我们读取了修改后的公式的计算结果,并输出到了控制台中。最后,我们保存了修改后的Excel文件。
需要注意的是,使用value属性读取或修改单元格中的公式时,需要确保公式本身是正确的,否则可能会导致错误的计算结果。此外,在写入公式时,可以使用openpyxl.utils.formula模块中的函数来生成公式字符串,以确保公式的正确性。
Python3 读取和写入excel xlsx文件 使用openpyxl
python处理excel已经有大量包,主流代表有:
?xlwings:简单强大,可替代VBA
?openpyxl:简单易用,功能广泛
?pandas:使用需要结合其他库,数据处理是pandas立身之本
?win32com:不仅仅是excel,可以处理office;不过它相当于是 windows COM 的封装,新手使用起来略有些痛苦。
?Xlsxwriter:丰富多样的特性,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。
?DataNitro:作为插件内嵌到excel中,可替代VBA,在excel中优雅的使用python
?xlutils:结合xlrd/xlwt,老牌python包,需要注意的是你必须同时安装这三个库
1.openpyxl使用
openpyxl是Python可以用于处理xlsx的库!
2.openpyxl安装
pip install openpyxl
3.使用技巧
(1)打开excel文件,获取工作表
import openpyxl
wb=openpyxl.load_workbook(‘ttt.xlsx‘) #打开excel文件
print(wb.get_sheet_names()) #获取工作簿所有工作表名
sheet=wb.get_sheet_by_name(‘Sheet1‘) #获取工作表
print(sheet.title)
sheet02=wb.get_active_sheet() #获取活动的工作表
print(sheet02.title)
(2)操作单元格
print(sheet[‘A1‘].value) #获取单元格A1值
print(sheet[‘A1‘].column) #获取单元格列值
print(sheet[‘A1‘].row) #获取单元格行号
print(sheet.cell(row=1,column=1).value) #获取单元格A1值,column与row依然可用
for i in range(1,4,1):
print(sheet.cell(row=i,column=1).value) #更加方便实用
print(sheet.max_column) #获取最大列数
print(sheet.max_row) #获取最大行数
(3)读取excel文件
#wbname==即文件名称,sheetname==工作表名称,可以为空,若为空默认第一个工作表
def readwb(wbname,sheetname):
wb=openpyxl.load_workbook(filename=wbname,read_only=True)
if (sheetname==""):
ws=wb.active
else:
ws=wb[sheetname]
data=[]
for row in ws.rows:
list=[]
for cell in row:
aa=str(cell.value)
if (aa==""):
aa="1"
list.append(aa)
data.append(list)
print (wbname +"-"+sheetname+"- 已成功读取")
return data
(4)新建excel,并写入数据
#新建excel
def creatwb(wbname):
wb=openpyxl.Workbook()
wb.save(filename=wbname)
print ("新建Excel:"+wbname+"成功")
# 写入excel文件中 date 数据,date是list数据类型, fields 表头
def savetoexcel(data,fields,sheetname,wbname):
print("写入excel:")
wb=openpyxl.load_workbook(filename=wbname)
sheet=wb.active
sheet.title=sheetname
field=1
for field in range(1,len(fields)+1): # 写入表头
_=sheet.cell(row=1,column=field,value=str(fields[field-1]))
row1=1
col1=0
for row1 in range(2,len(data)+2): # 写入数据
for col1 in range(1,len(data[row1-2])+1):
_=sheet.cell(row=row1,column=col1,value=str(data[row1-2][col1-1]))
wb.save(filename=wbname)
print("保存成功")
以上是关于如何使用openpyxl读取和修改Excel中的公式,实现自动化计算?的主要内容,如果未能解决你的问题,请参考以下文章
Python3 读取和写入excel xlsx文件 使用openpyxl