【Python】如何在 Python 中操作 Excel

Python 操作 Excel 文件

1. 常用的几种库

  1. xlrd和xlwt库
    • xlrd:用于读取Excel文件。
    • xlwt:用于写入Excel文件。
    • 这两个库通常一起使用,xlrd用于读取,xlwt用于写入,但它们不支持Excel 2007及以后的.xlsx格式。
  2. openpyxl库
    • 适用于.xlsx格式的Excel文件读写。
    • 支持读写Excel公式,样式等高级特性。
  3. xlsxwriter库
    • 主要用于写入.xlsx格式的Excel文件。
    • 提供丰富的特性,如写入图片、图表等。
  4. pandas库
    • pandas是一个强大的数据分析库,它提供了非常便捷的数据读取和写入功能,支持多种格式,包括Excel。
    • 使用pandasread_excelto_excel函数可以方便地对Excel文件进行操作。

2. 使用xlrdxlwt读取和写入Excel

2.1 基础应用示例

import xlrd
from xlwt import Workbook
# 读取Excel
rb = xlrd.open_workbook('example.xls')
sheet = rb.sheet_by_index(0)
for row_index in range(sheet.nrows):print(sheet.row_values(row_index))
# 写入Excel
wb = Workbook()
ws = wb.add_sheet('Sheet1')
ws.write(0, 0, 'Hello')
wb.save('example.xls')

2.2 xlrd库的额外功能:

  • 可以读取单元格的数据类型,如日期、数字、字符串等。
  • 支持读取单元格的格式信息,如字体、颜色、边框等。
  • 可以读取Excel文件的批注。
  • 允许设置单元格的字体、边框、背景色等样式。
  • 支持在不同的单元格中写入不同的数据类型。
  • 可以冻结窗格,设置列宽和行高。
2.2.1 示例: 设置单元格样式
from xlwt import XFStyle, Pattern
# 创建样式
style = XFStyle()
pattern = Pattern()
pattern.pattern = Pattern.SOLID_PATTERN
pattern.pattern_fore_colour = 5  # 设置背景色
style.pattern = pattern
# 应用样式
ws.write(0, 0, 'Styled Cell', style)

3. 使用openpyxl读取和写入Excel

3.1 基础应用示例

from openpyxl import Workbook, load_workbook
# 写入Excel
wb = Workbook()
ws = wb.active
ws['A1'] = 'Hello'
wb.save('example.xlsx')
# 读取Excel
wb = load_workbook('example.xlsx')
ws = wb.active
for row in ws.iter_rows(values_only=True):print(row)

3.2 openpyxl的高级功能:

  • 支持大型Excel文件的读取和写入。
  • 可以使用数据验证功能,限制用户输入的值。
  • 支持条件格式化,可以根据单元格的值自动改变其样式。
3.2.1 示例: 添加数据验证
from openpyxl import Workbook
from openpyxl.worksheet.datavalidation import DataValidation
# 创建工作簿和工作表
wb = Workbook()
ws = wb.active
# 添加数据验证
dv = DataValidation(type="list", formula1='"Dog,Cat,Bird"', allow_blank=True)
ws.add_data_validation(dv)
dv.add(ws['A1'])
# 写入数据
ws['A1'] = 'Cat'
wb.save('example.xlsx')

4. 使用xlsxwriter写入Excel

4.1 基础应用示例

import xlsxwriter
# 创建一个Excel文件并添加一个工作表
workbook = xlsxwriter.Workbook('example.xlsx')
worksheet = workbook.add_worksheet()
# 写入数据
worksheet.write('A1', 'Hello')
# 关闭文件
workbook.close()

4.2 xlsxwriter库的图表和图片功能

4.2.1 xlsxwriter的图表功能:
  • 可以创建多种类型的图表,如柱状图、折线图、饼图等。
  • 支持图表的自定义,如设置标题、轴标签、图例等。
4.2.2 示例: 创建柱状图
import xlsxwriter
# 创建工作簿和工作表
workbook = xlsxwriter.Workbook('example.xlsx')
worksheet = workbook.add_worksheet()
# 添加数据
data = [[1, 2, 3, 4, 5],[2, 4, 6, 8, 10],[3, 6, 9, 12, 15]
]
# 创建柱状图
chart = workbook.add_chart({'type': 'column'})
# 添加数据系列
chart.add_series({'values': '=Sheet1!$A$1:$A$5','name': 'First Series',
})
chart.add_series({'values': '=Sheet1!$B$1:$B$5','name': 'Second Series',
})
# 将图表插入到工作表中
worksheet.insert_chart('E2', chart)
# 写入数据
for row_num, row_data in enumerate(data):worksheet.write_row(row_num, 0, row_data)
workbook.close()

5. 使用pandas读取和写入Excel

5.1 基础应用示例

import pandas as pd
# 读取Excel
df = pd.read_excel('example.xlsx')
print(df)
# 写入Excel
df.to_excel('example.xlsx', index=False)

在使用这些库之前,需要通过pip安装它们:

pip install xlrd xlwt openpyxl xlsxwriter pandas

5.2 pandas库的数据分析能力

5.2.1 pandas的数据分析功能:
  • 提供了丰富的数据处理方法,如合并、筛选、分组、聚合等。
  • 可以轻松处理时间序列数据。
  • 支持多种文件格式的读写,包括CSV、Excel、SQL数据库等。
5.2.2 示例: 使用pandas进行数据筛选和聚合
import pandas as pd
# 读取Excel文件
df = pd.read_excel('example.xlsx')
# 筛选数据
filtered_df = df[df['Column1'] > 10]
# 聚合数据
aggregated_df = df.groupby('Column2').sum()
# 输出结果
print(filtered_df)
print(aggregated_df)

6. 综合示例

以下是一个示例 python 程序,先检查是否存在 Example.xlsx 文件,若不存在则创建并命名为 Example.xlsx,然后读取该文件,若文件为空则在该文件第一行第一列第二列单元格中分别写入Hello、world;若不为空,则在原有文件内容下一行追加,设置行高为24,单元格颜色为浅绿色,字体为Arial。

import os
from openpyxl import Workbook, load_workbook
from openpyxl.styles import Font, PatternFill
# 文件名
file_name = "Example.xlsx"
# 检查文件是否存在
if not os.path.exists(file_name):# 创建一个新的Excel文件wb = Workbook()ws = wb.active# 写入"Hello"和"world"ws.append(["Hello", "world"])# 设置行高ws.row_dimensions[1].height = 24# 设置单元格颜色和字体for cell in ws[1]:cell.fill = PatternFill(start_color='90EE90', end_color='90EE90', fill_type='solid')cell.font = Font(name='Arial', size=12)
else:# 读取现有的Excel文件wb = load_workbook(file_name)ws = wb.active# 在下一行追加"Hello"和"world"ws.append(["Hello", "world"])# 设置行高ws.row_dimensions[ws.max_row].height = 24# 设置单元格颜色和字体for cell in ws[ws.max_row]:cell.fill = PatternFill(start_color='90EE90', end_color='90EE90', fill_type='solid')cell.font = Font(name='Arial', size=12)
# 保存文件
wb.save(file_name)

在选择库时,应考虑以下因素:

  • 文件格式:.xls还是.xlsx
  • 需求复杂度:简单的读写还是需要数据分析、格式化等高级功能。
  • 性能要求:处理大型文件时,库的性能也是一个重要的考虑因素。

每种库都有其独特的优势和适用场景,根据实际需求灵活选择。如果你需要进行复杂的数据分析,pandas可能是最佳选择。如果你需要创建格式化程度较高的Excel报告,xlsxwriter可能是更好的选择。如果你只需要简单的读写操作,openpyxl就足够了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50566.shtml

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

相关文章

Linux的yum源安装MySQL5.7

linux的yum源安装MySQL5.7 一、MySQL 1、简介 MySQL 是一种流行的关系型数据库管理系统(RDBMS),由瑞典公司 MySQL AB 开发,后来被 Oracle Corporation 收购。它是一个开源软件,提供了高效、稳定和可靠的数据管理解决…

【Spring Framework】Spring 事务使用的完整示例

为了详细展示 Spring 事务的使用,我将提供一个完整的示例,包括配置、代码和说明。这将涵盖以下几个方面: 数据库配置:包括数据源和事务管理器的配置。实体类:用于数据库操作的数据模型。DAO 层:数据访问对…

Android SurfaceFlinger——GraphicBuffer的提交(三十三)

在 SurfaceFlinger 中,我们 dequeueBuffer 和 queueBuffer 是 Surface 控制接口中非常重要的两个函数,分别用于从 Surface 的 BufferQueue 中取出缓冲区和向 BufferQueue 提交(队列)缓冲区。这两个函数在生产者和消费者模型中扮演着核心角色,确保了图像数据的高效和有序传…

消息队列原理题库

1. 简述什么是消息队列 ? 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。 消息队列(Message Queue)是一种应用间…

【算法】子集

难度:中等 题目: 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的 子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2,3] 输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 示例 2: 输入…

Spring AI (三) 提示词对象Prompt

3.提示词对象Prompt 3.1.Prompt Prompt类的作用是创建结构化提示词, 实现了ModelRequest<List<Message>>接口 Prompt(String contents)&#xff1a;创建一个包含指定内容的Prompt对象。 Prompt(String contents, ChatOptions modelOptions)&#xff1a;创建一个…

某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]

文章目录 某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内…

DolphinDB Web 端权限管理:可视化操作指南

在现代数据库管理中&#xff0c;高效和直观的权限管理对于用户的数据安全是至关重要的。过去 DolphinDB 用户需要依赖系统脚本来管理用户和权限&#xff0c;这对于缺乏技术背景的管理员来说既复杂又容易出错。 为了提升用户体验和操作效率&#xff0c;DolphinDB 目前在 Web 上…

数据库设计三范式

文章目录 数据库设计三范式第一范式第二范式第三范式一对一怎么设计主键共享外键唯一 一对多怎么设计多对多怎么设计 数据库设计三范式 数据库表设计的原则。教你怎么设计数据库表有效&#xff0c;并且节省空间。 如果客户有速度要求极致&#xff0c;可以不用。根据客户需求来 …

vue3中动态添加form表单校验

<template><div><div v-for"(formData, index) in forms" :key"index"><u-form :model"formData" :rules"rules" ref"formRefs"><u-form-item label"用户名" prop"username"…

MySQL数据库练习(5)

1.建库建表 # 使用数据库 use mydb16_trigger;# 表格goods create table goods( gid char(8) primary key, name varchar(10), price decimal(8,2), num int);# 表格orders create table orders( oid int primary key auto_increment, gid char(10) not null, name varchar(10…

scrapy 爬取旅游景点相关数据(一)

第一节 Scrapy 练习爬取穷游旅游景点 配套视频可以前往B站&#xff1a;https://www.bilibili.com/video/BV1Vx4y147wQ/?vd_source4c338cd1b04806ba681778966b6fbd65 本项目为scrapy 练手项目&#xff0c;爬取的是穷游旅游景点列表数据 0 系统的环境 现在网上可以找到很多scr…

其它------

这里写目录标题 一级目录二级目录三级目录 一级目录 二级目录 三级目录

Pytorch使用教学6-张量的分割与合并

在使用PyTorch时&#xff0c;对张量的分割与合并是不可避免的操作&#xff0c;本节就带大家深刻理解张量的分割与合并。 在开始之前&#xff0c;我们先对张量的维度进行深入理解&#xff1a; t2 torch.zeros((3, 4)) # tensor([[0., 0., 0., 0.], # [0., 0., 0., 0.…

异或和+博弈论

1.最后状态a1a2a3...an0,显然a1^a2^a3...^an0 2.对ai操作&#xff0c;变成new ai,等价于ai异或一个数字x,使得ai^xnew ai 3.因此得出结论&#xff1a;对某一堆石子(ai)的操作实际上等同于对该堆石子的异或 4.当前我的状况&#xff1a;a1^a2^a3...^an0,假设上一步,你的状况a1^a2…

C语言边界互通传送迷宫

目录 注意事项开头程序程序的流程图程序输入与输出的效果结尾 注意事项 程序里有关字符’\033’的输出都关于Sunshine-Linux的其中一篇博客——《printf函数高级用法设置打印字体颜色和背景色等》 开头 大家好&#xff0c;我叫这是我58。今天&#xff0c;我们来看一下我用C语…

现代Java开发:使用jjwt实现JWT认证

前言 jjwt 库 是一个流行的 Java 库&#xff0c;用于创建和解析 JWT。我在学习spring security 的过程中看到了很多关于jwt的教程&#xff0c;其中最流行的就是使用jjwt实现jwt认证&#xff0c;但是教程之中依然使用的旧版的jjwt库&#xff0c;许多的类与方法已经标记弃用或者…

“分布式” 和 “集群”

“分布式” 和 “集群” 是计算机系统领域中的两个重要概念&#xff0c;它们在设计和实现现代计算架构时经常被提到。虽然它们有重叠之处&#xff0c;但也有显著的区别。 集群&#xff08;Cluster&#xff09; 集群 是由多个计算节点&#xff08;通常是计算机或服务器&#x…

国科大《人工智能原理与算法》2021年期末试题+2024经验(2025指南)

启发式路径算法(Pohl,1977)是一种最佳优先搜索,它的评估函数是: f(n)=(2−w)⋅g(n)+w⋅h(n)f(n)=(2−w)⋅g(n)+w⋅h(n) 假设 hh 是可采纳的。 ww 取什么值能保证算法是最优的?当 w=0w=0,w=1w=1,w=2w=2 时,分别是什么搜索算法?本题以并字棋(圈与十字游戏)为例练习博…

InsCode GPU服务器快速使用

文章目录 1. 背景介绍2. 环境配置 1. 背景介绍 InsCode服务器地址&#xff1a;https://inscode.csdn.net/workbench?tabcomputed。 2. 环境配置 新建环境后&#xff0c;按照如下步骤快速配置&#xff0c;以便后续执行深度学习模型训练。 数据 openlane 环境依赖 Copy Mini…