Python办公自动化_Excel篇
库名 |
作用 |
xlrd |
从excel中读取数据,支持xls,xlsx |
xlwt |
从excel进行修改操作,不支持对xlsx格式的修改 |
xlutils |
在xlrd和xlwt中,对一个已存在的文件进行修改 |
openpyxl |
主要针对xlsx格式的excel进行读取和编辑 |
pandas |
可对csv进行操作,主要用于大数据分析 |
安装
复制安装
1.按 win + R ,输入CMD确定
2.输入 pip install openpyxl
卸载
pip uninstall openpyxl
工作簿
属性 |
作用 |
active |
获取当前活跃的Worksheet |
worksheets |
以列表的形式返回所有的Worksheet(表格) |
data_only |
默认为False,为True时只读取数据不显示公式 |
read_only |
判断是否以read_only模式打开Excel文档 |
encoding |
获取文档的字符集编码 |
properties |
获取文档的元数据,如标题,创建者,创建日期等 |
sheetnames |
获取工作簿中的表(列表) |
方法 |
作用 |
工作簿.sheetnames |
获取所有表格的名称 |
工作簿['工作表名'] |
通过表格名称获取Worksheet对象 |
工作簿.active |
获取活跃的表格 |
remove |
删除一个工作表对象【对象】 |
create_sheet |
创建一个空的表格【表名】 |
copy_worksheet |
在Workbook内拷贝表格【对象】 |
练习
新建100张工作表
复制import openpyxl as vb
路径 = r'c:/测试.xlsx'
工作簿 = vb.Workbook(路径)
for i in range(1,101):
工作簿.create_sheet(str(i) + '月')
工作簿.save(路径)
除了9月份的工作表以外都删除
复制import openpyxl as vb
路径 = r'c:/测试.xlsx'
工作簿 = vb.load_workbook(路径)
显示所有工作表 = 工作簿.worksheets
for 工作表 in 显示所有工作表:
if 工作表.title != '9月':
工作表 = 工作簿[工作表.title]
工作簿.remove(工作表)
工作簿.save(路径)
批量修改工作表的名称
复制import openpyxl as vb
路径 = r'c:/模板.xlsx'
工作簿 = vb.load_workbook(路径)
显示所有工作表 = 工作簿.worksheets
for 工作表 in 显示所有工作表:
工作表.title = '北京' + 工作表.title
工作簿.save(路径)
获取一个单元格的值
复制import openpyxl as vb
路径 = r'c:/测试.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
单元格 = 工作表['A1'].value
print(单元格)
获取第二列 1,3,5,7行的数据
复制import openpyxl as vb
路径 = r'c:/测试.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
for i in range(1,8,2):
print(i,工作表.cell(row=i,column=2).value)
获取每一行,每一列
复制import openpyxl as vb
路径 = r'c:/测试.xlsx'
工作簿 = vb.load_workbook(路径)
工作表 = 工作簿['Sheet1']
for 行 in 工作表.rows:
for 单元格 in 行:
print(单元格.value)
for 列 in 工作表.columns:
for 单元格 in 列:
print(单元格.value)
读取excel表的所有
复制from openpyxl import load_workbook
import os
import sys
sys.path.append("..")
class TestExcel():
def get_TestExcel(self, file_name, sheet_name):
print("======", os.getcwd())
workbook = load_workbook(file_name)
sheet = workbook[sheet_name]
test_data = []
for i in range(2, sheet.max_row + 1):
sub_data = {}
for j in range(1, sheet.max_column + 1):
sub_data[sheet.cell(1, j).value] = sheet.cell(i, j).value
test_data.append(sub_data)
return test_data
if __name__ == "__main__":
te = TestExcel()
txt = te.get_TestExcel("../data/Datas.xlsx", "pro")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!