当前位置: 首页 > news >正文

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 共用体可以存储不同的数据类型&#xff0c;但只能同时存储其中的一种类型。 #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和安卓原生项目&#xff0c;现在计划从外到内开始进行项目迁徙。 1》从gitee拉取flutter端的代码&#xff1b;&#xff08;Android报错Exception: Podfile missing&#xff09; 2》替换Xcode里的cocopods里Podfile的路径 然后报警 然后…...

ES6的promise

Promise是什么 1、Promise是js中的一个原生对象&#xff0c;是一种异步编程的解决方案。可以替换掉传统的回调函数解决方案&#xff0c;将异步操作以同步的流程表达出来。 2、Promise有三种状态&#xff1a;pending(初始化)、fulfilled(成功)、rejected(失败) 可以通过resolve(…...

轻松找回:如何在PostgreSQL 16中重置忘记的数据库密码

目录 1. 引言2. PostgreSQL 16的新特性简介3. 解决方法概述4. 方法一&#xff1a;通过修改pg_hba.conf文件重置密码5. 方法二&#xff1a;通过命令行进入单用户模式6. 方法三&#xff1a;使用pgAdmin工具重置密码7. 总结与最佳实践写在以后 1. 引言 你有没有过这样的经历&…...

EVAL长度突破限制

目录 突破15位限制 代码 绕过方式 第一种&#xff08;使用echo执行&#xff09; 第二种&#xff08;使用file_get_content追加文件后进行问件包含&#xff09; 第三种&#xff08;使用usort可变长参数&#xff09; 突破7位限制 第一种&#xff08;可以使用>创建文件…...

如何判断树上一个点是否在直径上

# 旅游规划 ## 题目描述 W市的交通规划出现了重大问题&#xff0c;市政府下定决心在全市各大交通路口安排疏导员来疏导密集的车流。但由于人员不足&#xff0c;W市市长决定只在最需要安排人员的路口安排人员。 具体来说&#xff0c;W市的交通网络十分简单&#xff0c;由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 进行本地压力测试

在应用开发和运维过程中&#xff0c;了解应用在高负载情况下的表现至关重要。压力测试可以帮助你识别性能瓶颈和潜在问题。本文将介绍如何使用 Locust 工具进行本地压力测试&#xff0c;模拟高并发场景&#xff0c;并分析测试结果。 1. 什么是 Locust&#xff1f; Locust 是一…...

【图形学】TA之路-矩阵应用平移-旋转-大小

矩阵应用&#xff1a;在 Unity 中&#xff0c;Transform 和矩阵之间的关系非常密切。Transform 组件主要用于描述和控制一个物体在三维空间中的位置、旋转和缩放&#xff0c;而这些操作背后实际上都是通过矩阵来实现的 1. Transform 组件与矩阵的关系 Transform 组件包含以下…...

Spring 循环依赖解决方案

文章目录 1. 循环依赖的产生2. 循环依赖的解决模型3. 基于setter/Autowired 的循环依赖1_编写测试代码2_初始化 Cat3_初始化 Person4_ 回到 Cat 的创建流程5_小结 4. 基于构造方法的循环依赖5. 基于原型 Bean 的循环依赖6. 引人AOP的额外设计7. 总结 IOC 容器初始化bean对象的逻…...

可视化大屏:如何get到领导心目中的“科技感”?

你如果问领导可视化大屏需要什么风格的&#xff0c;领导大概率说科技感的&#xff0c;然后你就去做了&#xff0c;结果被劈了一顿&#xff0c;什么原因&#xff1f;因为你没有get到领导心目中描述的科技感。 一、为什么都喜欢科技感 科技感在可视化大屏设计中具有以下好处&am…...

基于Python的金融数据采集与分析的设计与实现

基于Python的金融数据采集与分析的设计与实现 “Design and Implementation of Financial Data Collection and Analysis based on Python” 完整下载链接:基于Python的金融数据采集与分析的设计与实现 文章目录 基于Python的金融数据采集与分析的设计与实现摘要第一章 绪论1…...

使用Sanic和SSE实现实时股票行情推送

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…...

redis散列若干记录

字典 redis本身使用字典结构管理数据 redis使用hash表实现字典结构 使用了什么hash算法 使用SipHash算法&#xff0c;该算法能有效防止Hash表碰撞&#xff0c;并有不错的性能 hash冲突怎么解决 使用链表法解决hash冲突 hash表如何扩容 渐进式扩容&#xff0c;不会引起线程长期阻…...

Java面试八股之什么是STOMP协议

什么是STOMP协议 STOMP&#xff08;Simple Text Oriented Messaging Protocol&#xff09;是一种为消息队列和事件驱动架构设计的轻量级协议&#xff0c;主要用于在消息中间件之间进行消息交换。它的设计原则是简单、跨平台和易于实现&#xff0c;这使得STOMP成为许多实时应用…...

【自用】Python爬虫学习(一):爬虫基础与四个简单案例

Python爬虫学习&#xff08;一&#xff09; 基础知识四个简单的爬虫案列1.使用urlopen获取百度首页并保存2.获取某翻译单词翻译候选结果3.获取某网页中的书名与价格4.获取某瓣排名前250的电影名称 基础知识 对于一个网页&#xff0c;浏览器右键可以查看页面源代码&#xff0c;…...

[python]uiautomation.WindowControl函数用法

Python UIAutomation 窗口控件 介绍 在本文中&#xff0c;我们将探讨Python UIAutomation库以及如何使用它来控制和自动化Windows应用程序。我们将介绍UIAutomation的基础知识及其功能&#xff0c;并提供代码示例来演示其用法。 什么是UI自动化&#xff1f; UIAutomation是一个…...

学习记录第二十七天

进程 wait函数 功能 等待子进程结束&#xff1a;父进程调用wait函数后&#xff0c;会暂停执行&#xff0c;直到它的某个子进程结束。收集子进程状态&#xff1a;当子进程结束时&#xff0c;wait函数会返回子进程的终止状态&#xff0c;包括是正常终止还是被信号终止等信息。…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...