Python学习随笔:使用xlwings读取和操作Execl文件
一、背景
有2种模块可以对Execl文件,一种是xlwt 方式,需要安装三个库文件 xlrd(读Excel)xlwt(写Excel)xlutils(修改Excel),也是网上介绍文章最多的一种方法,一种是xlwings方式,只要安装一个库文件。第一种方式将读写修改分模块,支持Excel表格样式设计,第二种方式不支持表格样式设计,支持对Excel进行读写操作。由于老猿目前只要用Execl进行读操作,同时觉得装一个库文件简单,因此选择的是xlwings方式。
二、软件安装
才开始使用pip install xlwings安装,结果超时了,果断改成了使用国内的镜像来安装,很快完成,命令为:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xlwings
三、库文件相关文档
xlwings库官方地址:https://docs.xlwings.org/en/stable/
四、xlwings库主要操作方法
1、设置Excel操作模式
1)语法:App(visible=False, add_book=False)
2)语法释义:表示处理过程是否可视,也就是处理Excel的过程会不会显示出来,即是否出现Excel的界面,add_book表示是否打开新的Excel程序,也就是是不是打开一个新的excel窗口,如果为True,且visible为True,则立即打开一个空白的Excel。。
2、打开文件
1)方法1:app.books.open(文件名),其中的app为设置Excel操作模式中App方法返回的结果
2)方法2:Book(文件名)
这两种方法打开文件返回的结果类型是相同的,类型为xlwings.main.Book,二者的差别经验证测试,发现如果是在对应文件已经打开的情况下,使用app.books.open再去打开可以重复打开,但Book不会重复打开。且如果是一个程序内多次调用app.books.open打开同一个文件也不会重复打开。
测试代码:
>>> import xlwings as Excel
>>> from time import sleep
>>> def openexcel(visible=False, add_book=False)
app = Excel.App(visible, add_book)
print("app created!")
f1=app.books.open(r"c:\temp\csdn积分数据.xls")
print("f1 opened!")
sleep(2)
f2=app.books.open(r"c:\temp\csdn积分数据.xls")
print("f2 opened!")
sleep(2)
f3 = Excel.Book(r"c:\temp\csdn积分数据 - 副本.xls")
print("f3 opened!")
sleep(2)
f4 = Excel.Book(r"c:\temp\csdn积分数据 - 副本.xls")
print("f4 opened!")
>>> openexcel(True,True)
app created!
f1 opened!
f2 opened!
f3 opened!
f4 opened!
>>> openexcel(True,True)
app created!
f1 opened!
f2 opened!
f3 opened!
f4 opened!
3.文件打开后的访问
假设文件打开后的返回结果为f,则打开文件后:
1)访问Excel的sheet
sheet = f.sheets[index]
或者
sheet = f.sheets[‘sheet名’]
注意:index是sheet页的序号,从0开始。
2)访问sheet的记录数
sheet.used_range.last_cell.row
3)访问sheet的列数
sheet.used_range.last_cell.column
4)获取i行j列的数据
value = sheet.range(i,j).value
5)获取i行j列开始到j+10列的数据
value = sheet.range((i,j),(i,j+10)).value
6)读取第i行整行
value = sheet.range(‘Ai’).expand(‘right’).value
或
value = sheet.range(i,1).expand(‘right’).value
6)读取第k列整列
value = sheet.range(‘k1’).expand(‘down’).value
或
alue = sheet.range(1,k).expand(‘down’).value
7)读取整个sheet的数据
data = sheet.range(‘A1’).expand().value
4、sheet内容写入:
直接对sheet数据赋值,将读取语句的方式改成赋值就可以了,如果写入位置原来有数据,将被写入数据覆盖。
1)i行j列写入
sheet.range(i,j).value = value
2)写入i行j列开始到j+10列的数据
sheet.range((i,j),(i,j+10)).value = values
其中values为一个有11个元素的列表。
3)第i行写入整行
sheet.range(i,1).expand(‘right’).value = values
4)第k列写入整列
sheet.range(1,k).options(transpose=True).value = values
5、文件保存
f.save(文件名)
如果没有文件名参数保存到打开的Excel文件中,如果给定文件名参数则保存到该指定文件名对应文件,该文件可以是已经打开的文件也可以是另一文件。
6、文件访问后关闭
f.close()
7、终结应用
app.quit()
五、Excel文件读取案例
>>> def readExcel(filename,sheetname):
excelApp = excel.App(False,False)
excelFile = excelApp.books.open(filename)
sheet = excelFile.sheets[sheetname]
rowCount = sheet.used_range.last_cell.row
colCount = sheet.used_range.last_cell.column
for line in range(1,rowCount+1):yield sheet.range(line,1).expand('right').value
excelFile.close()
excelApp.quit()
excelApp.kill() #有时quit退出不成功可以使用kill
>>> for line in readExcel(r"c:\temp\csdn积分数据.xls",0):print(line)
博客地址:https://blog.csdn.net/LaoYuanPython
老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036
Python学习随笔:使用xlwings读取和操作Execl文件的更多相关文章
- Python学习随笔:使用xlwings读取和操作Execl文件的数字需要注意的问题
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在使用xlwings读取Excel文件中的数据时,所有的数字不论是整数.浮点数还是文本存放的数字,在 ...
- Python学习随笔:使用xlwings设置和操作excel多行多列数据以及设置数据字体颜色填充色对齐方式的方法
☞ ░ 前往老猿Python博文目录 ░ 在前面老猿的文章中,<Python学习随笔:使用xlwings读取和操作Excel文件>.<Python学习随笔:使用xlwings读取和操 ...
- Python 学习随笔 - 1 - 基础数据类型、变量 及 基本运算
仅有的C语言的基础都是大学时学的: 准备赶潮流,开始学习Python. 随笔记录学习过程中,靠一点点C语言基础难以去理解的地方,以及区别于C语言的地方,做些笔记作为以后参考. Python 解释器直接 ...
- Java学习笔记(二)——Java操作properties文件
[前面的话] 前段时间在学习和玩java web相关的东西,对于这些技术,一边学习,一边做东西,一边总结,希望可以一边成长和有所收获.有时总是思考太多反而成为了前进的阻力,所以对于生活还是简单一些,不 ...
- Python学习笔记3-文件的简单操作
Python中的文件操作 Python中文件打操作离不开两个模块 os 和 shutil os:操作文件.目录: Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话, ...
- Python学习笔记【第七篇】:文件及文件夹操作
介绍 我们用pytthon.C#.Java等这些编程语言,想要把文件(文字.视频....)永久保存下来就必须将文件写入到硬盘中,这就需要我们应用程序去操作硬件,我们这些编程语言是无法直接操作硬件的. ...
- python学习笔记(十):操作excel
一.python操作excel,python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的 ...
- python学习随笔(一)
我是为记录学习python的过程而开通了博客,希望以后自己能看看,也希望能分享一些给初学者. 话不多说,开始第一篇. (一)python解释器. python2和3,现在python2是主流,但是py ...
- python学习笔记(九):操作数据库
我们在写代码的时候,经常会操作数据库,增删改查,数据库有很多类型,关系型数据库和非关系数据库,这里咱们介绍一下python怎么操作mysql.redis和mongodb. 一.python操作mysq ...
随机推荐
- (5)ASP.NET Core3.1 Ocelot服务质量
1.服务质量(Quality of Service) 对于微服务来说,熔断就是我们常说的"保险丝",意思是当服务出现某些状况时候,通过切断服务防止应用程序不断地执行可能会失败的操作 ...
- Statistical physics approaches to the complex Earth system(相关系统建模理念方法的摘要)
本文翻译自"Statistical physics approaches to the complex Earth system",其虽然是针对复杂地球系统的统计物理方法的综述,但 ...
- jupyter使用自动补全和切换默认浏览器
自动补全 可以做conda环境中执行以下命令.linux下打开conda环境的命令是: conda activate 退出conda环境的命令是: conda deactivate 安装插件: pip ...
- 手把手教你使用Vuex(一)
1.定义 vuex 是一个专门为vue.js应用程序开发的状态管理模式. 这个状态我们可以理解为在data中的属性,需要共享给其他组件使用的部分.也就是说,是我们需要共享的data,使用vuex进行统 ...
- Python_图解教程
说明:本教程用图片+源码讲解Python常见的问题,共勉! 1.Python包的调用 # coding:utf8 # from pakge.mymodel import test from bao ...
- spring cloud gateway 启动报错,Failed to bind on [0.0.0.0:xxx] bind(..) failed: 权限不够
最近把操作系统迁移到了deepin,不得不说Linux中需要学习的还是有很多的,本地启动网关的时候就遇到一个坑,特此记录一下,报错信息. Caused by: reactor.netty.Channe ...
- 最全JVM与性能调优知识点总结,看看哪些是你还没掌握的?
前言 JVM调优是每个高级程序员的必修课,在本章中,我会从发展过程以及核心价值来剖析JVM的体系结构.为了让大家更好的理解JVM的工作机制, 我会在讲解完运行时数据区之后,再通过一个类的加载过程到这个 ...
- 制作视频教程,用Camtasia你也可以
一直以来,每当我在电脑使用过程中有不会的地方,往往我就会通过百度或者b站寻找教程,尤其是视频教程来学习,这样我往往就可以快速的学会相应的操作.当朋友在qq或者微信问我们一些操作时,我们却不能向他们提供 ...
- MathType怎么写分段函数?
分段函数是数学里面特有的一种函数,它是对于自变量x的不同的取值范围,有着不同的解析式的函数.它的特点就是有一个大括号,然后有至少2个函数解析式,写这样的函数离不开专业的公式编辑器,下面就来学习具体编辑 ...
- Jmeter (三)变量、参数化、函数
一.参数化 1.在参数中定义变量:${变量名称} 变量定义:2种 2.在用户自定义变量User Defined Variable 或者 用户参数User Parameters中,设置key.value ...