上篇日志学习了Python 使用openpyxl模块读取 Excel 表格,接下来就学习如何编辑 Excel 表格,向其中写入内容。
如果向某个单元格写入数据,直接给某个单元格赋值就行。
from openpyxl import load_workbook
wb = load_workbook('demo.xlsx')
ws = wb.active
# 把想要写入的内容赋值给相应单元格
ws['A1'] = '世界你好!'
# 保存demo.xlsx表格
wb.save('demo.xlsx')也可以把单元格赋值给变量wc,然后再给wc.value赋值
wb = load_workbook('demo.xlsx')
ws = wb.active
wc = ws['A1']
wc.value = 'Hello world.'
# 保存demo.xlsx表格
wb.save('demo.xlsx')Workbook 新建 Excel 文档
通过查看openpyxl官方文档,官方给了一个案例,我翻译了一下注释:
这个案例引入的是 Workbook 方法新建文档,注意大小写。新建 Excel 文档的时候,如果存在同名文档会被覆盖。
from openpyxl import Workbook
wb = Workbook()
# 选中活动表格
ws = wb.active
# 数据直接存到单元格A1
ws['A1'] = 42
# 可以用列表添加一行
ws.append([1, 2, 3])
# Python 类型自动转换
import datetime
# 把当前时间存到 A2
ws['A2'] = datetime.datetime.now()
# 保存文件
wb.save("sample.xlsx")执行效果是这样的,会新建一个sample.xlsx:

从官方的案例中可以看到,可以用 sheet.append() 给表格添加一行.
我们给刚才新建的这个sample.xlsx再添加一行数据
# 这里我们同时导入load_workbook 和 Workbook
from openpyxl import Workbook,load_workbook
wb = load_workbook("sample.xlsx")
# 选中活动表格
ws = wb.active
# 用列表增加一行数据
ws.append([1, 2, 3])
# 保存文件
wb.save("sample.xlsx")执行效果:

再举个例子,用循环写入数据:
wb = load_workbook("sample.xlsx")
ws = wb.active
data = [
['a',1],
['b',2],
['c',3],
['d',4],
]
for row in data:
ws.append(row)
wb.save("sample.xlsx")执行效果:

向表格中插入公式
直接给单元格赋值公式即可:
wb = load_workbook("sample.xlsx")
ws = wb.active
ws['B8'] = '=SUM(B4:B7)'
wb.save("sample.xlsx")执行效果:

查看 openpyxl 支持哪些 Excel 公式
from openpyxl.utils import FORMULAE print(FORMULAE) # 运行结果里出现的公式都可以用
插入一列
.insert_cols(idx=数字编码) 在idx列前面(左边)插入一列
wb = load_workbook("sample.xlsx")
ws = wb.active
# 在第二列前面插入1列
ws.insert_cols(2)
wb.save("sample.xlsx")
插入多列
.insert_cols(idx=数字编码,amount=几列) 在idx列前面插入amount列
wb = load_workbook("sample.xlsx")
ws = wb.active
# 在第二列前面插入3列
ws.insert_cols(2,3)
wb.save("sample.xlsx")
插入一行
.insert_rows(idx=数字) 在idx行上面插入一行
wb = load_workbook("sample.xlsx")
ws = wb.active
ws.insert_rows(2)
wb.save("sample.xlsx")
插入多行
.insert_rows(idx=数字,amount=几行) 在idx行上面插入amount行
wb = load_workbook("sample.xlsx")
ws = wb.active
ws.insert_rows(4,2)
wb.save("sample.xlsx")
删除列
.delete_cols(idx=数字,amount=几列) 从idx列开始向后删除amount列,包括idx列
wb = load_workbook("sample.xlsx")
ws = wb.active
# 从第二列开始,删除2列
ws.delete_cols(2,2)
wb.save("sample.xlsx")
删除行
.delete_rows(idx=数字,amount=几行) 从idx行开始向下删除amount行,包括idx行
wb = load_workbook("sample.xlsx")
ws = wb.active
# 从第二行开始,删除4行
ws.delete_rows(2,4)
wb.save("sample.xlsx")
移动单元格
.move_range('A2:C3',rows=2,cols=3) 单元格向右或者向下移动几行或几列,如果是负数则向左或向上
wb = load_workbook("sample.xlsx")
ws = wb.active
# A2:C3 向下移动2行,向右移动3列
ws.move_range('A2:C3',2,3)
wb.save("sample.xlsx")
创建新的工作表
.create_sheet() 创建新的工作表,新工作表的名称不允许跟之前的名称重复
wb = load_workbook("sample.xlsx")
print(wb.sheetnames)
wb.create_sheet('新工作表')
print(wb.sheetnames)
wb.save('sample.xlsx')
''' 执行结果:
['Sheet']
['Sheet', '新工作表']
'''删除工作表
.remove() 删除已存在的工作表
wb = load_workbook('sample.xlsx')
print(wb.sheetnames)
wb.remove(wb['新工作表'])
print(wb.sheetnames)
wb.save('sample.xlsx')
''' 执行结果:
['Sheet', '新工作表']
['Sheet']
'''复制一个工作表
.copy_worksheet() 复制指定的工作表
wb = load_workbook("sample.xlsx")
print(wb.sheetnames)
wb.copy_worksheet(wb['Sheet'])
print(wb.sheetnames)
wb.save('sample.xlsx')
''' 执行结果:
['Sheet']
['Sheet', 'Sheet Copy']
'''修改工作表名
.title 给其赋值即可
wb = load_workbook('sample.xlsx')
print(wb.sheetnames)
ws = wb['Sheet']
ws.title = '工作表1'
print(wb.sheetnames)
wb.save('sample.xlsx')
''' 执行结果:
['Sheet', 'Sheet Copy']
['工作表1', 'Sheet Copy']
'''上面介绍了官方案例用Workbook新建Excel文档,我们同样可以在新建文档的时候,指定工作表名。
wb = Workbook()
# 选中活动表格
ws = wb.active
ws['A1'] = 42
ws.title = 工作表1'
wb.save("sample.xlsx")冻结窗格
.freeze_panes 可以指定一个单元格,然后冻结
wb = load_workbook("sample.xlsx")
ws = wb.active
ws.freeze_panes = 'B2'
wb.save("sample.xlsx")如果想冻结首行的话可以冻结A2就可以了,同理,如果只想冻结首列可以冻结B1单元格。
自动筛选
.auto_filter..ref 指定范围内容自动筛选,可以用.dimensions筛选整个工作表
wb = load_workbook("sample.xlsx")
ws = wb.active
ws..auto_filter..ref = wb.dimensions
wb.save("sample.xlsx")更多Python相关文章点击:Python学习日志目录
下一篇:Python 第三方库、模块安装和卸载方法以及国内镜像
上一篇:Python 使用openpyxl模块打开和读取 Excel 表格内容
- 相关文章 -
Python 基础知识入门演示 - 2017-12-31
Python 数字与数字型运算 - 2020-09-08
Python 基础知识之数据类型 - 2020-09-07
Python 学习中非常好用的编辑器 Sublime Text 3 - 2020-09-07
Python 基础知识之变量 - 2020-09-03
Python 详细安装步骤图解 - 2020-09-01
Python 数据分析模块 Pandas 之 DataFrame 数据 - 2020-02-09
Python 数据分析模块 Pandas 之 Series 数据 - 2020-02-05
- 文章评论 -
- 最新评论[0条评论] -
版权所有©逍遥峡谷 - 星际中心超自然局 · 地球总部 |
逍遥峡谷 ·
酷品优选
Copyright©Interstellar Central Occult Agency (I.C.O.A)
本局纯属虚构,如有雷同,纯属巧合