Python办公自动化:使用openpyxl 创建与保存 Excel 工作簿
1 创建新的工作簿
在开始任何 Excel 操作之前,首先需要创建一个工作簿。openpyxl 提供了简单的接口来创建新的工作簿。
创建一个空白的工作簿
我们可以使用 openpyxl.Workbook() 来创建一个新的空白工作簿。以下是一个简单的示例:
import openpyxl# 创建一个新的空白工作簿
workbook = openpyxl.Workbook()# 获取当前活动的工作表
sheet = workbook.active# 输出当前活动工作表的名称
print("默认的工作表名称:", sheet.title) # 默认名称为 'Sheet'# 保存工作簿
workbook.save('new_workbook.xlsx')
代码解释
openpyxl.Workbook():创建一个新的空白工作簿对象。workbook.active:获取当前活动的工作表。默认情况下,openpyxl会为新创建的工作簿添加一个名为 “Sheet” 的工作表。workbook.save('new_workbook.xlsx'):将工作簿保存为一个文件,文件名为new_workbook.xlsx。
小贴士
- 一个工作簿可以包含多个工作表。在创建工作簿后,我们可以添加、删除或重命名工作表。
active属性总是指向当前工作簿中打开的第一个工作表。
2 保存工作簿到指定位置
保存工作簿是 Excel 操作中的基本步骤。我们可以通过指定路径和文件名来保存工作簿。
保存到当前目录
前面的例子已经展示了如何保存工作簿到当前脚本所在的目录。示例代码如下:
import openpyxl# 创建一个新的工作簿
workbook = openpyxl.Workbook()# 保存工作簿到当前目录
workbook.save('current_directory_workbook.xlsx')
保存到指定目录
如果想将工作簿保存到指定的目录,可以在保存时指定完整的路径:
import openpyxl# 创建一个新的工作簿
workbook = openpyxl.Workbook()# 保存工作簿到指定路径
file_path = '/path/to/your/directory/desired_filename.xlsx'
workbook.save(file_path)
注意:请确保文件路径存在,否则保存操作将失败。
代码解释
workbook.save('file_path/desired_filename.xlsx'):将工作簿保存到指定的路径。路径应包含文件名和扩展名(.xlsx或.xlsm)。
覆盖现有文件
如果指定的文件名已存在,save() 操作将覆盖该文件。为避免误操作,可以在保存前检查文件是否存在:
import os
import openpyxl# 创建一个新的工作簿
workbook = openpyxl.Workbook()# 检查文件是否已存在
file_path = 'existing_file.xlsx'
if os.path.exists(file_path):print(f"文件 {file_path} 已存在,将覆盖该文件。")
else:print(f"文件 {file_path} 不存在,创建新文件。")# 保存工作簿
workbook.save(file_path)
3 打开现有工作簿
有时,我们需要打开并修改一个现有的 Excel 文件。openpyxl 可以轻松实现这一点。
打开一个现有的工作簿
我们使用 openpyxl.load_workbook() 来加载现有的 Excel 文件:
import openpyxl# 打开现有的工作簿
workbook = openpyxl.load_workbook('existing_file.xlsx')# 获取活动工作表
sheet = workbook.active# 输出当前活动工作表的名称
print("当前活动工作表名称:", sheet.title)# 显示A1单元格的值
print("A1单元格的值:", sheet['A1'].value)
代码解释
openpyxl.load_workbook('existing_file.xlsx'):加载一个已经存在的 Excel 文件并创建工作簿对象。sheet['A1'].value:获取指定单元格的值。
只读模式与写入模式
- 只读模式:当处理非常大的 Excel 文件时,可以通过设置
read_only=True来加载工作簿。这将显著减少内存占用,但不支持修改文件。 - 写入模式:默认模式是可读写的。如果只需要读取数据,建议使用只读模式来提高效率。
示例代码(只读模式):
import openpyxl# 以只读模式打开现有工作簿
workbook = openpyxl.load_workbook('existing_file.xlsx', read_only=True)# 获取活动工作表
sheet = workbook.active# 显示A1单元格的值
print("A1单元格的值:", sheet['A1'].value)
4 文件格式:xlsx vs xlsm
在使用 openpyxl 时,了解文件格式的区别非常重要。openpyxl 主要支持以下两种文件格式:
xlsx 文件格式
- 扩展名:
.xlsx - 特点:这是 Excel 2007 及以后的默认文件格式,支持丰富的 Excel 功能如图表、数据透视表、公式等。
- 兼容性:大多数应用程序和库都支持
.xlsx文件。
xlsm 文件格式
- 扩展名:
.xlsm - 特点:这是带有宏的 Excel 文件格式。宏是用 VBA(Visual Basic for Applications)编写的小程序,可以自动执行某些任务。
openpyxl可以读取.xlsm文件,但不能执行或编辑其中的宏。 - 注意事项:如果你需要处理包含宏的 Excel 文件并希望保留这些宏,必须使用
.xlsm格式保存。
示例代码:保存为 .xlsm 文件
import openpyxl# 创建一个新的工作簿
workbook = openpyxl.Workbook()# 保存为 xlsm 格式
workbook.save('workbook_with_macros.xlsm')
相关文章:
Python办公自动化:使用openpyxl 创建与保存 Excel 工作簿
1 创建新的工作簿 在开始任何 Excel 操作之前,首先需要创建一个工作簿。openpyxl 提供了简单的接口来创建新的工作簿。 创建一个空白的工作簿 我们可以使用 openpyxl.Workbook() 来创建一个新的空白工作簿。以下是一个简单的示例: import openpyxl# …...
【张】#11 Union 共用体
Union 共用体可以存储不同的数据类型,但只能同时存储其中的一种类型。 #include <iostream> using namespace std;struct Product {char productName[20];int type;//1 int ,else charunion{int id_int;char id_chars[20];}; };int main(){Product product; …...
Xcode 在原生集成flutter项目
笔者公司有一个从2017年就开始开发的iOS和安卓原生项目,现在计划从外到内开始进行项目迁徙。 1》从gitee拉取flutter端的代码;(Android报错Exception: Podfile missing) 2》替换Xcode里的cocopods里Podfile的路径 然后报警 然后…...
ES6的promise
Promise是什么 1、Promise是js中的一个原生对象,是一种异步编程的解决方案。可以替换掉传统的回调函数解决方案,将异步操作以同步的流程表达出来。 2、Promise有三种状态:pending(初始化)、fulfilled(成功)、rejected(失败) 可以通过resolve(…...
轻松找回:如何在PostgreSQL 16中重置忘记的数据库密码
目录 1. 引言2. PostgreSQL 16的新特性简介3. 解决方法概述4. 方法一:通过修改pg_hba.conf文件重置密码5. 方法二:通过命令行进入单用户模式6. 方法三:使用pgAdmin工具重置密码7. 总结与最佳实践写在以后 1. 引言 你有没有过这样的经历&…...
EVAL长度突破限制
目录 突破15位限制 代码 绕过方式 第一种(使用echo执行) 第二种(使用file_get_content追加文件后进行问件包含) 第三种(使用usort可变长参数) 突破7位限制 第一种(可以使用>创建文件…...
如何判断树上一个点是否在直径上
# 旅游规划 ## 题目描述 W市的交通规划出现了重大问题,市政府下定决心在全市各大交通路口安排疏导员来疏导密集的车流。但由于人员不足,W市市长决定只在最需要安排人员的路口安排人员。 具体来说,W市的交通网络十分简单,由n个…...
docker 部署 RabbitMQ
命令 docker run -d --namerabbitmq \ -p 5671:5671 -p 5672:5672 -p 4369:4369 \ -p 15671:15671 -p 15672:15672 -p 25672:25672 \ -e RABBITMQ_DEFAULT_USERusername\ -e RABBITMQ_DEFAULT_PASSpassword\ -v /usr/local/rabbitmq/data:/var/lib/rabbitmq \ -v /usr/local/r…...
设计模式 - 过滤器模式
💝💝💝首先,欢迎各位来到我的博客!本文深入理解设计模式原理、应用技巧、强调实战操作,提供代码示例和解决方案,适合有一定编程基础并希望提升设计能力的开发者,帮助读者快速掌握并灵活运用设计模式。 💝💝💝如有需要请大家订阅我的专栏【设计模式】哟!我会定…...
使用 Locust 进行本地压力测试
在应用开发和运维过程中,了解应用在高负载情况下的表现至关重要。压力测试可以帮助你识别性能瓶颈和潜在问题。本文将介绍如何使用 Locust 工具进行本地压力测试,模拟高并发场景,并分析测试结果。 1. 什么是 Locust? Locust 是一…...
【图形学】TA之路-矩阵应用平移-旋转-大小
矩阵应用:在 Unity 中,Transform 和矩阵之间的关系非常密切。Transform 组件主要用于描述和控制一个物体在三维空间中的位置、旋转和缩放,而这些操作背后实际上都是通过矩阵来实现的 1. Transform 组件与矩阵的关系 Transform 组件包含以下…...
Spring 循环依赖解决方案
文章目录 1. 循环依赖的产生2. 循环依赖的解决模型3. 基于setter/Autowired 的循环依赖1_编写测试代码2_初始化 Cat3_初始化 Person4_ 回到 Cat 的创建流程5_小结 4. 基于构造方法的循环依赖5. 基于原型 Bean 的循环依赖6. 引人AOP的额外设计7. 总结 IOC 容器初始化bean对象的逻…...
可视化大屏:如何get到领导心目中的“科技感”?
你如果问领导可视化大屏需要什么风格的,领导大概率说科技感的,然后你就去做了,结果被劈了一顿,什么原因?因为你没有get到领导心目中描述的科技感。 一、为什么都喜欢科技感 科技感在可视化大屏设计中具有以下好处&am…...
基于Python的金融数据采集与分析的设计与实现
基于Python的金融数据采集与分析的设计与实现 “Design and Implementation of Financial Data Collection and Analysis based on Python” 完整下载链接:基于Python的金融数据采集与分析的设计与实现 文章目录 基于Python的金融数据采集与分析的设计与实现摘要第一章 绪论1…...
使用Sanic和SSE实现实时股票行情推送
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…...
redis散列若干记录
字典 redis本身使用字典结构管理数据 redis使用hash表实现字典结构 使用了什么hash算法 使用SipHash算法,该算法能有效防止Hash表碰撞,并有不错的性能 hash冲突怎么解决 使用链表法解决hash冲突 hash表如何扩容 渐进式扩容,不会引起线程长期阻…...
Java面试八股之什么是STOMP协议
什么是STOMP协议 STOMP(Simple Text Oriented Messaging Protocol)是一种为消息队列和事件驱动架构设计的轻量级协议,主要用于在消息中间件之间进行消息交换。它的设计原则是简单、跨平台和易于实现,这使得STOMP成为许多实时应用…...
【自用】Python爬虫学习(一):爬虫基础与四个简单案例
Python爬虫学习(一) 基础知识四个简单的爬虫案列1.使用urlopen获取百度首页并保存2.获取某翻译单词翻译候选结果3.获取某网页中的书名与价格4.获取某瓣排名前250的电影名称 基础知识 对于一个网页,浏览器右键可以查看页面源代码,…...
[python]uiautomation.WindowControl函数用法
Python UIAutomation 窗口控件 介绍 在本文中,我们将探讨Python UIAutomation库以及如何使用它来控制和自动化Windows应用程序。我们将介绍UIAutomation的基础知识及其功能,并提供代码示例来演示其用法。 什么是UI自动化? UIAutomation是一个…...
学习记录第二十七天
进程 wait函数 功能 等待子进程结束:父进程调用wait函数后,会暂停执行,直到它的某个子进程结束。收集子进程状态:当子进程结束时,wait函数会返回子进程的终止状态,包括是正常终止还是被信号终止等信息。…...
Wan2.1-UMT5与Python入门:零基础学会用AI生成你的第一个视频
Wan2.1-UMT5与Python入门:零基础学会用AI生成你的第一个视频 你是不是也刷到过那些由AI生成的酷炫短视频,心里痒痒的,觉得这技术真神奇?但一想到要学复杂的编程和模型部署,就觉得头大,感觉离自己很远。 别…...
BYD 高通8155 OTA项目 我写的一篇专利
草根不要在BYD写专利,我24年1月初开始撰写,24年6月份才提交到专利公司,被驳回是因为有对比文件公开了我的发明点,是重庆赛力斯 4月份公开的,部门内部流程审核极慢,集团IPR找各种理由能拖上你半年࿰…...
如祺出行2025年营收53亿:网约车贡献97%收入 净亏2.9亿
雷递网 乐天 4月1日如祺出行科技有限公司(股份代号:9680)日前发布截至2025年12月31日的财报。财报显示,如祺出行2025年营收为52.86亿元,较上年同期的24.63亿元增长114.6%。如祺出行收入主要来自网约车服务,…...
OpenClaw小团队协作:千问3.5-35B-A3B-FP8共享技能库搭建
OpenClaw小团队协作:千问3.5-35B-A3B-FP8共享技能库搭建 1. 为什么我们需要共享技能库 去年冬天,我们团队在尝试用OpenClaw自动化周报生成时遇到了一个典型问题——每个人都在重复造轮子。小王写了个飞书日程抓取脚本,小李开发了Git提交记录…...
基于vue的非遗文化传承平台[vue]-计算机毕业设计源码+LW文档
摘要:非物质文化遗产(非遗)作为民族文化的重要组成部分,承载着人类社会的文明和历史记忆。随着现代社会的快速发展,非遗文化的传承面临着诸多挑战。为了更好地保护和传承非遗文化,本文设计并实现了一个基于…...
3步实现GitHub资源精准提取:开发者必备的效率工具
3步实现GitHub资源精准提取:开发者必备的效率工具 【免费下载链接】DownGit github 资源打包下载工具 项目地址: https://gitcode.com/gh_mirrors/dow/DownGit 你是否曾遇到这样的困境:急需从GitHub仓库中获取一个特定文件夹,却不得不…...
SpringBoot + MyBatis-Plus项目实战:从零搭建一个JavaEE课程设计骨架(附完整源码结构解析)
SpringBoot MyBatis-Plus项目实战:从零搭建一个JavaEE课程设计骨架(附完整源码结构解析) 当你第一次打开IDE准备开始JavaEE课程设计时,面对空白的项目窗口是否感到无从下手?本文将带你从零开始,用SpringBo…...
避开这些坑!FFmpeg.wasm在Vue项目中的完整避坑指南(含SharedArrayBuffer报错解决方案)
FFmpeg.wasm在Vue项目中的深度实践与疑难解析 当现代Web应用需要处理音视频编辑、转码或流媒体时,FFmpeg.wasm正成为前端开发者的利器。本文将深入探讨如何在高安全要求的Vue项目中稳定集成这一技术方案,特别针对生产环境中可能遇到的SharedArrayBuffer限…...
新能源车BMS低压管理避坑指南:如何解决上下电时序中的典型问题
新能源车BMS低压管理避坑指南:如何解决上下电时序中的典型问题 在新能源汽车的电池管理系统(BMS)开发中,低压上下电时序控制是确保系统稳定运行的关键环节。许多开发团队在实际项目中都会遇到信号冲突、时序错乱、异常处理机制不完…...
小红书自动评论的‘伪需求’与真风险:聊聊RPA工具养号背后的封号逻辑与合规玩法
小红书自动化评论的合规边界:效率与账号安全的博弈术 凌晨三点,某MCN机构运营负责人李然被连续不断的手机提示音惊醒——团队管理的12个小红书达人账号同时收到平台封禁通知,而这一切都源于他们三天前部署的那套"高效互动系统"。这…...
