python基于 openpyxl对 Excel操作

加载已经存在的表格(不存在则新建):

xlsx =  openpyxl.Workbook()        # 新建一个表格对象

xlsx = openpyxl.load_wordbook(self.ExclePath)

        if sheetName not in xlsx.sheetName:        # 查看 表格 sheetName 是否存在sheet表集合中

                xlsx.create_sheet(sheetName)        # 创建表格 sheetName

        获取 sheet表格对象:xlsx[sheetName]

        获取默认 sheel表格对象:sheet = xlsx.active

获取字符()前后内容:

prefix, suffix = title.split("(")[0], title.split(")")[1]

sheet.dimensions) # 获取表格尺寸大小,输出值为左上到右下的单元格名称

     

获取表格内容:

logger.debug (cell1.value, cell1.row, cell1.column, cell1.coordinate)

# 按行获取值,先行后列 :

for i in sheet.iter_rows(min_row=2, max_row=5, min_col=1, max_col=2):

        for j in i:

                print(j.value, end=" ")        # 用空格结尾

# 按列获取值,先列后行

for i in sheet.iter_cols(min_row=2, max_row=5, min_col=1, max_col=2):

        for j in i:

                print(j.value)

在表格中写入内容:

sheet.cell(row=int(Row) +1, column=int(Col) +1).value = context

sheet.cell(row=Row , column = Col, value = description)

在已有内容后面进行追加:

sheel.append(['序号', '项目', '数据'])

在指定单元格内容进行添加:

sheet['A1'] = '序号'

在这里插入图片描述

在表格中插入空行:

sheet.insert_rows(idx=5,amount=4)

在表格中插入空列:

sheet.insert_cols(idx=4,amount=2) 

.delete_rows()和.delete_cols():删除行和列

  • .delete_rows(idx=数字编号, amount=要删除的行数)
    .delete_cols(idx=数字编号, amount=要删除的列数)

.move_range():移动格子

  • .move_range(“数据区域”,rows=,cols=):正整数为向下或向右、负整数为向左或向上;

创建删除复制、修改表名

.create_sheet():创建新的sheet表格
workbook.create_sheet("我是一个新的sheet")
.remove():删除某个sheet表
.remove(“sheet名”):删除某个sheet表
.copy_worksheet():复制一个sheet表到另外一张excel表

复制 sheel表格:

.copy_worksheet():复制一个sheet表到另外一张excel表
from openpyxl import load_workbook
workbook = load_workbook(filename = "假期明细导入模板.xlsx")
sheet = workbook["假期明细导入模板"]
workbook.copy_worksheet(sheet)        # 拷贝表格 sheet

sheet.title = "我是修改后的sheet名"        # 修改表格名称
workbook.save(filename = "假期明细导入模板.xlsx")


sheet.freeze_panes:冻结窗口

sheet.auto_filter.ref:给表格添加“筛选器”

auto_filter.ref = sheet.dimension 给所有字段添加筛选器;

.auto_filter.ref = “A1”
给A1这个格子添加“筛选器”,就是给第一列添加“筛选器”;
from openpyxl import load_workbook
workbook = load_workbook(filename = "sheel模板1.xlsx")
sheet = workbook["假期明细导入模板"]
sheet.auto_filter.ref = sheet.dimensions
workbook.save(filename = "sheel模板1.xlsx")


调整字体和样式


(1)修改字体样式
 

Font(name=字体名称,size=字体大小,bold=是否加粗,italic=是否斜体,color=字体颜色)
workbook = load_workbook(filename = "sheel模板1.xlsx")
sheet = workbook["sheel模板"]
cell = sheet["A1"]
font = Font(name="微软雅黑",size=20,bold=True,italic=True,color="FF0000")
cell.font = font
workbook.save(filename = "sheel模板1.xlsx")


(2)获取表格中字体的样式
 

workbook = load_workbook(filename = "sheel模板1.xlsx")
sheet = workbook["sheel模板"]
cell = sheet["A1"]
font = cell.font
print(font.name, font.size, font.bold, font.italic, font.color)


(3)设置对齐样式

Alignment(horizontal=水平对齐模式,vertical=垂直对齐模式,text_rotation=旋转角度,wrap_text=是否自动换行)
水平对齐:‘distributed’,‘justify’,‘center’,‘leftfill’,‘centerContinuous’,‘right,‘general’;
垂直对齐:‘bottom’,‘distributed’,‘justify’,‘center’,‘top’;
workbook = load_workbook(filename = "sheel1.xlsx")
sheet = workbook["sheel模板"]
cell = sheet["A1"]
alignment = Alignment(horizontal="center",vertical="center",text_rotation=45,wrap_text=True)
cell.alignment = alignment
workbook.save(filename = "sheel模板1.xlsx")


(4)设置边框样式

Side(style=边线样式,color=边线颜色)
Border(left=左边线样式,right=右边线样式,top=上边线样式,bottom=下边线样式)
style参数的种类: 'double, ‘mediumDashDotDot’, ‘slantDashDot’,‘dashDotDot’,‘dotted’,‘hair’, 'mediumDashed, ‘dashed’, ‘dashDot’, ‘thin’,‘mediumDashDot’,‘medium’, 'thick’from openpyxl.styles import Side,Borderfrom
workbook = load_workbook(filename = "sheel模板1.xlsx")
sheet = workbook["sheel模板"]
cell = sheet["A1"]
side1 = Side(style="thin",color="FF0000")
side2 = Side(style="thick",color="FFFF0000")
border = Border(left=side1,right=side1,top=side2,bottom=side2)
cell.border = border
workbook.save(filename = "sheel模板1.xlsx")

(5)设置填充样式

PatternFill(fill_type=填充样式,fgColor=填充颜色)
GradientFill(stop=(渐变颜色1,渐变颜色2……))
workbook = load_workbook(filename = "sheel模板1.xlsx")
sheet = workbook["sheel模板"]
cell_b9 = sheet["A3"]
pattern_fill = PatternFill(fill_type="solid",fgColor="99ccff")
cell_b9.fill = pattern_fill
cell_b10 = sheet["A2"]
gradient_fill = GradientFill(stop=("FFFFFF","99ccff","000000"))
cell_b10.fill = gradient_fill
workbook.save(filename = "sheel模板1.xlsx")

(6)设置行高和列宽

.row_dimensions[行编号].height = 行高
.column_dimensions[列编号].width = 列宽
workbook = load_workbook(filename = "sheel模板1.xlsx")
sheet = workbook["sheel模板"]
# 设置第1行的高度
sheet.row_dimensions[1].height = 50
# 设置B列的宽度
sheet.column_dimensions["B"].width = 20
workbook.save(filename = "sheel模板1.xlsx")


 


(7)合并单元格

.merge_cells(待合并的格子编号)
.merge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)
workbook = load_workbook(filename = "sheel模板1.xlsx")
sheet = workbook["sheel模板"]
sheet.merge_cells("C1:D2")
sheet.merge_cells(start_row=7,start_column=1,end_row=8,end_column=3)
workbook.save(filename = "sheel模板1.xlsx")


(8)取消合并单元格

.unmerge_cells(待合并的格子编号)
.unmerge_cells(start_row=起始行号,start_column=起始列号,end_row=结束行号,end_column=结束列号)

(9)将表格内容进行保存,在写入操作后进行:

xlsx.save(self.ExclePath)

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值