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

2022-07-23  本文已影响0人  JunChen

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


开始!

常用的工作表属性

1. 设置工作表名称

worksheet.title = '工作表名'

2. 设置工作表标签颜色

worksheet.sheet_properties = '颜色代码‘

3. 隐藏或者显示工作表

worksheet.sheet_state = 参数

可选参数有:

拓展

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)

参数详解

实例

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)

参数详解

实例

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)

同上!


结束!

上一篇 下一篇

猜你喜欢

热点阅读