PYTHON - openpyxl (三)

1.1 移动数据

sheet.move_range(cell_range, rows=0, cols=0, translate=False):
  • cell_range 是一个区域
  • rows 表示相对移动的行数(正数向下,负数向上)
  • cols 表示相对移动的列数(正数向右,负数向左)
  • translate 对于有公式的,False表示不调整,True 表示调整。
wb: Workbook = load_workbook("d:/test.xlsx")
sh: Worksheet = wb.active
sh.move_range("a1:c3", 5, 5, True)
wb.save("d:/1.xlsx")

1.2 冻结空格

sheet.freeze_panes = "c2"

表示冻结C2上面的行,C2左边的列。

注意:'A1' 不符合规定,因为它上面没有行,左面没有列了

wb: Workbook = load_workbook("d:/test.xlsx")
sh: Worksheet = wb.active
sh.freeze_panes = "c2"
wb.save("d:/1.xlsx")

如果要取消冻结,直接赋值为None即可。

sheet.freeze_panes = None

1.3 合并单元格

1.3.1 合并

merge_cells(range_string=None, start_row=None, start_column=None, end_row=None, end_column=None):
  • range_string 指定范围,如:'a1:g20'
  • start_row 开始行
  • start_column 开始列
  • end_row 结束行
  • end_column 结束列
wb: Workbook = load_workbook("d:/test.xlsx")
sh: Worksheet = wb.active
sh.merge_cells('a1:b5')
wb.save("d:/1.xlsx")
wb: Workbook = load_workbook("d:/test.xlsx")
sh: Worksheet = wb.active
sh.merge_cells(start_row=1, start_column=1, end_row=3, end_column= 3)
wb.save("d:/1.xlsx")

1.3.2 取消合并

与合并方法的参数一样:

unmerge_cells(range_string=None, start_row=None, start_column=None, end_row=None, end_column=None):

1.4 写入公式

sheet["c1"] = '=sum(a1:b1)'
sh.cell(2,3).value = '=sum(a2:b2)'

就是向单元格写公式,写的方法和其它数据一样,只不是值是公式。

注意:公式前面有等号。

wb: Workbook = load_workbook("d:/test.xlsx")
sh: Worksheet = wb.active
sh["c1"] = '=sum(a1:b1)'
sh.cell(2,3).value = '=sum(a2:b2)'
wb.save("d:/1.xlsx")

注意:在读取的时候,如果是公式则读取到的不是公式计算后的值。

需要把data_only设置为True,这时读取的才是值。

wb: Workbook = load_workbook("d:/test.xlsx",data_only=True)

1.5 分级显示

对某些行或列分成一组,或称为组合。

1.5.1 按列分组

sheet.column_dimensions.group('开始列','结束列', 级别, hidden=False)
  • 级别一般是1-7
  • hidden表示隐藏这一组
wb: Workbook = load_workbook("d:/test.xlsx", data_only=True)
sh: Worksheet = wb.active
sh.column_dimensions.group('a', 'f', 1, hidden=True)
wb.save("1.xlsx")

1.5.2 按行分组

sheet.row_dimensions.group(开始行,结束行,级别,hidden=False)

参数同按列分组

wb: Workbook = load_workbook("d:/test.xlsx", data_only=True)
sh: Worksheet = wb.active
sh.row_dimensions.group(1, 100, 1, hidden=True)
wb.save("1.xlsx")

1.6 批注

批注是一个对象,创建批注对象之后,可以添加到单元格。

类型:openpyxl.comments.Comment

# 参数
  def __init__(self, text, author, height=79, width=144):
  • 参数:批注内容,作者,高,宽
  • 属性:content (批注内容),author, height, width

创建对象之后赋值给单元格的comment 属性。

# 批注类
from openpyxl.comments import Comment

wb: Workbook = load_workbook("d:/test.xlsx", data_only=True)
sh: Worksheet = wb.active
sh.cell(1,1).comment = Comment('批注内容','作者')
wb.save("1.xlsx")

posted @ 2022-12-20 00:09  叁只小羊  阅读(342)  评论(0)    收藏  举报