python_Excel操作

python_Excel操作

python操作Excel

基本操作

1
2
3
4
5
6
7
8
9
10
11
12
13
# 从open引入workbook 指excel文件
from openpyxl import Workbook,load_workbook

#如果没有文件创建文件
wb = Workbook()
#如果有文件读取文件
wb = load_workbook(r'.\test.xlsx')

# 返回激活的sheet
ws = wb.active
print(ws.title)
# 保存文件
wb.save(r'.\test.xlsx')

工作表操作

1
2
3
4
5
6
7
8
#创建工作表(表名,表顺序位置)
ws2 = wb.create_sheet('Sheet2',1)
#打印文件中所有的工作表名
print(wb.sheetnames)
# 移动表的顺序
wb.move_sheet(ws2,-1)
# 删除工作表
del wb["Sheet2"]

访问单元格

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
# 访问单元格,以二位坐标形式(第几行,第几列,内容)
cell = ws.cell(6,2,'coceef')
#打印单元格内容
print(cell.value)
# 打印坐标
print(cell.coordinate)
# 打印行
print(cell.row)
# 打印列
print(cell.column)
# 打印列的字母
print(cell.column_letter)

x = 1
for i in range(1,11):
for j in range(1,6):
ws.cell(i,j,x)
x= x+1

# 按列访问,返回从双层元组
print(ws['a:c'])
# 按行访问
print(ws[1:5])
# 自定义遍历
print(ws['a1:c4'])
# 遍历当行/列
print(ws[1][2])
# 遍历所有的行/列
print(ws.iter_rows())
print(ws.iter_cols())

操作单元格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 指定单元格 第一行到第二行,第二列到第六列
print(ws.iter_rows(1,2,2,6))

# 合并单元格(合并a1和b1)
ws.merge_cells('a1:b1')

# 取消合并
ws.unmerge_cells('a1:b1')
# 插入行/列
ws.insert_rows(1,2)
ws.insert_cols(1,2)
# 删除行/列
ws.delete_cols(1,2)
ws.delete_rows(1,2)

# 移动单元格(要移动的单元格,行移动,列移动)
ws.move_range("a1:c4",4,4)

使用公式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 从open引入workbook 指excel文件
from openpyxl import Workbook,load_workbook
from openpyxl.utils import FORMULAE
from openpyxl.formula.translate import Translator

wb = Workbook()
ws = wb.active
ws.append(['价格1','价格2','求和','平均'])
ws.append([12,33])
ws.append([12,44])

# 使用求和和平均值函数
ws['c2'] = '=SUM(A2:B2)'
ws['d2'] = '=AVERAGE(A2:B2)'

ws['c3'] = Translator(formula='=SUM(A2:B2)',origin='c2').translate_formula('c3')
ws['d3'] = Translator(formula='=AVERAGE(A2:B2)',origin='d2').translate_formula('d3')

wb.save('test.xlsx')

设置样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 从open引入workbook 指excel文件
from openpyxl import Workbook,load_workbook
from openpyxl.styles import Font

wb = Workbook()
ws = wb.active
ws["a1"] = 'fefefe'

f= Font(name='微软雅黑',size=15,color='0000FF',bold=True,italic=True,strike=False,underline='double')
ws['a1'].font = f

# 第二行的高
ws.row_dimensions[2].height = 30
# 第二列的宽度
ws.column_dimensions['B'].width = 30
wb.save('test.xlsx')