excle的基本操作

python操作excle的包是openpyxl,使用如下命令安装:
pip install openpyxl

获取excle文件:

1
wb = openpyxl.load_workbook('123.xlsx')

如果是创建新的excle,则可以:

1
wb = openpyxl.Workbook()

excle的数据都是存储在表中,即sheet1,sheet2这些,如下图所示:

一个excle可以有多个sheet,需要获取到对应sheet再操作,有多种办法,如下:

1
2
3
sheet = wb.worksheets[0]
或者
sheet = wb['sheet1']

当我们获取到sheet1以后,就可以开始操作数据,例如想要获取A1的文本:

1
sheet['A1'].value

如果需要某个表格的所有数据,假设我有如下表格:

使用for循环遍历:

1
2
3
4
5
6
7
import openpyxl

wb=openpyxl.load_workbook('123.xlsx')
sheet=wb.worksheets[0]
for row in sheet.iter_rows():
for cell in row:
print(cell.coordinate, cell.value)

openpyxl获取行数的方法为sheet.iter_rows(),获取列数可以直接通过当前行获取也就是for cell in row,
以上代码是逐行遍历,结果如下:

那么怎么修改数据呢?我们先来看看代码:

1
2
3
sheet['A1'].value='1111111'
sheet.cell(1,1).value='1111111'
sheet.cell(1,1,'111111')

以上都是修改A1的值,修改完以后还需要保存:

1
wb.save('123.xlsx')

excle的样式修改

在平常工作中,excle不单是写数据,还有样式的修改。

字体样式

openpyxl中有专门的字体样式,可通过以下方法导入:

1
2
3
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment
font = Font(name='微软雅黑', size=10, bold=False, italic=False, vertAlign=None,
underline='none', strike=False, color='FF000000')

先引入excle的样式,然后通过构造函数,创建一个样式,比如以上就是创建了一个字体为雅黑,字体大小为10,不加粗,没有斜体,没有下划线,颜色为黑色。
创建好样式后,还要应用到单元格中,如下:

1
2
3
sheet['A1'].font=font

sheet.cell(1,1).font=font

填充样式

为单元格填充背景色,图案等。

1
2
3
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment
fill = PatternFill(fill_type='darkUp',start_color='FFFF00',end_color='FF0000')
sheet.cell(1,1).fill=fill

以上就是填充图案为darkUp,开始颜色为黄色,结束颜色为红色,效果如下:

如果要完全填充,可以使用type为solid,如下:

1
fill = PatternFill(fill_type='solid', fgColor='FFFF00')

type有多种可选,可参考以下:
{‘gray0625’, ‘lightHorizontal’, ‘darkVertical’, ‘darkGray’, ‘darkDown’, ‘solid’, ‘lightTrellis’, ‘darkHorizontal’, ‘gray125’, ‘lightGray’, ‘lightDown’, ‘lightUp’, ‘mediumGray’, ‘darkUp’, ‘darkGrid’, ‘darkTrellis’, ‘lightVertical’, ‘lightGrid’}

边框样式

1
2
3
4
5
border = Border(left=Side(border_style='dashDotDot',color='9932CC'),
right=Side(border_style='dashDotDot',color='121212'),
top=Side(border_style='dashDotDot',color='8B0A50'),
bottom=Side(border_style='dashDotDot',color='B3EE3A'),)
sheet.cell(5,4).border=border

上面设置了上下左右四个边框的颜色以及样式,这里设置为虚线样式,颜色随机抽取了四个比较深的颜色,实现的效果如下

官方给出的样式有如下选项:
‘dashDot’,‘dashDotDot’,‘dashed’,‘dotted’,‘double’,‘hair’,‘medium’,‘mediumDashDot’,‘mediumDashDotDot’,‘mediumDashed’,‘slantDashDot’,‘thick’,‘thin’

特别的medium即为实线

对齐样式

1
2
3
4
5
6
alignment = Alignment(horizontal='center',
vertical='center',
text_rotation=0,
indent=0)

sheet.cell(2,4).alignment=alignment

以上创建了一个对齐样式为水平居中,垂直居中,文字旋转角度为0(最多可以旋转180°),缩进为0。