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.mzph.cn/news/631893.shtml

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

相关文章

多文件转二维码的两种方式,有兴趣的了解一下

多个文件能一键生成二维码吗?二维码是现在很多人用来展示文件内容的一种手段,在制作二维码图片之后,其他人扫码就可以查看文件或者下载文件,有效的提升文件获取的效率。一般情况下,文件二维码分为多个文件生成一个二维…

Flutter:跨平台移动应用开发的未来

Flutter:跨平台移动应用开发的未来 引言 Flutter的背景和概述 Flutter是由Google开发的一个开源UI工具包,用于构建漂亮、快速且高度可定制的移动应用程序。它于2017年首次发布,并迅速引起了开发者们的关注。Flutter采用了一种全新的方法来…

【vue3项目初始化配置】vue3 + element plus

项目初始化是开发过程中很重要的一个环节,本篇博客带大家从零开始创建并初始化一个vue3项目,文章详细介绍了每个步骤,希望能帮助刚接触开发的小伙伴。 目录 一.创建项目 二.安装插件 ​编辑 ​编辑三.安装依赖 ​编辑 ​编辑四.配置项目 …

如何安装配置VisualSVN服务并实现公网访问本地服务【内网穿透】

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写,是一个开放源代码的版本控制系统…

班主任在班级管理中的角色定位

你是否曾经想过,为什么有的班主任能够让学生如此敬爱,而有的班主任却让学生敬而远之?其实,这都与班主任在班级管理中的角色定位有关。 班主任应该是学生的良师益友。这意味着班主任不仅要传授知识,更要关心学生的成长…

提升线上会议效率,解决Teams会议中常见网络问题

在企业组网场景中,在线会议是混合办公、跨地区办公模式下很重要的协作沟通手段,而在线会议如Teams这类应用对网络的实时性和即时性要求非常高,网络频繁中断、接入速度慢、登不进去等问题分分钟加剧用户的不满,导致汇报失败或者是交…

GMT学习记录

我主要根据GMT中文手册一步一步学习的!!!!B站视频介绍的是5.0老版本仅仅建立基础理解这个软件。 好的,学了一点发现直接把gmt转为shp,就得到我想的文件 gmt数据转shape格式数据 - 简书 (jianshu.com) 命…

汽车用螺纹紧固件的拧紧力矩规范主要考虑哪些方面——SunTorque智能扭矩系统

在汽车制造过程中,螺纹紧固件是连接和固定各个零部件的重要元件。为了保证汽车的可靠性和安全性,对于螺纹紧固件的拧紧力矩有着严格的规定和规范。SunTorque智能扭矩系统和大家一起掌握这一重要知识点。 拧紧力矩是指将螺纹紧固件拧紧到预定位置所需的力…

Pytorch实战——2、初探张量

🍅 写在前面 👨‍🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。 🔎个人主页:主页链接(欢迎各位大佬光临指导) ⭐️近…

二叉树的遍历 Java

二叉树的遍历 递归法前序遍历中序遍历后序遍历改进 迭代法前序、后序遍历中序遍历 二叉树的统一迭代法(未完成)Java 中 null、NULL、nullptr 区别 public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(in…

Go 语言中高效切片拼接和 GO 1.22 提供的新方法

Table Contents 切片拼接的必要性基本拼接方法及其局限性使用 append 函数高效拼接的策略控制容量和避免副作用利用 Go 1.22 的新特性切片动态扩容的深入理解内存重新分配与数据迁移性能优化策略结论在 Go 语言中,切片拼接是一项常见的操作,但如果处理不当,可能会导致性能问…

2.【Linux】(进程的状态||深入理解fork||底层剖析||task_struct||进程优先级||并行和并发||详解环境变量)

一.进程 1.进程调度 Linux把所有进程通过双向链表的方式连接起来组成任务队列,操作系统和cpu通过选择一个task_struct执行其代码来调度进程。 2.进程的状态 1.运行态:pcb结构体在运行或在运行队列中排队。 2.阻塞态:等待非cpu资源就绪&am…

学习JavaEE的日子 day14 继承,super(),this(),重写

Day14 1.继承的使用 理解:子类继承父类所有的属性和方法 使用场景:多个类似的类,有相同的属性和方法,就可以把相同属性和方法抽取到父类 优点:减少代码的冗余; 使类与类之间产生了关系(多态的前提) 缺点&a…

RT-Thread Studio学习(十三)DAC

RT-Thread Studio学习(十三)DAC 一、简介二、新建RT-Thread项目并使用外部时钟三、启用DAC四、测试五、总结 一、简介 本文将基于STM32F407VET芯片介绍如何在RT-Thread Studio开发环境下使用DAC设备。硬件及开发环境如下: OS WIN10STM32F40…

力扣309. 买卖股票的最佳时机含冷冻期(动态规划,Java C++解法)

Problem: 309. 买卖股票的最佳时机含冷冻期 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 Problem: 714. 买卖股票的最佳时机含手续费 该题目可以看作是上述题目的改编,该题目添加了一个冷冻期使得动态转移方程更加复杂,具体思路如下&#xf…

RK3568 android11 移植 v4l2loopback 虚拟摄像头

一,v4l2loopback 简介 v4l2loopback是一个Linux内核模块,它允许用户创建虚拟视频设备。这种虚拟视频设备可以用于各种用途,例如将实际摄像头的视频流复制到虚拟设备上,或者用于视频流的处理和分析等。v4l2loopback的主要作用是创…

Android CarService源码分析

文章目录 一、CarService的基本架构1.1、Android Automative整体框架1.2、Framework CarService1.3、目录结构1.3.1、CarService1.3.2、Car APP 二、CarService的启动流程2.1、系统启动后在SystemServer进程中启动CarServiceHelperService2.2、CarService启动 三、CarService源…

RT-Thread 15. list_timer与软定时器

1. 代码 void rt_thread_usr1_entry(void *parameter) {/* set LED2 pin mode to output */rt_pin_mode(LED2_PIN, PIN_MODE_OUTPUT);while (1){rt_pin_write(LED2_PIN, PIN_HIGH);rt_thread_mdelay(2000);rt_pin_write(LED2_PIN, PIN_LOW);rt_thread_mdelay(3000);} }int ma…

Unity URP切换品质和Feature开关的性能问题

现在对我的项目进行安卓端发布,需要切换品质和一些Feature开关。 我是这样做的。 划分品质 首先Renerer分为2个Android和PC,图中其他不用参考。 每个副本的URP Asset分为pc和android,例如图中的 hall和hall_android。 我们可以看到hall用的…

python贪吃蛇游戏

为了实现这个游戏,需要用到Python的pygame模块,它是一个专门用于开发游戏的模块,提供了很多方便的功能,比如窗口、图形、音效、事件处理等。 用pygame来创建一个窗口,设置游戏的背景色,画出蛇和食物&#…