Python实现自动化办公(使用第三方库操作Excel)

1 使用 xlrd 读取Excel数据

1.1 获取具体单元格的数据

import xlrd# 1. 打开工作簿
workbook = xlrd.open_workbook("D:/Python_study_projects/Python自动化办公/Excel/test1.xlsx")
# 2. 打开工作表
sheet1 = workbook.sheets()[0]  # 选择所有工作表中的第一个
# 下面方法也可以
# sheet1 = workbook.sheet_by_index(0)
# sheet1 = workbook.sheet_by_name("Sheet1")# 3.通过行号和列号读取具体单元格中的数据
data = sheet1.cell_value(0, 0) # 获取第 0行,第 0列的数据
print(data)

1.2 批量获取数据

相关知识:

获取所有工作表的数目

# 获取所有工作表的数目
sheet_nums: int = workbook.nsheets
print(sheet_nums)  # 返回一个整数

获取所有工作表的名称

# 获取所有工作表的名称
sheet_names: list = workbook.sheet_names()
print(sheet_names)  # 返回一个列表

获取一张表中单元格的行数

# 获取一张表单元格的行数
rows_num: int = sheet1.nrows
print(rows_num)

获取一张表中单元格的列数

# 获取一张表单元格的列数
cols_num: int = sheet1.ncols
print(cols_num)

 

批量读取数据:【代码】

# 批量读取数据
sheets = workbook.sheets()
for sheet in sheets:   # 遍历所有的工作表rows_num: int = sheet.nrows   # 获取一张表中的所有行cols_num: int = sheet.ncols   # 获取一张表中的所有列for row in range(rows_num):  # 遍历行for col in range(cols_num):  # 遍历一行中的所有列print(sheet.cell_value(row, col), end="\t\t\t\t")print()print("-------------------------")

2 使用xlwt 向Excel中写入数据

2.1 向Excel中具体的单元格中写入数据

import xlwt# 1.首先创建一个工作簿
people = xlwt.Workbook()# 2.创建一个工作表
sheet = people.add_sheet('人员表')# 3.写入数据
sheet.write(0, 0, '姓名')
sheet.write(0, 1, '性别')
sheet.write(0, 2, '年龄')# 保存文件
people.save('D:/Python_study_projects/Python自动化办公/Excel/people.xlsx')

2.2 向Excel中批量写入数据

import xlwt# 1.首先创建一个工作簿
people = xlwt.Workbook()# 2.创建一个工作表
sheet = people.add_sheet('人员表')# 3.写入数据
list_detail = [{"student_id": "1001", "name": "张三", "sex": "男"},{"student_id": "1002", "name": "李四", "sex": "女"},{"student_id": "1003", "name": "王五", "sex": "男"}]
row = 0
for rows in list_detail:for i, key in enumerate(rows):  # enumerate()遍历对象,返回下标和数据sheet.write(row, i, rows[key])row = row + 1# 保存文件
people.save('D:/Python_study_projects/Python自动化办公/Excel/people.xlsx')

3 使用 xlutils 修改Excel工作簿

# 需要导入两个包,因为必须打开文件,才能作修改
import xlrd
from xlutils.copy import copy# 1.首先打开需要读的工作簿并获取到具体得到工作表
read_book = xlrd.open_workbook('D:/Python_study_projects/Python自动化办公/Excel/test1.xlsx')
read_sheet = read_book.sheets()[0]# 2.先拷贝一份作为修改
write_book = copy(read_book)
# 在拷贝的工作簿中获取工作表
write_sheet = write_book.get_sheet(0)# 3.遍历所有行,并修改下标为3的列的内容
for row in range(read_sheet.nrows):  write_sheet.write(row, 3, "修改的内容")write_book.save("D:/Python_study_projects/Python自动化办公/Excel/test1_修改后.xlsx")

4 使用 openpyxl 读取Excel内容

注意openpyxl 和前面的xlrd不一样,openpyxl读取的行列是从1开始的,这就对应了Excel表格中的行列的位置

import openpyxl# 读取操作
# 打开工作簿
workbook = openpyxl.load_workbook('D:/Python_study_projects/Python自动化办公/Excel/test1.xlsx')# 选择第一个工作表
sheet_1 = workbook['Sheet1']

4.1 读取具体单元格中的数据

# 获取指定单元格数据
cell = sheet_1.cell(1, 1)  #  第一个参数是行,第二个参数是列
print(cell.value)

4.2 读取指定行的数据

# 获取指定行的数据读 (取第三行数据)
cell_list = sheet_1[3]  # 参数 3表示第几行for cell in cell_list:  # 遍历第三行,获得所有单元格print(cell.value)

4.3 读取所有行中的单元格的数据

# 读取所有的行中的指定单元格
for row in sheet_1.rows:print(row[1].value)

4.4 读取所有行中的所有单元格

读取所有行中的所有单元格,并读取一行放入列表中输出

# 读取所有的行中的所有单元格
for row in sheet_1.rows:row_text_list = []for cell in row:row_text_list.append(cell.value)print(row_text_list)

4.5 读取某些行

# 输出最大行数和列数、最小行数和列数   注意这边下标是从 1 开始的
print(f"最大行数: {sheet.max_row}")
print(f"最小行数: {sheet.min_row}")
print(f"最大列数: {sheet.max_column}")
print(f"最小列数: {sheet.min_column}")

# 读取某些行
# for col in sheet_1.iter_cols(min_col=2, max_col=4, min_row=1, max_row=3, values_only=True):
for row in sheet_1.iter_rows(min_row=2):# 里面参数指定读取的范围for cell in row:print(cell.value)for row in sheet_1.iter_rows(min_row=2, max_row=4, min_col=1, max_col=3):# 里面参数指定读取的范围for cell in row:print(cell.value)

5 使用 openpyxl 向Excel中写入数据

5.1 向已有的Excel文件中写入数据

from openpyxl import workbook, load_workbook
# 读取操作
"""1.打开已有的文件
"""
# 打开工作簿
wb = load_workbook('D:/Python_study_projects/Python自动化办公/Excel/test1.xlsx')
# 选择第一个工作表
sheet = wb.worksheets[0]
# 获取到具体的单元格
cell = sheet.cell(1,2)
cell.value = "姓名hello"
wb.save('D:/Python_study_projects/Python自动化办公/Excel/test1.xlsx')

5.2 向没有的Excel文件中写入数据

文件不存在,首先需要创建

from openpyxl import workbook, load_workbook
"""2.如果文件不存在,则直接创建
"""
wb1 = workbook.Workbook()  # 创建工作簿
sheet1 = wb1.worksheets[0]# 找到单元格
cell = sheet1.cell(1,2)
# 写入内容
cell.value = "hello"

5.3 向Excel文件中批量写入数据

wb1 = workbook.Workbook()  # 创建工作簿
sheet1 = wb1.worksheets[0]list_detail = [{"student_id": "1001", "name": "张三", "sex": "男"},{"student_id": "1002", "name": "李四", "sex": "女"},{"student_id": "1003", "name": "王五", "sex": "男"}]
row = 1
for rows in list_detail:for i, key in enumerate(rows):cell = sheet1.cell(row, i+1)cell.value = rows[key]row += 1


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/414681.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css-动画效果学习示例

阴影 x-轴 y-轴 模糊度 颜色 (正负值可以表示角度问题) 可以加多个阴影 内置阴影 transition 可以添加动画延迟效果 向z轴缩进,开启透视respective 触发旋转效果 学习来源 :动画属性_哔哩哔哩_bilibili

vscode导出、导入全部插件

导出插件 code --list-extensions > plugins导入插件 将要导入的插件文本位置与终端位置一致 Get-Content plugins | ForEach-Object { code --install-extension $_ }在VSCode中导出安装的所有插件并在其他计算机进行导入-CSDN博客

ssb-PositionsInBurst的含义

UE在idle 初始接入过程,首先根据支持band的情况进行底层扫频,decode 到SIB1时,可以通过ssb-PositionsInBurst 确定当前小区对应的SSB 数量信息。 那ssb-PositionsInBurst是什么意思?接下来就来看下。 inOneGroup(8bits): 当每半帧…

Go 爬虫之 colly 从入门到不放弃指南

文章目录 概要介绍如何学习官方文档如何安装快速开始如何配置调试分布式代理层面执行层面存储层面存储多收集器配置优化持久化存储启用异步加快任务执行禁止或限制 KeepAlive 连接扩展总结如果想用 GO 实现爬虫能力,该如何做呢?抽时间研究了 Go 的一款爬虫框架 colly。 概要…

Scrcpy:掌握你的Android设备

Scrcpy:掌握你的Android设备 本文将介绍Scrcpy工具,它是一种强大的安卓设备控制工具,可以实现屏幕镜像、操作控制等功能。我们将探讨Scrcpy的基本原理和工作方式,并介绍如何使用Scrcpy连接和控制安卓设备。此外,我们还…

vite多页面打包学习(一)

一、前期准备 首先初始化两套独立的vue实例和相关生态(多页面嘛),如下 我在src文件下创建了pages大文件夹,并初始化了两套页面分别为index和page1,每套页面都有自己单独的组件、路由、状态、入口等等,这里…

JVM性能调优-垃圾收集器ZGC详解

1. ZGC收集器(-XX:UseZGC) 参考文章:Main - Main - OpenJDK Wiki http://cr.openjdk.java.net/~pliden/slides/ZGC-Jfokus-2018.pdf ZGC是一款JDK 11中新加入的具有实验性质的低延迟垃圾收集器,ZGC可以说源自于是Azul System公司开发的C4(…

项目管理十大知识领域之项目质量管理

一、项目质量管理概述 项目质量管理是指通过计划、组织、控制和监督项目过程,以确保项目满足特定的质量要求的一系列活动。项目质量管理是整个项目管理体系中不可或缺的一部分,它涉及到对项目所涉及的产品或服务的质量进行规划、控制和保证的过程。在项…

复制腾讯云服务器,启动后无法登陆问题

复制了一个腾讯云服务器,安全组也应用同一组,然而无法连接ssh服务。 登录腾讯云控制台,云服务器列表中找到该服务器,点击记录表该服务器记录的右侧“登录”。 选择vnc登录。 出现服务器终端界面,输入账号密码进入。…

uni-app小程序 uni.showToast字数超过两行自动省略显示不全问题

在实际开发过程中如果用户提交某些文件时,如果缺少某些条件我们要提醒用户缺少那些条件才能提交,但是如果我们用uni.showToast提醒的次数超过7个字的时候就会导致文字显示不全,达不到提醒的效果,这种时候我们就需要使用uni.showMo…

高级编程JavaScript中的数据类型?存储上能有什么差别?

在JavaScript中,我们可以分成两种类型: 基本类型复杂类型 两种类型的区别是:存储位置不同 一、基本类型 基本类型主要为以下6种: NumberStringBooleanUndefinednullsymbol Number 数值最常见的整数类型格式则为十进制&…

基于网络爬虫的微博热点分析,包括文本分析和主题分析

基于Python的网络爬虫的微博热点分析是一项技术上具有挑战性的任务。我们使用requests库来获取微博热点数据,并使用pandas对数据进行处理和分析。为了更好地理解微博热点话题,我们采用LDA主题分析方法,结合jieba分词工具将文本分割成有意义的…