Python用openpyxl操作Excel问题集

发布时间 2024-01-11 20:55:08作者: 培轩

openpyxl是一款轻量级的excel操作库,适合用于一些基本的操作构建,如果涉及批量处理数据,如求一整列的最大值最小值等,无疑是pandas更好;对于一些单元格背景填充、单元格合并、批量创建sheet等的操作,无疑是openpyxl好,因为pandas无法方便地完成此类操作。python库之间的兼容性大,pandas导出到excel时,如果没有安装openpyxl,将无法完成该操作。可以说,学好openpyxl库,能为以后学pandas数据分析打好良好的基础。

openpyxl 是用于读取和写入 Excel 2010 xlsx / xlsm / xltx / xltm 文件的 Python 库。openpyxl不能操作Excel2007之前的格式(扩展名xls),如果需要访问早期的Excel格式文件推荐使用xlrd和xlwt。

一、Python用openpyxl读取单元格中的公式或者读取公式计算的值

Python使用openpyxl读取带公式的单元格时,可以选择读取公式还是读取公式计算值。其关键在于打开文件时给出data_only参数,当该参数的值设为False时,读取的是单元格中的公式;当该参数的值设为True时,读取的是单元格中的公式计算值。当省略该参数时,默认为False。

如下两种打开文件方式,都读取的是公式:
wb = openpyxl.load_workbook(filename)
wb = openpyxl.load_workbook(filename, data_only=False)

如下打开文件方式,读取的是公式计算值:
wb = openpyxl.load_workbook(filename, data_only=True)
注意:如果该工作簿是用openpyxl创建的,并且在创建后未曾用Microsoft Excel打开过,那么想要读取公式计算结果是无法得到正确结果的,只会读出None。

二、openpyxl操作单元格

1、获取单元格的值(两种方式)

① sheet['Excel单元格名字'].value   

这种是大家使用Excel单元格行列定位单元格熟悉的方式,例如:value=sheet['F2'].value

② sheet.cell(row,column).value

获取第row行,第column列的单元格。该函数的参数row和column都是从1开始计算的。需要记得:先行后列,不记得的话也可以以传参的形式输入,如:sheet.cell(row=4,column=2).value。

2、写入/更改单元格的值(两种方式)

① 当sheet.cell(row, column, value=None)函数传入value参数时,该单元格的值会被改成value的值,从而更改单元格的值。

sheet.cell(4,2,value=2222) # 重新赋值,也可以赋以变量 value = sheet.cell(4,2,value=2222)

 ② 直接通过对 sheet.cell(row, column).value 进行赋值。

sheet.cell(4,2).value = 2222

两种方法都可以更改单元格的值,程序员一般用方法二比较多,具体要看个人习惯。如果需要获取多个单元格的值,可以用 for循环对 row和 column参数进行赋值获得。

参考文献:

自动化办公-excel篇 openpyxl的使用详解:https://blog.csdn.net/m0_71559726/article/details/130313115

Python:openpyxl这一篇就够了:https://blog.csdn.net/Xuange_Aha/article/details/128576423