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

news2024/9/29 5:36:07

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.coloradmin.cn/o/1396257.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql数据库:迁移数据目录至另一台服务器步骤

一、概述 最近由于项目需要,我们需要进行数据库服务器的更换和迁移工作。迁移计划和步骤如下: 1、首先,在新的数据库服务器上进行环境的搭建和配置,确保数据库版本、配置等一致。 2、然后,将备份的数据库数据导入到…

【docker-compose】【nginx】内网环境https配置

目录 1、openssl生成自签名证书和私钥2、nginx.conf配置ssl3、docker-compose挂载 1、openssl生成自签名证书和私钥 在部署服务器上,新建cert目录,执行以下指令,然后生成.crt和.key文件 openssl req -newkey rsa:2048 -nodes -keyout rsa_pri…

寒假刷题-递归与递推

寒假刷题 92. 递归实现指数型枚举 解法1递归 使用递归对每一个坑位进行选择,每个坑位有两种选择,填或者不填,使用st数组来记录每个坑位的状态,u来记录已经有多少坑位有了选择。 每个坑位有2钟选择,n个坑位的复杂度就…

Pytest插件pytest-django让Django测试更高效

在Django应用开发中,测试是确保应用质量的关键环节。然而,Django自带的测试框架并非总能满足开发者的需求,而Pytest插件 pytest-django 则为我们提供了更为灵活、强大的测试工具。本文将深入介绍 pytest-django 插件的基本用法和实际案例&…

【springboot】配置文件入门

配置文件入门 配置文件最重要的目的:解决硬编码问题(代码写死) 我们接下来主要介绍两个方面:常见的配置项和配置文件的使用 SpringBoot 的配置文件,有三种格式 propertiesyamlyml(yaml的简写) 用的较多的是yml和properties文件 如果项目中,同时存在…

常用中间件漏洞

IIS6 IIS7 安装 控制面板-----打开关闭windows功能 添加角色-----添加IIS 启动之后访问localhost 复现 服务器换成IIS7 访问报错 大概就是缺少CGI模块 问题解决 添加php-cgi的路径 添加脚本映射 修改php.ini文件 将 cgi.fix_pathinfo1 然后设置一个图片 访问 在后缀加上/.…

情人节专属--HTML制作情人节告白爱心

💕效果展示 💕html展示 <!DOCTYPE html> <html lang="en" > <head>

C#: form 窗体的各种操作

说明&#xff1a;记录 C# form 窗体的各种操作 1. C# form 窗体居中显示 // 获取屏幕的宽度和高度 int screenWidth Screen.PrimaryScreen.Bounds.Width; int screenHeight Screen.PrimaryScreen.Bounds.Height;// 设置窗体的位置 this.StartPosition FormStartPosition.M…

vue基于Spring Boot共享单车租赁报修信息系统

共享单车信息系统分为二个部分&#xff0c;即管理员和用户。该系统是根据用户的实际需求开发的&#xff0c;贴近生活。从管理员处获得的指定账号和密码可用于进入系统和使用相关的系统应用程序。管理员拥有最大的权限&#xff0c;其次是用户。管理员一般负责整个系统的运行维护…

Byrdhouse AI实时语音翻译工具,可以在视频通话中翻译100多种语言

你是否曾经在跨国会议或与外国友人聊天时&#xff0c;因为语言不通而感到尴尬或困扰&#xff1f;是不是还在找可以实时翻译的软件或者APP&#xff1f;现在&#xff0c;有了这款语音翻译神器&#xff0c;一切都将变得简单&#xff01; 免费使用链接&#xff1a;https://byrdhous…

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

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

必学!白银现货排期基础知识

白银现货排期是一种交易模式&#xff0c;它涉及到未来交货的安排。在这种模式之下&#xff0c;买卖双方可以预先达成协议&#xff0c;确定未来某一时间的交货安排。现货排期这种交易方式的特点&#xff0c;是白银会在约定的时间交付&#xff0c;而价格可以在合约签订时确定。 白…

计算机网络——数据链路层(1)

一、概述 在计算机网络中&#xff0c;数据链路层承担着点对点通信的任务&#xff0c;用于跨物理层在网段节点之间参数数据。它在网络分层中处于物理层之上&#xff0c;网路层之下。 在链路层的讨论中&#xff0c;我们将看到两种截然不同类型的链路层信道。第一种类型是广播信道…

WAF攻防相关知识点总结1--信息收集中的WAF触发及解决方案

什么是WAF WAF可以通过对Web应用程序的流量进行过滤和监控&#xff0c;识别并阻止潜在的安全威胁。WAF可以检测Web应用程序中的各种攻击&#xff0c;例如SQL注入、跨站点脚本攻击&#xff08;XSS&#xff09;、跨站请求伪造&#xff08;CSRF&#xff09;等&#xff0c;并采取相…

python如何包含其他路径的模块

python 包含其他路径的模块&#xff1a; 例如目录结构: dir1 |__ init.py |__ module1.py dir2 |__ main.py main.py from dir1 import module1首先需要在 dir1 添加 init.py 文件&#xff0c;该文件可以是空文件。 其次需要将dir1 的父目录添加到python 解释器的&#xf…

Js-WebAPIs-事件(二)

事件监听&#xff08;绑定&#xff09; 什么是事件&#xff1f; 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 什么是事件监听&#xff1f; 就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函数做出响…

springboot 原理分析之自动配置

一、Condition Condition 是在 Spring 4.0 增加的条件判断功能&#xff0c;通过这个可以功能可以实现选择性的创建 Bean 操作。比如说&#xff0c;只有满足某一个条件才能创建这个 Bean&#xff0c;否则就不创建。 SpringBoot 是如何知道要创建哪个 Bean 的&#xff1f;比如 Sp…

一文说明白 MySQL 的 ACID 和 几种日志的关系

1、简介 我们对于MySQL 很熟悉&#xff0c;关于其特性都有一定的了解&#xff0c;但是关于一些具体的实现原理&#xff0c;有的小伙伴可能不太熟悉&#xff0c;而且这部分知识在我们互联网大厂面试中是经常涉及的&#xff0c;因此&#xff0c;本文将带你深入底层&#xff0c;顺…

【计算机网络】子网划分(经典基础练习题)

一、某主机IP地址为110.35.2.68&#xff0c;子网掩码为255.255.255.128&#xff0c;求网络地址&#xff1f; 二、有A类网络18.0.0.0的子网掩码为255.128.0.0&#xff0c;请问可以划分为多少个子网&#xff1f; 并写出每个子网的子网号&#xff1f; 三、将C类网119.181.25.0划分…

Docker容器添加映射端口

方式一 简单粗暴&#xff08;需要等一段时间&#xff09; 直接给现在容器停了&#xff08;当然你要不想停也可以&#xff0c;只是打包会慢一点&#xff0c;当然我是没出意外&#xff0c;如果你怕出现特殊情况&#xff0c;那就先把容器停了&#xff09;&#xff0c;然后把这个容…