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

使用 Openpyxl 操作 Excel 文件详解

文章目录

  • 安装
    • 安装Python3
    • 安装 openpyxl
  • 基础操作
    • 1. 引入
    • 2. 创建工作簿和工作表
    • 3. 写入数据
    • 4. 保存工作簿
    • 5. 加载已存在的Excel
    • 6. 读取单元格的值
    • 7. 选择工作表
  • 样式和格式化
    • 1. 引入
    • 2. 设置字体
    • 3. 设置边框
    • 4. 填充
    • 5. 设置数字格式
    • 6. 数据验证
    • 7. 公式操作
  • 性能优化
    • 1. read_only/write_only
    • 2. 遍历单元格


openpyxl 是一个用于在 Python 中读取和写入 Excel 文件的优秀库。
它支持 .xlsx 和 .xlsm 格式,非常适合在 Ubuntu 系统上进行 Excel 数据处理和自动化操作。
本篇博客将介绍一些常用的 openpyxl 命令。

安装

安装Python3

首先,你需要安装 openpyxl 和 Python。在 Ubuntu 上,可以通过以下命令安装:

sudo apt install python3

安装 openpyxl

pip3 install openpyxl

基础操作

1. 引入

from openpyxl import Workbook # 新建文件的引入
from openpyxl import load_workbook # 加载已存在文件的引入

2. 创建工作簿和工作表

wb = Workbook() # 创建一个新的工作簿
ws = wb.active # 获取活动工作表wb.create_sheet("Sheet2") # 创建一个新的工作表并命名
ws.title = "NewSheet" # 修改工作表名

3. 写入数据

ws['A1'] = 'Hello, World!'
ws['B1'] = 42
ws['C1'] = 3.14
cell = ws.cell(row=1, column=1, value="New Value")

4. 保存工作簿

wb.save('example.xlsx')

5. 加载已存在的Excel

wb = load_workbook('example.xlsx')
ws = wb.active

6. 读取单元格的值

cell_a1 = ws['A1'].value
cell_b1 = ws['B1'].value
cell_c1 = ws['C1'].valueprint(f"A1: {cell_a1}, B1: {cell_b1}, C1: {cell_c1}")

7. 选择工作表

ws1 = wb.worksheets[0] # 通过索引选择工作表
ws2 = wb["Sheet2"] # 通过名称选择工作表

样式和格式化

1. 引入

from openpyxl.styles import Font, Alignment # 样式操作的引入

2. 设置字体

font = Font(name='Arial', size=14, bold=True, italic=False)
ws['A1'].font = font

3. 设置边框

border = Border(left=Side(border_style='thin'),right=Side(border_style='thin'),top=Side(border_style='thin'),bottom=Side(border_style='thin'))
ws['A1'].border = border

4. 填充

fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")
ws['A1'].fill = fill

5. 设置数字格式


ws['B1'].number_format = '0.00%'   # 百分比格式
ws['C1'].number_format = 'YYYY-MM-DD'  # 日期格式

6. 数据验证

from openpyxl.worksheet.datavalidation import DataValidationdv = DataValidation(type="list", formula1='"Apple,Banana,Cherry"', allow_blank=True) # 创建数据验证对象ws.add_data_validation(dv) 
dv.add('A1') # 将数据验证应用到单元格

7. 公式操作

可以在单元格中插入公式:

ws['D1'] = "=SUM(A1:A3)"

性能优化

1. read_only/write_only

对于大的 Excel 文件,可以使用read_only来提高读取效率, 使用 write_only 来优化写入性能

from openpyxl import load_workbookwb = load_workbook('example.xlsx', read_only=True) # 使用只读模式加载工作簿

from openpyxl import Workbookwb = Workbook(write_only=True) # 使用写入模式创建工作簿
ws = wb.create_sheet()

2. 遍历单元格

可以使用 .rows 和 .columns 遍历工作表中的行和列:

for row in ws.iter_rows(min_row=1, max_row=5, min_col=1, max_col=3):for cell in row:print(cell.value, end=" ")

相关文章:

使用 Openpyxl 操作 Excel 文件详解

文章目录 安装安装Python3安装 openpyxl 基础操作1. 引入2. 创建工作簿和工作表3. 写入数据4. 保存工作簿5. 加载已存在的Excel6. 读取单元格的值7. 选择工作表 样式和格式化1. 引入2. 设置字体3. 设置边框4. 填充5. 设置数字格式6. 数据验证7. 公式操作 性能优化1. read_only/…...

关于使用雪花算法生成唯一ID,返回给前端ID不一致的问题

问题 在某个项目中,使用雪花算法生成的唯一ID,从数据库查询到数据后返回给前端,但是前端接受到的数据ID和数据库原先生成的不一致 但是前端展示的数据: 原因 原因是后端使用Long类型来存储雪花算法生成的ID,但是这个数值已经超过前端数值类型的范围,导致前端在存储这个数值…...

axios post请求 接收sse[eventsource]数据的

axios 接收sse数据的 axios 接收sse数据的 EventSource什么 基于 HTTP 协议实现,通过与服务器建立一个持续连接,实现了服务器向客户端推送事件数据的功能。在客户端,EventSource 对象通过一个 URL 发起与服务器的连接。连接成功后&#xff0…...

Spring Boot 示例项目:从零开始构建 Web 应用

一、项目概述 本文档将指导您通过一个示例项目,了解如何使用 Spring Boot 框架构建一个简单的 Web 应用程序。该项目涵盖了从数据模型定义到控制器、服务层以及数据访问层的完整开发流程,帮助您快速掌握 Spring Boot 的基本使用方法。 二、项目结构 1. 项目模块 本示例项…...

大语言模型常用微调与基于SFT微调DeepSeek R1指南

概述 大型语言模型(LLM,Large Language Model)的微调(Fine-tuning)是指在一个预训练模型的基础上,使用特定领域或任务的数据对模型进行进一步训练,以使其在该领域或任务上表现更好。微调是迁移…...

聚焦地灾防治,助力城市地质安全风险防控

城市是人类社会发展的重要载体,承载着经济繁荣、文化交流和人口聚集等重要功能。然而,由于城市建设过程中地质条件复杂,地质灾害风险隐患存在,城市地质安全等问题日益突出,引起人们的广泛关注。为保障城市发展的安全和…...

为什么WP建站更适合于谷歌SEO优化?

在当今数字时代,建立一个网站似乎变得容易,但要构建一个真正能够带来流量和订单的网站却并非易事。特别是在谷歌SEO优化方面,不同的建站程序在SEO支持方面的效果差异显著。对于希望提升搜索引擎表现的用户来说,WordPress无疑是最佳…...

基于JavaScript的实时数据监控仪表盘开发实践

基于JavaScript的实时数据监控仪表盘开发实践 一、项目背景 某云计算服务商需要为其客户提供服务器集群健康状态监控系统。原有系统存在以下痛点: 数据刷新依赖手动操作可视化效果单一(仅表格展示)缺乏异常状态的智能预警移动端适配性差 …...

同步异步日志系统-日志落地模块的实现

功能:将格式化完成后的日志消息字符串,输出到指定的位置 扩展:支持同时将日志落地到不同的位置 位置分类: 1.标准输出 2.指定文件(时候进行日志分析) 3.滚动文件(文件按照时间/大小进行滚动…...

大模型常识:什么是大模型/大语言模型/LLM

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 一、什么是语言模型? 那么什么是语言模…...

用deepseek学大模型08-长短时记忆网络 (LSTM)

deepseek.com 从入门到精通长短时记忆网络(LSTM),着重介绍的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据, 模型应用场景和优缺点,及如何改进解决及改进方法数据推导…...

IOT通道MQTT

IoT通道是物联网(IoT)系统中用于设备与云端或设备之间通信的专用通道,其主要作用是实现数据的高效传输和设备的远程控制。以下是关于IoT通道的定义、应用和技术特点的总结: 定义 IoT通道是物联网设备与云端或设备之间建立的通信…...

(蓝桥杯——10. 小郑做志愿者)洛斯里克城志愿者问题详解

题目背景 小郑是一名大学生,她决定通过做志愿者来增加自己的综合分。她的任务是帮助游客解决交通困难的问题。洛斯里克城是一个六朝古都,拥有 N 个区域和古老的地铁系统。地铁线路覆盖了树形结构上的某些路径,游客会询问两个区域是否可以通过某条地铁线路直达,以及有多少条…...

小胡说技书博客分类(部分目录):服务治理、数据治理与安全治理对比表格

文章目录 一、对比表格二、目录2.1 服务2.2 数据2.3 安全 一、对比表格 下表从多个维度对服务治理、数据治理和安全治理进行详细对比,为读者提供一个直观而全面的参考框架。 维度服务治理数据治理安全治理定义对软件开发全流程、应用交付及API和接口管理进行规范化…...

开源模型应用落地-DeepSeek-R1-Distill-Qwen-7B-LoRA微调-LLaMA-Factory-单机单卡-V100(一)

一、前言 如今,大语言模型领域热闹非凡,各种模型不断涌现。DeepSeek-R1-Distill-Qwen-7B 模型凭借其出色的效果和性能,吸引了众多开发者的目光。而 LLaMa-Factory 作为强大的微调工具,能让模型更好地满足个性化需求。 在本篇中&am…...

如何避免redis长期运行持久化AOF文件过大的问题:AOF重写

一、AOF 重写的核心作用 通过 重建 AOF 文件,解决以下问题: 体积压缩:消除冗余命令(如多次修改同一 key),生成最小操作集合。混合持久化支持(若启用 aof-use-rdb-preamble yes)&am…...

uni-app发起网络请求的三种方式

uni.request(OBJECT) 发起网络请求 具体参数可查看官方文档uni-app data:请求的参数; header:设置请求的 header,header 中不能设置 Referer; method:请求方法; timeout:超时时间,单位 ms&a…...

以下是一个使用 HTML、CSS 和 JavaScript 实现的登录弹窗效果示例

以下是一个使用 HTML、CSS 和 JavaScript 实现的登录弹窗效果示例&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>登录弹窗示例</title><style>body {font-family: Aria…...

EasyRTC:智能硬件适配,实现多端音视频互动新突破

一、智能硬件全面支持&#xff0c;轻松跨越平台障碍 EasyRTC 采用前沿的智能硬件适配技术&#xff0c;无缝对接 Windows、macOS、Linux、Android、iOS 等主流操作系统&#xff0c;并全面拥抱 WebRTC 标准。这一特性确保了“一次开发&#xff0c;多端运行”的便捷性&#xff0c…...

LeetCode1287

LeetCode1287 目录 题目描述示例思路分析代码段代码逐行讲解复杂度分析总结的知识点整合总结 题目描述 给定一个非递减的整数数组 arr&#xff0c;其中有一个元素恰好出现超过数组长度的 25%。请你找到并返回这个元素。 示例 示例 1 输入: arr [1, 2, 2, 6, 6, 6, 6, 7,…...

【计算机网络】网络层数据包(Packet)格式

在计算机网络中&#xff0c;数据包&#xff08;Packet&#xff09; 是网络层的协议数据单元&#xff08;PDU&#xff09;&#xff0c;用于在不同网络之间传输数据。数据包的格式取决于具体的网络层协议&#xff08;如 IPv4、IPv6 等&#xff09;。以下是常见数据包格式的详细说…...

使用vite打包并部署vue项目到nginx

1 使用 Vite 创建 vue3 项目 Vite 是一个新型的前端构建工具&#xff0c;专为现代浏览器和工具链而设计&#xff0c;提供了极快的冷启动和热模块更新&#xff08;HMR&#xff09;速度。以下是使用 Vite 创建 Vue 3 项目的详细步骤&#xff1a; 一、安装 Node.js 和 npm 首先…...

深度学习笔记之自然语言处理(NLP)

深度学习笔记之自然语言处理(NLP) 在行将开学之时&#xff0c;我将开始我的深度学习笔记的自然语言处理部分&#xff0c;这部分内容是在前面基础上开展学习的&#xff0c;且目前我的学习更加倾向于通识。自然语言处理部分将包含《动手学深度学习》这本书的第十四章&#xff0c…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十九节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;ClearDiagnosticInformation_0x84服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月14日 关键词&#xff1a;UDS协议、0x84服务、清除诊断信息、ISO 14229-1:2023、ECU测试 一、服…...

自动化测试框架搭建-单次接口执行-三部曲

目的 判断接口返回值和提前设置的预期是否一致&#xff0c;从而判断本次测试是否通过 代码步骤设计 第一步&#xff1a;前端调用后端已经写好的POST接口&#xff0c;并传递参数 第二步&#xff1a;后端接收到参数&#xff0c;组装并请求指定接口&#xff0c;保存返回 第三…...

Spring Bean的生命周期和作用域

一、Bean 生命周期 Bean的定义Bean的实例化属性注入Bean的初始化Bean的使用Bean的销毁 可以增强的位置&#xff1a; PostConstruct&#xff1a;属性注入后&#xff0c;afterPropertiesSet方法 &#xff08;前提实现&#xff1a;InitializingBean接口&#xff09;前增强。 Pr…...

DeepSeek R1生成图片总结2(虽然本身是不能直接生成图片,但是可以想办法利用别的工具一起实现)

DeepSeek官网 目前阶段&#xff0c;DeepSeek R1是不能直接生成图片的&#xff0c;但可以通过优化文本后转换为SVG或HTML代码&#xff0c;再保存为图片。另外&#xff0c;Janus-Pro是DeepSeek的多模态模型&#xff0c;支持文生图&#xff0c;但需要本地部署或者使用第三方工具。…...

ESP32 ESP-IDF TFT-LCD(ST7735 128x160) LVGL基本配置和使用

ESP32 ESP-IDF TFT-LCD(ST7735 128x160) LVGL基本配置和使用 &#x1f4cd;项目地址&#xff1a;https://github.com/lvgl/lv_port_esp32参考文章&#xff1a;https://blog.csdn.net/chentuo2000/article/details/126668088https://blog.csdn.net/p1279030826/article/details/…...

数据库连接池与池化思想

目录 1. 数据库连接池概述 1.1 什么是数据库连接池&#xff1f; 1.2 为什么需要连接池&#xff1f; 2. 池化思想 2.1 池化思想的优点 2.2 池化思想的典型应用 3. 常见的开源数据库连接池 3.1 DBCP 3.2 C3P0 3.3 Druid 4. Druid连接池的使用 4.1 Druid的特点 4.2 D…...

深度学习和机器学习的本质区别(白话版)

深度学习与机器学习的本质区别 在人工智能的世界里&#xff0c;机器学习和深度学习是两个常被提及的概念&#xff0c;但它们在本质上有着重要区别。简单来说&#xff0c;机器学习依赖于人为设定的数据模式&#xff0c;而深度学习则更依赖于数据本身自动发现模式。 机器学习&a…...