三、Openpyx工作表对象的属性和方法-1

本文介绍了OpenPyXL库中工作表对象的基础属性和方法,包括设置工作表名称、颜色、隐藏方式,以及如何写入数据、调整行高列宽、插入删除行列、移动单元格区域、合并单元格、冻结窗口、组合(折叠)等操作。通过实例演示了如何使用这些功能,特别是对'veryHidden'的深度隐藏特性进行了详细解释。

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

工作表对象可以设置的属性和方法比较多,分成几次讲,本章先讲一下比较基础的。


开始!

常用的工作表属性

1. 设置工作表名称

worksheet.title = '工作表名'

2. 设置工作表标签颜色

worksheet.sheet_properties = '颜色代码‘

3. 隐藏或者显示工作表

worksheet.sheet_state = 参数

可选参数有:

  • ‘visible’:显示
  • ‘hidden’:隐藏
  • ‘veryHidden’:深度隐藏

拓展

1. 什么叫 veryHidden

veryHidden我称它为深度隐藏,正常来说我们隐藏一个工作表后,鼠标右击工作表会弹出一个菜单,里面会有一个“取消隐藏”的选项,你可以选中想要取消隐藏的工作表然后点确定,该工作表就会重新出现。但当你设置成veryHidden,该工作表就不会出现在"取消隐藏"的框里。

2. 图文说明
  1. 在一个工作簿里新建三个工作表,如图1.
    图1

  2. 把第二个表隐藏掉

  3. 打开VBA代码编辑器,点第三个表,然后设置如图2的选项,就可以把该表深度隐藏了。
    图2

  4. 鼠标右击剩下的工作表,选中“取消隐藏”选项,在弹出的对话框里,只能看到普通隐藏的那个工作表,看不到深度隐藏的工作表,如图3。
    图3

  5. 结论: 如果想要让别人不是那么简单的就能看到自己隐藏的工作表,就使用veryHidden,毕竟不是每个人都会去打开VBA编辑器修改属性。


往单元格区域里写入数据

1. 一个一个单元格写入数据(两种写法)

# 目标:把python字符串写入A1单元格

import openpyxl

wb = openpyxl.Workbook()

ws = wb.active

# 第一种写法
ws['A1'].value = 'python'  

# 第二种写法
ws.cell(row=1,column=1,value='python') # row , column 都可以省略不写,如下面一行
ws.cell(1,1).value = 'python'
2. 一行一行写入数据
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active

ws.append(['存货名称','单位','数量'])  # 写入一行数据

对于已有数据的工作表可以查看的属性

属性含义
worksheet.max_row数据区域的最大行号
worksheet.min_row数据区域的最小行号
worksheet.max_column数据区域的最大列号
worksheet.min_column数据区域的最小列号

列号返回的是数字,不是字母

实例
import openpyxl

wb = openpyxl.Workbook()

ws = wb.active

ws.append(['存货名称','单位','重量'])
ws.append(['A','kg',15])
ws.append(['B','kg',15])
ws.append(['C','kg',15])
ws.append(['D','kg',15])

print(ws.max_row) # 返回 5
print(ws.min_row) # 返回 1

print(ws.max_column) # 返回 3
print(ws.min_column) # 返回 1

wb.save('/Users/JunChen/Desktop/text.xlsx')

工作表中关于行和列的设置

1. 设置行高和列宽
设置行高
ws.row_dimensions[row].height = 25 # row 是行号

设置列宽
ws.column_demensions[col].width = 15.5 # col是列号,必须填的是字母.
实例
import openpyxl

wb = openpyxl.Workbook()

ws = wb.active

ws.append(['存货名称','单位','重量'])
ws.append(['A','kg','15'])
ws.append(['B','kg','15'])
ws.append(['C','kg','15'])
ws.append(['D','kg','15'])

# 设置列宽
for c in ['A','B','C']:
    ws.column_dimensions[c].width = 15

# 设置行高
for r in range(1,6):
    ws.row_dimensions[r].height = 30
    
wb.save('/Users/JunChen/Desktop/text.xlsx')

2. 插入行或者列
插入行

worksheet.insert_rows(index,amount)

插入列

worksheet.insert_cols(index,amount)

amount不填,默认为1

实例

import openpyxl

wb = openpyxl.Workbook()

ws = wb.active

ws.append(['存货名称','单位','重量'])
ws.append(['A','kg','15'])
ws.append(['B','kg','15'])
ws.append(['C','kg','15'])
ws.append(['D','kg','15'])


ws.insert_rows(3,2) # 在第三行前面插入两行
ws.insert_cols(2) # 在第2列前面插入一列

wb.save('/Users/JunChen/Desktop/text.xlsx')

3. 删除行或者列
删除行

worksheet.delete_rows(index,amount)

删除列

worksheet.delete_cols(index,amount)

amount不填默认为1

实例
import openpyxl

wb = openpyxl.Workbook()

ws = wb.active

ws.append(['存货名称','单位','重量'])
ws.append(['A','kg','15'])
ws.append(['B','kg','15'])
ws.append(['C','kg','15'])
ws.append(['D','kg','15'])


ws.delete_rows(2,2) # 从第二行开始,删除两行,删除第二行,第三行

ws.delete_cols(2) # 删除第二列

wb.save('/Users/junliangchen/Desktop/text.xlsx')

移动单元格区域

worksheet.move_range(cell_range, rows=0, cols=0, translate=False)

参数详解
  • cell_range:要移动的单元格区域
  • row:移动多少行
    • 正数:向下移动
    • 负数:向上移动
  • cols:移动多少列
    • 正数:向右移动
    • 负数:想左移动
  • translate:是否把公式也跟着移动
实例
import openpyxl


wb = openpyxl.Workbook()

ws = wb.active

ws.append(['存货名称','数量','单价'])
ws.append(['A',2,5])
ws.append(['A',2,5])
ws.append(['A',2,5])
ws.append(['A',2,5])
ws.append(['A',2,5])

ws['D1'].value = '金额'


# 添加公式
for r in range(2,7):
    ws.cell(r,4).value = f"=B{r}*C{r}"


# 把A6:D6区域向下移动一行,再向右移动3列
ws.move_range('A6:D6',1,3,translate=True)

wb.save('/Users/JunChen/Desktop/text.xlsx')
translate 详解
当translate是True时,效果如图1

图1

当translate是False,效果如图2

图2


合并单元格和取消合并单元格


ws.merge_cells('A1:F1') # 合并单元格

ws.unmerge_cells() # 取消合并单元格

合并居中

通常都会有合并并且居中单元格的需求,比如:要实现A1:F1合并居中,可以先对A1单元格设置居中,然后合并A1:F1单元格,这样就可以实现合并居中的效果了。

import openpyxl
from openpyxl.styles import Alignment


wb = openpyxl.Workbook()

ws = wb.active

ws['A1'] = '销售明细表'

# 没有下面这一步是实现不了合并居中效果的
ws['A1'].alignment = Alignment(horizontal='center',vertical='center')

ws.merge_cells('A1:F1')


wb.save('/Users/JunChen/Desktop/text.xlsx')

冻结窗口

worksheet.freeze_panes = 'A2' 点到A2单元格然后按冻结窗口


组合(折叠)

如图所示的功能
组合图示

列组合

worksheet.column_dimensions.group(start, end=None, outline_level=1, hidden=False)

参数详解
  • start:必须要有的参数,从那一列开始折叠
  • end:前面是开始,这个是结束的列
  • outline_level:组合分级
  • hidden:是否把组合折叠起来,隐藏内容。
实例
import openpyxl


wb = openpyxl.Workbook()

ws = wb.active

ws.append(['name','number','unit','price'])
ws.append(['A',2,5,0])
ws.append(['A',2,5,0])
ws.append(['A',2,5,0])
ws.append(['A',2,5,0])
ws.append(['A',2,5,0])
ws.append([])
ws.append(['A',1,2,3])

ws.column_dimensions.group('B','C')


wb.save(r'/Users/JunChen/Desktop/text.xlsx')

行组合

worksheet.row_dimensions.group(start, end=None, outline_level=1, hidden=False)

同上!


结束!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JunChen681

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值