openpyxl

本文介绍了使用Python库openpyxl进行Excel表格的基本操作及格式设置的方法,包括单元格赋值、行列插入与删除、设置字体和边框、条件格式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 表格的基本操作

from openpyxl import Workbook
import pandas as pd
from openpyxl.utils.dataframe import dataframe_to_rows

wb = Workbook()
ws = wb.active

ws['A1'] = "赋值"  # 给A1赋值
ws.cell(row=2, column=1).value = "赋值"  # 给第2行第1列赋值
ws.append([1, 2, 3, 4, 5])  # 在末尾增加一行

# 将表格按行导入到新表
df = pd.read_excel(r'盛丰WOW12月13日日报.xlsx')
for r in dataframe_to_rows(df, index=True, header=True):
    ws.append(r)

# 新建sheet, 1表示新建在第一个sheet后面
ws2 = wb.create_sheet('第二个sheet', 1)
# 赋值ws2表
ws3 = wb.copy_worksheet(ws2)
ws3.title = '第三个sheet'
ws3.sheet_properties.tabColor = 'FFEE0000'  # 更改sheet的标签颜色
wb.remove(ws3)  # 删除ws3

# 表里面所有的sheet名字
sheet_name_list = wb.sheetnames

# 选取单元格
ws[10]  # 选中第10行
ws[5:10]  # 选中第5到10行
ws['C']  # 选中第C列
ws['A:C']  # 选中第A到C列
ws['A1':'C5']  # 选取A1到C5

# # 插入行或列
ws.insert_cols(3, 2)  # 在第3列插入2列
ws.insert_rows(3, 2)  # 在第3行插入2行
ws.delete_cols(3, 2)  # 在第3列删除2列
ws.delete_cols(3, 2)  # 在第3行删除2行

# # 设置列宽和行高
ws.column_dimensions['A'].width = 20
ws.row_dimensions[1].height = 40

# # 隐藏行和列
ws.row_dimensions.group(7, 10, hidden=True)  # 隐藏7到10行
ws.column_dimensions.group('D', 'P', hidden=True)   # 隐藏D到P列

ws.merged_cells('D2:E2')  # D2到E2合并单元格
ws.unmerge_cells('D2:E2')  # D2到E2解除合并单元格
# 合并与解除单元格 选中方式 左上角单元格 top_left_cell=ws['D2']

2 设置字体

from openpyxl.styles import Font

font = Font(name='微软雅黑',  # 字体
            size=12,  # 字体大小
            bold=False,  # 是否加粗
            italic=False,  # 是否斜体
            vertAlign=None,  # 垂直对齐 superscript向上对齐 baseline居中对齐 subscript向下对齐
            underline='none',  # 下划线 double双下划线 single单下划线 doubleAccounting覆盖双下划线 singleAccounting覆盖单下划线
            strike=False,  # 删除线
            color='FF0F0F0F'  # 字体颜色 ARGB
            )
# 设置字体只能一个单元格一个单元格设置
a1 = ws['B4']
a1.font = font

在这里插入图片描述

3 单元格填充

from openpyxl.styles import PatternFill

patternfill = PatternFill(fill_type=None,  # 填充图案样式
                          start_color='FF0F0F0F',  # 前景色填充
                          end_color='FF0F0F0F'  # 背景色填充
                          )
a1 = ws['A1']
a1.fill = patternfill

在这里插入图片描述

4 单元格边框

from openpyxl.styles import Border, Side

border = Border(left=Side(border_style='thick', color='FF000000'),
                right=Side(border_style='thick', color='FF000000'),
                top=Side(border_style='thick', color='FF000000'),
                bottom=Side(border_style='thick', color='FF000000'),
                diagonal=Side(border_style='thick', color='FF000000'),
                diagonalUp=True,
                diagonalDown=True  # 对角线 diagonalDown diagonalUp
                )
# border_style样式:thin细线 dashDot点画线 double双线 mediumDashed中等虚线 dashed短线 thick粗线 dotted虚点线
#                   mediumDashDot中等点划线 hair虚线 slantDashDot斜点画线
a1 = ws['A1']
a1.border = border

在这里插入图片描述
在这里插入图片描述

5 设置对齐方式

from openpyxl.styles import Alignment

alignment = Alignment(horizontal='general',  # 水平对齐方式
                      vertical='bottom',  # 垂直对齐
                      text_rotation=0,  # 文本旋转 30 60
                      wrap_text=False,  # 是否换行
                      shrink_to_fit=False,  # 是否缩小字体适应列宽
                      indent=False,  # 缩进
                      )
# horizontal:justify两端对齐 fill填满对齐 left左对齐 general一般对齐 right右对齐 center居中对齐 distributed分散对齐
# vertical:bottom靠下 justify两端对齐 center居中 distributed分散对齐 top靠上

在这里插入图片描述

6 设置EXECL数字

a1.number_format = '格式'

在这里插入图片描述

7 条件格式

# 突出显示单元格
from openpyxl.formatting.rule import CellIsRule

# operator:notEqual不等于 greaterThanOrEqual大于或等于 lessThanOrEqual小于或等于 notContains不包含
# notBetween不介于 lessThan小于 beginsWith以XX开头 containsText包含XX equal等于 between endsWith greaterThan
rule = CellIsRule(operator='lessThan', formula=['C$1'], fill=patternfill)
ws.conditional_formatting.add('A1:B10', rule)
# 数据条
from openpyxl.formatting.rule import DataBarRule

# start_type:percentile百分点值 formula公式 percent百分比 max最大值 min最小值 num数字
rule2 = DataBarRule(start_type='percentile', start_value=10, end_type='percentile', end_value=100, color='FF638EC6',
                    showValue='None')
ws.conditional_formatting.add('A1:B10', rule2)
# 色阶
from openpyxl.formatting.rule import CellIsRule

rule3 = CellIsRule(start_type='percentile', start_value=10, start_color='FFAA0000',
                   mid_type='percentile', mid_value=50, mid_color='FFAA00AA',
                   end_type='percentile', end_value=90, end_color='FF00AA00')
ws.conditional_formatting.add('A1:B10', rule3)
# 图标集
from openpyxl.formatting.rule import IconSetRule

rule4 = IconSetRule('3Flags', 'percent', [0, 30, 50], showValue=True, reverse=False)
ws.conditional_formatting.add('A1:B10', rule4)

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值