如何使用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中的公式,实现自动化计算?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用openpyxl删除excel中的第一行

Python使用openpyxl库修改和合并Excel文档

Python3 读取和写入excel xlsx文件 使用openpyxl

如何使用 Python 读取包含扩展字体的 Excel 文件? (openpyxl 错误:最大值为 14)

python的openpyxl库怎么读取一行或者一列

openpyxl模块(excel操作)