python操作Excel,openpyxl学习笔记

使用代码自动操作Excel,可以使用python中的openpyxl包,一般需要用到工作簿操作、工作表操作、单元格操作以及设置单元格的样式。

目录

python中openpyxl包可以用来操作Excel

工作簿操作

1.新建工作簿

2.保存工作簿

3.打开已经存在的工作簿

4.获取默认的工作表

5.根据名称获取工作表

6.根据顺序获取工作表

7.获取所有工作表

工作表操作

1.创建工作表

2.删除工作表

3.获取工作表名称

4.复制工作表

5.修改工作表名称

单元格操作

1.获取某个单元格的内容

2.获取某个范围的单元格

3.动态读取数据

4.写入和插入数据

其他操作

1.数字字母转换

2.移动与冻结单元格

3.修改单元格样式


python中openpyxl包可以用来操作Excel

导入openpyxl包

import openpyxl

工作簿操作

工作簿即Excel文档,例子中使用wb,即workbook

1.新建工作簿

a=openpyxl.Workbook("/Users/practice/1.xlsx")

新建的工作簿不能直接使用,需要保存后重新打开

2.保存工作簿

a.save("/Users/practice/1.xlsx")

3.打开已经存在的工作簿

wb = openpyxl.load_workbook("/Users/practice/1.xlsx")

4.获取默认的工作表

ws = wb.active

5.根据名称获取工作表

ws = wb['Sheet']

6.根据顺序获取工作表

ws = wb.worksheets[0]

7.获取所有工作表

ws = wb.worksheets

工作表操作

工作表即Excel文档中的sheet页,例子中使用ws,即worksheet

1.创建工作表

ws = wb.create_sheet('Sheet3')

2.删除工作表

wb.remove(wb['Sheet3'])

3.获取工作表名称

ws.title

4.复制工作表

ws = wb.copy_worksheet(wb["Sheet1"])

5.修改工作表名称

ws.title = 'fuZhi'

单元格操作

1.获取某个单元格的内容

# 方法1
a = ws.cell(row=1, column=1).value
# 方法2
b = ws['A1'].value

2.获取某个范围的单元格

某个单元格到某个单元格

ws.['A1:C10']

某几行

ws.['1:10']

某几列

ws.['A:C']

列表切片,第二行到最后一行

list(ws.values)[2:]

从某行开始某行结束,从某列开始某列结束,按行取值(需要使用两个循环才能得到每个单元格)

ws.iter_rows(min_row=1, max_row=10, min_col=1, max_col=10)

从某行开始某行结束,从某列开始某列结束,按列取值

ws.iter_cols(min_row=1, max_row=10, min_col=1, max_col=10)

工作表中的所有行

ws.rows

工作表中的所有列

ws.columns

3.动态读取数据

工作表的最大行数

ws.max_row

工作表的最大列数

ws.max_column

某个单元格的行或列

ws['A1'].row
ws['A1'].column

获取某一列的所有数据

c = []
for i in ws['A']:
    c.append(i.value)
print(c)

4.写入和插入数据

写入数据

ws['A1']="值"
ws.cell(1,1,'值')

插入列

# 从第2列开始(包含第2列),插入5列表格
ws.insert_cols(idx=2,amount=5)

插入行

# 从第2行开始(包含第二行),插入5行表格
ws.insert_rows(idx=2,amount=5)

删除列

# 从第2列开始,删除5列表格
ws.delete_cols(idx=2,amount=5)

删除行

# 从第2行开始,删除5行表格
ws.delete_rows(idx=2,amount=5)

其他操作

1.数字字母转换

数字转换字母

openpyxl.utils.get_column_letter(2)

字母转换数字

openpyxl.utils.column_index_from_string('D')

2.移动与冻结单元格

移动单元格

# A1到C3的单元格,向下移动5行,向右移动10列
ws.move_range("A1:C3",row=5,cols=10)

冻结单元格

# C3单元格上面的行和左边的列被冻结
ws.freeze.panes='C3'

3.修改单元格样式

字体样式font

# 导入Font模块
from openpyxl.styles import Font

a = ws['A1']
# name 字体名称 size 字号, bold 加粗, italic 斜体, strike 删除线, color 颜色
ft = Font(name='黑体', size=20, bold=True, italic=False, vertAlign=None, underline='none', strike=True, color='FF000000')
# 黑色"000000" 红色"FF0000" 绿色"00FF00" 蓝色"0000FF"
a.font = ft
wb.save("/Users/practice/1.xlsx")

调整列宽和行高

# 调整列宽
ws.column_dimensions['A'].width = 35
# 调整行高
ws.row_dimensions[1].height = 40

单元格底色填充

# 导入PatternFill模块
from openpyxl.styles import PatternFill
# 初始化填充对象
fill_new = PatternFill(
    fill_type='darkGray',
    start_color='ffff00'
)

# 设置B1单元格的填充为 fill_ 对象所定义的样式
ws['B1'].fill = fill_new

wb.save("/Users/practice/1.xlsx")

你可能感兴趣的:(openpyxl,python,pycharm)