当前位置: 首页 > 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')

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MATLAB 手动实现投影密度法分割建筑物立面 (73)
  • Chart.js:内容、优点及使用方法
  • 常见的排序算法汇总(详解篇)
  • 稚晖君发布5款全能人形机器人,开源创新,全能应用
  • 单体应用spring Task和分布式调度
  • CDN劫持总结
  • MK米客方德推出新一代工业级SD NAND——更长寿命、更高速度、更优功耗
  • 白骑士的C#教学实战项目篇 4.1 控制台应用程序
  • 凹凸纹理概念
  • 定长滑动窗口算法
  • 【SQL】科目种类
  • 10个创意提示:让你的内容焕然一新!
  • NVDLA专题11:具体模块介绍——CROSS Channel Data Processor
  • 2024新型数字政府综合解决方案(六)
  • 【Qt】内置对话框
  • 《深入 React 技术栈》
  • 【EOS】Cleos基础
  • 【Linux系统编程】快速查找errno错误码信息
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • angular组件开发
  • extract-text-webpack-plugin用法
  • java多线程
  • php ci框架整合银盛支付
  • Python 基础起步 (十) 什么叫函数?
  • React Transition Group -- Transition 组件
  • Sass 快速入门教程
  • Shadow DOM 内部构造及如何构建独立组件
  • spring + angular 实现导出excel
  • Spring核心 Bean的高级装配
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 编写符合Python风格的对象
  • 仿天猫超市收藏抛物线动画工具库
  • 记一次用 NodeJs 实现模拟登录的思路
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • AI算硅基生命吗,为什么?
  • PostgreSQL之连接数修改
  • ​渐进式Web应用PWA的未来
  • ​香农与信息论三大定律
  • #QT(智能家居界面-界面切换)
  • #VERDI# 关于如何查看FSM状态机的方法
  • $().each和$.each的区别
  • (02)vite环境变量配置
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (Forward) Music Player: From UI Proposal to Code
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (回溯) LeetCode 78. 子集
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (论文阅读30/100)Convolutional Pose Machines
  • (三)elasticsearch 源码之启动流程分析
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (已解决)什么是vue导航守卫
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • ****三次握手和四次挥手