Python中利用openpyxl对Excel的各种相关详细操作(二十一种常用操作<代码+示例>)

10 篇文章 3 订阅
2 篇文章 0 订阅

目录

一、对工作簿中对应工作表的相关操作

1、创建工作簿、工作表并指定活动工作表

2、加载创建的工作簿、修改工作表名字

3、复制活动工作表

4、删除指定工作表

二、对工作表中行、列、单元格的相关操作

1、 指定位置插入行 / 指定行数

2、删除指定行 / 指定多行

3、指定位置插入指定列 / 指定多列

4、删除指定列 / 指定多列

5、访问单个单元格 / 整行 / 整列 的内容

6、以切片方式访问指定范围内的单元格

7、行切片 / 列切片 的使用

8、使用公式对指定范围内的内容进行计算

9、移动目标区域内单元格中的内容

10、合并 / 拆分单元格

11、在单元格中插入图片并修改图片大小

12、修改指定行的高度 / 指定列的宽度

13、批量设置单元格的对齐方式

14、批量修改单元格的边框线及颜色

15、设置单元格中的字体

16、对单元格进行颜色填充

17、对工作表中的单元格进行折叠操作

一、对工作簿中对应工作表的相关操作

1、创建工作簿、工作表并指定活动工作表

"""
-*- coding:utf-8 -*-
Group       : Sirius
Author      : xiao66guo
Time        : 2021-06-15 16:38
Software    : PyCharm
ProjectName : superTable
FileName    : excelPractice.py
E-mail      : xxxxx@xxx.com
"""

from openpyxl import Workbook, load_workbook

'''创建工作簿'''
xgBook = Workbook("chartCollections.xlsx")
'''
创建工作表
:param title: 新工作表的名字
:type title: 字符型
:param index: 在第几个索引位置处插入新的工作表
:type index: 数值型
'''
'''方法一:在指定索引位置创建工作表'''
xgBook.create_sheet('two', 1)
'''方法二:在工作簿最后创建工作(default)'''
xgBook.create_sheet('two')

'''指定活动工作表<及将要操作的表>'''
xg = xgBook.active
'''保存'''
xgBook.save('chartCollections.xlsx')

结果:

2、加载创建的工作簿、修改工作表名字

'''加载创建的工作表'''
xgBook = load_workbook("chartCollections.xlsx")
'''指定活动工作表<一般来说,当我们打开一个Excel表格,会看到上次我们保存的表。
这个表是活动状态的。我们可以使用Workbook类中的active属性来读取这张表>'''
xgBook.active = xgBook['two']
'''获取活动工作表的名字'''
xgSheetName = xgBook.active.title
print(xgSheetName)
'''修改活动工作表的名字<title属性,可以获取或修改表名。xgBook是一个Worksheet对象,也可以使用Workbook类中的get_sheet_by_name("sheet_name")方法读取这张表。也可以使用xgBook[表名]的方式,但是旧版本的openpyxl可能会不知这种访问方式。使用title给这张表重命名>'''
xgBook.active.title = 'Three'

'''保存'''
xgBook.save('chartCollections.xlsx')

结果:

3、复制活动工作表

''' 复制活动工作表'''
xgSheet = xgBook.active
newSheet = xgBook.copy_worksheet(xgSheet)
print(newSheet.title)
'''指定新表的工作名字'''
newSheet.title = 'NewThree'

'''保存'''
xgBook.save('chartCollections.xlsx')

复制结果:

4、删除指定工作表

'''删除工作表'''
# 方法一
xg = xgBook['Three']
xgBook.remove(xg)

# 方法二
del xgBook['NewThree']
'''查看工作簿中所有工作表名字'''
print(xgBook.sheetnames)

'''保存'''
xgBook.save('chartCollections.xlsx')

二、对工作表中行、列、单元格的相关操作

要进行操作的工作表

1、 指定位置插入行 / 指定行数

'''在第一行之前插入一行'''
xg.insert_rows(1)
'''在第三行之前插入两行'''
xg.insert_rows(3, 2)

'''保存'''
xgBook.save('chartCollections.xlsx')

结果:

2、删除指定行 / 指定多行

'''删除第一行'''
xg.delete_rows(1)
'''删除第二行及后面一行,共两行'''
xg.delete_rows(2, 2)

'''保存'''
xgBook.save('chartCollections.xlsx')

结果:

3、指定位置插入指定列 / 指定多列

'''在第三列前插入一列'''
xg.insert_cols(3)
'''在第二列前插入两列'''
xg.insert_cols(2, 2)

'''保存'''
xgBook.save('chartCollections.xlsx')

结果:

4、删除指定列 / 指定多列

'''删除第五列'''
xg.delete_cols(5)
'''删除第二列及后面一列,共2列'''
xg.delete_cols(2, 2)

'''保存'''
xgBook.save('chartCollections.xlsx')

结果:

5、访问单个单元格 / 整行 / 整列 的内容

'''访问单个单元格中的值'''
print('[A2] = %s' % xg['A2'].value)
print('[A][1] = %s' % xg['A'][1].value)
print('[A][0] = %s' % xg['A'][0].value)

'''访问整行内容'''
print(xg[1])    # 以元组的形式返回第一行中的所有内容
content = xg[1]
print("xg[1]返回的数据类型为:%s,\n返回的内容为:%s" % (type(content), xg[1]))

print('-'*100)

'''访问整列内容'''
print(xg["A"])    # 以元组的形式返回 'A' 列的所有内容
content = xg["A"]
print("xg['A']返回的数据类型为:%s, \n返回的内容为:%s" % (type(content), xg["A"]))

'''保存'''
xgBook.save('chartCollections.xlsx')

访问单个单元格的结果:

访问整行和整列的结果:

6、以切片方式访问指定范围内的单元格

访问图中 A1:B3 的值:

'''以切片的方式来访问某一个范围内的单元格'''
# 方式一:
content = xg["A1:B3"]   # 访问 'A1:B3' 范围内的单元格
print(content)

# 方式二:
content = xg["A1":"B3"]
print(content)

# 取出 "A1:B3" 范围内的指定单元格
cellValue = content[0][1].value     
print(cellValue)

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

7、行切片 / 列切片 的使用

'''使用行切片'''
content = xg[1:2]        # 访问第一行和第二行所有内容
print(content)

'''使用列切片'''
content = xg["A:B"]      # 访问 A 和 B 两列的所有内容
print(content)

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

8、使用公式对指定范围内的内容进行计算

'''使用公式<在程序中不能看到函数计算后的值>'''
xg["G2"] = "=SUM(C2:F2)"
print(xg['G2'].value)

result = xg['G2'].value
print("G2 单元格的值为:%s" % result)

from openpyxl.utils import FORMULAE
result1 = 'SUM' in FORMULAE
print(result1)
'''查看所有能用的函数'''
print(FORMULAE)

'''保存'''
xgBook.save('chartCollections.xlsx')

结果:

9、移动目标区域内单元格中的内容

'''移动单元格'''
''' move_range() 将目标单元格区域内的内容进行移动,
rows为正数时,单元格向下移动正数行;
    为负数时,单元格向上移动 |负数| 行;
cols为正数时,单元格向右移动正数列,
    为负数时,单元格向左移动 |负数| 行。
如果目标单元格有值,会被覆盖'''
xg.move_range("A2:G2", rows=1, cols=2)

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

接下来,将刚才A2:G2单元格,移动到原来的位置:

xg.move_range("C3:I3", rows=-1, cols=-2)

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

10、合并 / 拆分单元格

10.1 合并单行 / 单列单元格(将第三行的单元格进行合并)

'''合并单元格
   合并后单元格中的内容会被合并前第一个单元格的内容填充
'''
xg.merge_cells("A3:F3")       
result = xg["A3"].value         # 返回第一个单元格的值
print('A3的值为:', result)
result = xg["B3"].value         # 返回 None
print('B3的值为:', result)

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

10.2 合并多行和多列单元格

合并上图中红色框中的内容:

xg.merge_cells(start_row = 5, start_column = 1, end_row = 8, end_column = 3)

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

10.3  拆分单元格

接下来,就将刚合并的A5:C8的单元格进行拆分

xg.unmerge_cells(start_row = 5, start_column = 1, end_row = 8, end_column = 3)

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

11、在单元格中插入图片并修改图片大小

接下来,用代码向合并的单元格中插入下面的图片

'''插入图片'''
from openpyxl.drawing.image import Image

img = Image('dianzan.gif')
'''修改图片大小'''
newSize = (80, 80)
img.height, img.width = newSize

xg.add_image(img, "A5")

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

12、修改指定行的高度 / 指定列的宽度

'''修改行高和列宽'''
row_height = 40
column_width = 35

xg.column_dimensions['D'].width = column_width
xg.row_dimensions[2].height = row_height

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

13、批量设置单元格的对齐方式

设置D列所有内容 居中 对齐

'''单元格对齐方式
horizontal : 代表水平方向,可以左对齐left,还有居中center和右对齐right,分散对齐distributed,跨列居中centerContinuous,两端对齐justify,填充fill,常规general
vertical : 代表垂直方向,可以居中center,还可以靠上top,靠下bottom,两端对齐justify,分散对齐distributed
wrap_text / wrapText : 自动换行

horizontal_alignments = (
    "general", "left", "center", "right", "fill", "justify", "centerContinuous",
    "distributed", )
vertical_aligments = (
    "top", "center", "bottom", "justify", "distributed",
)
'''
from openpyxl.styles import Alignment
align = Alignment(horizontal='center', vertical='center', wrapText=True)
print(xg["D5"])
for cell_content in xg['D2:D23']:
    cell_content[0].alignment = align

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

14、批量修改单元格的边框线及颜色

14.1 修改单个单元格的边框线及颜色(设置 D2单元格的边框线及颜色)

'''修改单元格边框线'''
from openpyxl.styles import Border, Side

''''
border_style 的样式有:
dashDot','dashDotDot', 'dashed','dotted', 'double','hair', 'medium', 
'mediumDashDot', 'mediumDashDotDot','mediumDashed', 'slantDashDot', 
'thick', 'thin'
'''

'''double 样式,红颜色'''
thin = Side(border_style='thick', color="FF0000")
'''边框的位置'''
border = Border(left=thin, right=thin, top=thin, bottom=thin)
xg['D2'].border = border

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

14.2 批量修改单元格的边框线和颜色

        修改 A10:E12 单元格的边框和颜色

'''批量修改单元格的边框线和颜色'''
'''A10:E12区域单元格设置边框'''
for row in xg['A10:E12']:
    for cell in row:
        cell.border = border

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

15、设置单元格中的字体

修改上图中 A5 单元格中的字体、大小、加粗、倾斜、颜色

'''设置单元格中的字体'''
from openpyxl.styles import Font

'''
字体的格式
'name', 'charset', 'family', 'b', 'i', 'strike',
 'outline','shadow', 'condense', 'color', 'extend', 
 'sz', 'u', 'vertAlign','scheme'
 
字体大小,加粗,字体名称,字体名字
字体名称、字体大小、字体颜色、加粗、斜体、纵向对齐方式
(有三种:baseline,superscript, subscript)、
下划线、删除线,字体颜色可以用RGB 或 aRGB
'''
font = Font(name='微软雅黑', size=20, bold=True, italic=True, color="FF0000")
xg['A5'].font = font

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

16、对单元格进行颜色填充

A3 单元格进行颜色填充

'''单元格颜色填充'''
from openpyxl.styles import PatternFill

'''
fill_type 的样式为 None 或 solid

fill_type类型有:'none'、'solid'、'darkDown'、'darkGray'、'darkGrid'、
'darkHorizontal'、'darkTrellis'、'darkUp'、'darkVertical'、'gray0625'、
'gray125'、'lightDown'、'lightGray'、'lightGrid'、'lightHorizontal'、
'lightTrellis'、'lightUp'、'lightVertical'、'mediumGray' 

start_color : 代表的是前景色
end_color : 代表的是背景色
在平时的单元格颜色填充时,使用start_color 和 solid 进行填充即可
'''
# fill = PatternFill(fill_type=None, start_color='FFFFFF', end_color='000000')

fill = PatternFill(patternType='solid', start_color='9932CC')
xg['A3'].fill = fill

'''保存'''
xgBook.save('chartCollections.xlsx')

执行结果:

17、对工作表中的单元格进行折叠操作

对 A ~ C 三列和 10 ~ 20 行的内容进行折叠处理

'''折叠操作'''

'''折叠 A-C 列'''
xg.column_dimensions.group("A", "C", hidden=True)
'''折叠11到20行'''
xg.row_dimensions.group(10, 20, hidden=True)

'''保存'''
xgBook.save('chartCollections.xlsx')

执行效果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值