Python-进阶-Excel基本操作

news/2024/9/14 6:00:01/ 标签: python, excel, android

文章目录

    • Excel 基本操作
      • 1. 概述
      • 2. 写入
        • 2.1 使用 xlwt
        • 2.2 使用 XlsxWriter
      • 3. 读取
      • 4. 修改

Excel 基本操作

1. 概述

在数据处理方面,Python 一直扮演着重要的角色,对于 Excel 操作,它有着完整且成熟的第三方库,使用也较为简单。

Python 中常用 Excel 操作库如下:

  • xlrd:从 Excel 中读取数据,支持 xls、xlsx。
  • xlwt:向 Excel 中写入数据,支持 xls。
  • xlutils:提供了一些 Excel 的实用操作,比如复制、拆分、过滤等,通常与 xlrd、xlwt 一起使用。
  • XlsxWriter:向 Excel 中写入数据,支持 xlsx。
  • openpyxl :用于读写 Excel,支持 xlsx。

2. 写入

我们向 Excel 中写入一些数据。

2.1 使用 xlwt

xlwt:向 Excel 中写入数据,支持 xls。

在终端通过 pip install xlwt 命令安装。

python">import xlwt# 创建工作簿
wb = xlwt.Workbook()
# 创建表单
sh = wb.add_sheet('test')
# 创建字体对象
font = xlwt.Font()
# 字体加粗
font.bold = True
alm = xlwt.Alignment()
# 设置左对齐
alm.horz = 0x01
# 创建样式对象
style1 = xlwt.XFStyle()
style2 = xlwt.XFStyle()
style1.font = font
style2.alignment = alm
# write 方法参数1:行,参数2:列,参数3:内容
sh.write(0, 1, '姓名', style1)
sh.write(0, 2, '年龄', style1)
sh.write(1, 1, '张三')
sh.write(1, 2, 50, style2)
sh.write(2, 1, '李四')
sh.write(2, 2, 30, style2)
sh.write(3, 1, '王五')
sh.write(3, 2, 40, style2)
sh.write(4, 1, '赵六')
sh.write(4, 2, 60, style2)
sh.write(5, 0, '平均年龄', style1)
# 保存
wb.save('test.xls')

执行结果:
在这里插入图片描述

2.2 使用 XlsxWriter

XlsxWriter:向 Excel 中写入数据,支持 xlsx。

在终端通过 pip install XlsxWriter 命令安装。

python">import xlsxwriter# 创建工作簿
workbook = xlsxwriter.Workbook('test.xlsx')
# 创建表单
sh = workbook.add_worksheet('test')
fmt1 = workbook.add_format()
fmt2 = workbook.add_format()
# 字体加粗
fmt1.set_bold(True)
# 设置左对齐
fmt2.set_align('left')
# 数据
data = [['', '姓名', '年龄'],['', '张三', 50],['', '李四', 30],['', '王五', 40],['', '赵六', 60],['平均年龄', '', ]
]
sh.write_row('A1', data[0], fmt1)
sh.write_row('A2', data[1], fmt2)
sh.write_row('A3', data[2], fmt2)
sh.write_row('A4', data[3], fmt2)
sh.write_row('A5', data[4], fmt2)
sh.write_row('A6', data[5], fmt1)
chart = workbook.add_chart({'type': 'line'})
workbook.close()

XlsxWriter 可以很方便的生成图表。

python">import xlsxwriter# 创建工作簿
wk = xlsxwriter.Workbook('test.xlsx')
# 创建表单
sh = wk.add_worksheet('test')
fmt1 = wk.add_format()
fmt2 = wk.add_format()
# 字体加粗
fmt1.set_bold(True)
# 设置左对齐
fmt2.set_align('left')
# 数据
data = [['', '姓名', '年龄'],['', '张三', 50],['', '李四', 30],['', '王五', 40],['', '赵六', 60],['平均年龄', '', ]
]
sh.write_row('A1', data[0], fmt1)
sh.write_row('A2', data[1], fmt2)
sh.write_row('A3', data[2], fmt2)
sh.write_row('A4', data[3], fmt2)
sh.write_row('A5', data[4], fmt2)
sh.write_row('A6', data[5], fmt1)
'''
area:面积图
bar:直方图
column:柱状图
line:折线图
pie:饼图
doughnut:环形图
radar:雷达图
'''
chart = wk.add_chart({'type': 'line'})
# 创建图表
chart.add_series({'name':'=test!$B$1','categories':'=test!$B$2:$B$5','values':   '=test!$C$2:$C$5'}
)
chart.set_title({'name':'用户年龄折线图'})
chart.set_x_axis({'name':'姓名'})
chart.set_y_axis({'name':'年龄'})
sh.insert_chart('A9', chart)
wk.close()

执行结果:

在这里插入图片描述

3. 读取

xlrd:从 Excel 中读取数据,支持 xls、xlsx。

我们使用 xlrd 读取之前写入的数据,使用 pip install xlrd 命令安装。

python">import xlrd# 打开
wb = xlrd.open_workbook('test.xlsx')
print( 'sheet名称:', wb.sheet_names())
print( 'sheet数量:', wb.nsheets)
# 根据 sheet 索引获取 sheet
sh = wb.sheet_by_index(0)
# 根据 sheet 名称获取 sheet
# sh = wb.sheet_by_name('test')
print( u'sheet %s 有 %d 行' % (sh.name, sh.nrows))
print( u'sheet %s 有 %d 列' % (sh.name, sh.ncols))
print('第二行内容:', sh.row_values(1))
print('第三列内容:', sh.col_values(2))
print('第二行第三列的值为:', sh.cell_value(1, 2))
print('第二行第三列值的类型为:', type(sh.cell_value(1, 2)))

4. 修改

xlutils:提供了一些 Excel 的实用操作,比如复制、拆分、过滤等,通常与 xlrd、xlwt 一起使用。

之前写入的数据还有一个平均年龄是空着的,我们先读取之前写入的数据,再计算出平均值,最后将平均值写入。这里要用到 xlutils 模块,使用 pip install xlutils 安装。

python">import xlrd, xlwt
from xlutils.copy import copydef avg(list):sumv = 0for i in range(len(list)):sumv += list[i]return int(sumv / len(list))
# formatting_info 为 True 表示保留原格式
wb = xlrd.open_workbook('test.xls', formatting_info=True)
# 复制
wbc = copy(wb)
sh = wb.sheet_by_index(0)
age_list = sh.col_values(2)
age_list = age_list[1:len(age_list)-1]
avg_age = avg(age_list)
sh = wbc.get_sheet(0)
# 设置左对齐
alm = xlwt.Alignment()
alm.horz = 0x01
style = xlwt.XFStyle()
style.alignment = alm
sh.write(5, 2, avg_age, style)
wbc.save('test.xls')

执行结果:

在这里插入图片描述


http://www.ppmy.cn/news/1516918.html

相关文章

STM32 HAL SDADC DMA

1、简介 由于项目需要使用STM32F373单片机的SDADC功能对电位计进行检测,网上资料比较少,踩了很多坑,下面进行总结。 2、STM32CubeMX配置 2.1 RCC配置 2.2 SYS 配置 2.3 SDADC 2 配置 2.3.1 Parameter Settings配置 SDADC共有三种输入模式,分别为差分模式、 单端偏移模…

网络协议的基础知识

了解OSI模型和TCP/IP模型 在上一篇关于互联网的工作原理的数据传输中,我们了解到,两台计算机之间传输数据时,需要将数据封装成数据包。这些数据包中不仅包含我们实际要传输的信息,还包括很多额外的内容,比如目标地址、…

川崎机器人维修请开启马达电源报警故障

‌川崎机器人故障代码主要用于指示机器人的不同运行问题和状态,帮助快速识别和解决这些问题。‌Kasawaki机械手故障代码通常以字母和数字的组合形式出现,其中字母代表故障的类型,而数字则是具体的代码编号。这些代码可以分为‌P‌代表操作错误…

【网络安全】服务基础第一阶段——第三节:Windows系统管理基础----服务器远程管理与安全权限

服务器远程管理是一种技术,服务器远程管理是指通过远程连接来监控、配置和维护服务器的过程,而无需直接在物理服务器前操作。它允许IT管理员在不同的地点对服务器进行配置、监控和维护,无需物理上接触到服务器本身。这种能力对于管理分布在多…

android关于binder的简单通信过程

文章目录 简述aidl文件服务端的实现客户端的实现验证过程 简述 主要实现的是两个应用之间跨进程通信的过程,client端调用server端的具体实现,然后server端给client回调数据,详细如下所示 aidl文件 以下的文件需要在服务端与客户端都配置一…

Python | Linux | 解析Himawari-8/9 | Standard Data

写作前面 之前一个相关的工作需要解析Himawari-8/9 Standard Data文件,因为他是二进制的,之前没有处理过,导致完全摸不着头脑。在网上找了中英文搜索找了好久,虽然也找到了公开的解析代码,但是放在自己的数据这感觉总是…

Vue中使用el-table自定义序号翻页后又从1开始没有连续

在 ​​el-table​​​ 中,自定义序号列在翻页后会重新从 1 开始是因为每页的数据是重新渲染的,没有保留之前的序号。如果您希望在翻页后保持连续的序号,可以使用 ​​index​​ 属性来获取全局的行索引。 以下是一个示例,演示如…

如何在UE5.4中重新定位动画?

动画在游戏和电影制作中扮演着至关重要的角色,而在虚幻引擎5.4(UE5.4)这一强大的实时3D创作平台中,重新定位动画的能力更是将创意表达推向了新的高度。本文将引导您探索UE5.4中重新定位动画的技巧,确保您的动画作品不仅…

error on “nvm list available“, find the final solution by the Second error

error one Could not retrieve https://nodejs.org/dist/index.json. Get “https://nodejs.org/dist/index.json”: dial tcp 104.20.23.46:443: i/o timeout error two Error retrieving “http://npm.taobao.org/mirrors/node/index.json”: HTTP Status 404 PS D:\code…

基于Python的机器学习系列(13):Bagging

在上一篇文章中,我们讨论了决策树的原理及其在分类任务中的应用。然而,单一的决策树模型往往容易过拟合,导致泛化能力较差。为了减小模型的方差,我们可以通过构建多个决策树来提升模型的表现。这种方法被称为Bagging(B…

OPTICS算法原理及Python实践

OPTICS(Ordering Points To Identify the Clustering Structure)算法是一种基于密度的聚类算法,它的核心思想是通过计算数据点之间的密度关系,自动发现数据中的层次结构,而无需预先设定簇的数量。以下是OPTICS算法原理…

OpenCV入门12.2:SURF与SIFT比较及SURF示例

SIFT (Scale-Invariant Feature Transform): 提出时间: 1999年,由David Lowe提出。关键特点: 能够检测和描述图像中的关键点,这些关键点对旋转、缩放和部分亮度变化具有不变性。计算复杂度: 相对较高,因为SIFT使用了高斯差分核来检测关键点&…

C++ 136类和对象_面像对像_多态_虚析构和纯虚析构

136类和对象_面像对像_多态_虚析构和纯虚析构 学习内容 1.抽象类 2.虚函数 3.纯虚函数 /4.虚析构 和 纯虚析构 总结: 1.虚析构或纯虚析构就是用来解决通过父类指针释放子类对象 2.如果子类中没有堆区数据,可以不写为虚析构或纯虚析构 3.拥有纯虚析构函数的类也属于…

缓存三剑客(穿透,雪崩,击穿)理解

缓存穿透 概念理解 缓存穿透正如其名穿透,说明访问的数据在缓存和数据库里都没用,而且此时还大量的发起了访问,导致数据库崩溃 解决方法 一、第一种解决方法就是保存空值在数据库里面,但是这种情况会很消耗空间 二、第二种办…

利用Python对Excel数据进行条件筛选与排序

目录 一、Python与Excel数据处理的基础知识 1.1 Python中的Excel数据处理库 1.2 pandas库简介 二、使用pandas读取Excel数据 三、Excel数据的条件筛选 3.1 单条件筛选 3.2 多条件筛选 3.3 使用query方法 四、Excel数据的排序 4.1 单列排序 4.2 多列排序 五、案例分…

python模块05-json

3 请求数据提取:json 3.1 json类型数据 json对象:{key:calue} json数组:[1,2,3,4] 3.2 json模块 1) json.loads 把Json格式字符串解码转换成Python对象(json数组对应列表,json对象对应字典&#xff09…

Jenkins发邮件功能如何配置以实现自动化?

jenkins发邮件的设置指南?Jenkins怎么配置服务器? Jenkins作为一个流行的自动化服务器,其发邮件功能是通知团队成员构建状态的重要手段。AokSend将详细介绍如何配置Jenkins发邮件功能,以实现自动化通知。 Jenkins发邮件&#xf…

『 C++ 』线程库

文章目录 线程库线程的创建与销毁成员函数this_thread 命名空间线程的引用传值 互斥锁互斥锁的基本操作递归锁(可重入锁)定时互斥锁互斥锁管理器与互斥锁抛异常所引发的死锁问题 条件变量条件变量的等待条件变量的唤醒两个线程交替打印奇偶数 线程库 C标准库提供了一套完整的线…

探索 AWS Lightsail 与 EC2:如何选择适合你的云计算服务?

探索 AWS Lightsail 与 EC2:如何选择适合你的云计算服务? 随着云计算的广泛应用,AWS 提供了多种计算服务以满足不同的用户需求。对于初次接触 AWS 的用户来说,可能会在选择 AWS Lightsail 和 EC2 时感到困惑。这两者都提供了虚拟…

webpack打包优化方案

调试工具:安装webpack-bundle-analyzer打包可视化工具,可以看到打包文件大小,从而有针对性的优化。 npm install --save-dev webpack-bundle-analyzer。 方案一:将第三方依赖包使用cdn进行引入减小文件包体积(例&…