python中Excel文件处理库-openpyxl的使用

Posted eliwang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中Excel文件处理库-openpyxl的使用相关的知识,希望对你有一定的参考价值。

一、认识Excel文件

  • Excel文件也被称做工作簿(workbook)。
  • 每个工作簿可以包含多个工作表(sheet)。用户当前查看的表或关闭Excel前最后查看的表,被称为活动表。
  • 每张表都是由行和列组成。列是以A开始的字母表示,行是以1开始的数字表示。
  • 由特定行和列所指定的方格被称为单元格(cell)。每个单元格都可以包含一个数字或文本,这些单元格就构成了这张表。

二、安装openpyxl库

pip install openpyxl

三、创建Excel文件

from openpyxl import Workbook

wb = Workbook() 
wb.save(\'test.xlsx\') 

四、读取Excel文件

from openpyxl import load_workbook

wb = load_workbook(\'test.xlsx\')

五、表操作

#创建表
sheet = wb.create_sheet(title,index) #title指定表名,可选,index可以适当指定表的位置,index从0开始

#获取所有表名
sheet_name_list = wb.sheetnames #返回所有表名的一个列表

#获取表
sheet = wb[\'表名\'] #根据表名获取
sheet = wb.active #获取活动表

#获取表名
sheet_name = sheet.title

#修改表名
sheet.title = \'新表名\'

#获取表大小
max_row = sheet.max_row #获取表最大行数,最小值1
max_column = sheet.max_column #获取表最大列数,最小值1
#如果表中没有数据,则最大行号和列号均为1

#删除表
wb.remove(sheet)
del wb[\'表名\']

六、单元格操作

#获取单元格
cell_B3 = sheet[\'B3\'] #根据坐标获取
cell_B3 = sheet.cell(row = 3,column = 2) #通过cell方法指定行号和列号来获取

#单元格赋值
sheet[\'B3\'] = \'B3\' #直接给单元格赋值
cell_B3.value = \'B3\' #通过单元格的value属性赋值
#使用公式
sheet[\'B3\'] = \'=AVERAGE(A1:B2)\' 
#使用公式赋值,读取文件的时候,需要设置load_workbook()的参数data_only=True才能读取到数值,,否则读取到的是字符串\'=AVERAGE(A1:B2)\'本身,其它公式如SUM、MAX等操作也是这种格式,里面的坐标指的是单元格所组成矩形区域的左上角和右下角

#获取单元格中的值及属性
value = sheet[\'B3\'].value #取值--\'B3\'
row = sheet[\'B3\'].row #取行号-- 3
column = sheet[\'B3\'].column #取列号 -- 2
column_letter = sheet[\'B3\'].column_letter # 取列名 -- \'B\'
coordinate = sheet[\'B3\'].coordinate #取坐标 --\'B3\'

#单元格合并和拆分
sheet.merge_cells(\'A1:C3\') #合并后只保留左上角单元格中的数据,其它数据舍弃
sheet.unmerge_cells(\'A1:C3\') #拆分后数据只会赋值给左上角这个单元格

#设置单元格样式
from openpyxl.styles import Font, colors, Alignment
#设置字体
sheet[\'A1\'].font = Font(name=\'bold_itatic_24\', size=24, italic=True, color=colors.BLUE, bold=True) 
#利用单元格font属性,设置字体为:蓝色24号斜体加粗,color参数用16进制数表示的rgb值,比如color=\'FF0000\'(红色)
#设置对其方式
sheet[\'A1\'].alignment = Alignment(horizontal=\'center\', vertical=\'center\') 
#利用alignment属性,设置单元格垂直居中,horizontal参数还可以"left","right"等,vertical参数还可以是"top","bottom"等

七、行和列操作

#列号和字母之间转换
from openpyxl.utils import get_column_letter, column_index_from_string
# 根据列的数字返回字母
print(get_column_letter(2)) # B
# 根据字母返回列的数字
print(column_index_from_string(\'D\')) # 4

#设置行高和列宽
# 第2行行高
sheet.row_dimensions[2].height = 40
# C列列宽
sheet.column_dimensions[\'C\'].width = 30

# 获取行和列数据
# 获取行数据
list(sheet.rows) #列表中,每行的单元格构成一个tuple
list(sheet.rows)[1]#第2行所有单元格构成的tuple
# 获取指定区间数据
sheet[\'B2\':\'D6\'] #tuple类型,内部还是由每行的单元格构成一个tuple
# 获取列数据
list(sheet.columns) #列表中,每列的单元格构成一个tuple

#添加行数据
#append方法添加数据,是从第一个空白行行首开始添加,比如第一行有数据,第二行空白,则数据从第二行开始添加
#添加单行数据
sheet.append([1,2,3,4,5])
#添加多行数据
sheet.append([[10,20,30,40,50],[11,22,33,44,55],[33,44,55,66,77]])

最后一定要记得wb.save(\'xxx.xlsx\')来保存所有操作,一定要记得!一定要记得!一定要记得!

以上是关于python中Excel文件处理库-openpyxl的使用的主要内容,如果未能解决你的问题,请参考以下文章

python如何对excel数据进行处理

两个高效处理 Excel 的 Python 开源库

Python 读写操作Excel —— 安装第三方库(xlrdxlwtxlutils)

Python处理excel文件

Python 自动化教程 : Excel自动化:使用pandas库

Python办公自动化之操作Excel(一)