Python用openpyxl操作Excel问题集
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