python操作excel

xlwings模块

下载

1
pip3 install xlwings

基本使用

openpyxl模块

下载

1
pip3 install openpyxl

基本使用

写入excel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 加载写入的,模块
from openpyxl import Workbook
# 导入背景颜色模块
from openpyxl.styles import PatternFill

# 新建一个簿
wb = Workbook()
sheet = wb.active

ws1 = wb.create_sheet("Mysheet") #默认最后一个
ws2 = wb.create_sheet("Mysheet", 0) #第一个

# 设置sheet的名称
sheet.title = "demo"

# 设置背景颜色
fill = PatternFill("solid",fgColor="1874CD")

#这将返回A4处的单元格,如果尚不存在,则创建一个单元格。值可以直接分配
ws['A4']=4
# 也可以通过cell来进行写入,通过行数和列数来找到单元格所在的位置,通过value来赋值
ws.cell(row=4, column=2, value=10)

# 添加一行
ws.append([1,2,3,4])

# 循环添加内容
for i in range(10):
# 添加内容
sheet["A%d"%(i+1)].value = i+1
if i == 6:
# 设置背景颜色
sheet["A%d"%(i+1)].fill_type = "lightGrid"


# B9处写入平均值
sheet['B9'] = '=AVERAGE(B2:B8)'

# 保存内容
wb.save('666.xlsx')

读取excel

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 导入库
from openpyxl import load_workbook
# 打开xlsx文件
wb = load_workbook('666.xlsx')
# 查看excel表里面有哪些sheet页
print(wb.sheetnames)
# 读取指定sheet页
sheet = wb['demo']
# 获取最大行
print(sheet.max_row)
# 获取最大列
print(sheet.max_column)

# 获取行和列
# 因为按行,所以返回A1, B1, C1这样的顺序
for row in sheet.rows:
for cell in row:
print(cell.value)

# A1, A2, A3这样的顺序
for column in sheet.columns:
for cell in column:
print(cell.value)

设置单元格风格

1
2
3
先导入需要的类
from openpyxl.styles import Font, colors, Alignment
分别可指定字体相关,颜色,和对齐方式。

字体

1
2
3
bold_itatic_24_font = Font(name='等线', size=24, italic=True, color=colors.RED, bold=True)

sheet['A1'].font = bold_itatic_24_font

对齐方式

1
2
# 设置B1中的数据垂直居中和水平居中
sheet['B1'].alignment = Alignment(horizontal='center', vertical='center')

设置行高和列宽

1
2
3
4
# 第2行行高
sheet.row_dimensions[2].height = 40
# C列列宽
sheet.column_dimensions['C'].width = 30

合并和拆分单元格

1
2
3
4
5
6
# 合并单元格, 往左上角写入数据即可
sheet.merge_cells('B1:G1') # 合并一行中的几个单元格
sheet.merge_cells('A1:C3') # 合并一个矩形区域中的单元格

# 拆分单元格
sheet.unmerge_cells('A1:C3')