使用代码自动操作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.修改单元格样式
导入openpyxl包
import openpyxl
工作簿即Excel文档,例子中使用wb,即workbook
a=openpyxl.Workbook("/Users/practice/1.xlsx")
新建的工作簿不能直接使用,需要保存后重新打开
a.save("/Users/practice/1.xlsx")
wb = openpyxl.load_workbook("/Users/practice/1.xlsx")
ws = wb.active
ws = wb['Sheet']
ws = wb.worksheets[0]
ws = wb.worksheets
工作表即Excel文档中的sheet页,例子中使用ws,即worksheet
ws = wb.create_sheet('Sheet3')
wb.remove(wb['Sheet3'])
ws.title
ws = wb.copy_worksheet(wb["Sheet1"])
ws.title = 'fuZhi'
# 方法1
a = ws.cell(row=1, column=1).value
# 方法2
b = ws['A1'].value
某个单元格到某个单元格
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
工作表的最大行数
ws.max_row
工作表的最大列数
ws.max_column
某个单元格的行或列
ws['A1'].row
ws['A1'].column
获取某一列的所有数据
c = []
for i in ws['A']:
c.append(i.value)
print(c)
写入数据
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)
数字转换字母
openpyxl.utils.get_column_letter(2)
字母转换数字
openpyxl.utils.column_index_from_string('D')
移动单元格
# A1到C3的单元格,向下移动5行,向右移动10列
ws.move_range("A1:C3",row=5,cols=10)
冻结单元格
# C3单元格上面的行和左边的列被冻结
ws.freeze.panes='C3'
字体样式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")