一、背景

有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文件的更多相关文章

  1. Python学习随笔:使用xlwings读取和操作Execl文件的数字需要注意的问题

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在使用xlwings读取Excel文件中的数据时,所有的数字不论是整数.浮点数还是文本存放的数字,在 ...

  2. Python学习随笔:使用xlwings设置和操作excel多行多列数据以及设置数据字体颜色填充色对齐方式的方法

    ☞ ░ 前往老猿Python博文目录 ░ 在前面老猿的文章中,<Python学习随笔:使用xlwings读取和操作Excel文件>.<Python学习随笔:使用xlwings读取和操 ...

  3. Python 学习随笔 - 1 - 基础数据类型、变量 及 基本运算

    仅有的C语言的基础都是大学时学的: 准备赶潮流,开始学习Python. 随笔记录学习过程中,靠一点点C语言基础难以去理解的地方,以及区别于C语言的地方,做些笔记作为以后参考. Python 解释器直接 ...

  4. Java学习笔记(二)——Java操作properties文件

    [前面的话] 前段时间在学习和玩java web相关的东西,对于这些技术,一边学习,一边做东西,一边总结,希望可以一边成长和有所收获.有时总是思考太多反而成为了前进的阻力,所以对于生活还是简单一些,不 ...

  5. Python学习笔记3-文件的简单操作

    Python中的文件操作 Python中文件打操作离不开两个模块  os 和 shutil os:操作文件.目录: Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话, ...

  6. Python学习笔记【第七篇】:文件及文件夹操作

     介绍 我们用pytthon.C#.Java等这些编程语言,想要把文件(文字.视频....)永久保存下来就必须将文件写入到硬盘中,这就需要我们应用程序去操作硬件,我们这些编程语言是无法直接操作硬件的. ...

  7. python学习笔记(十):操作excel

    一.python操作excel,python操作excel使用xlrd.xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的 ...

  8. python学习随笔(一)

    我是为记录学习python的过程而开通了博客,希望以后自己能看看,也希望能分享一些给初学者. 话不多说,开始第一篇. (一)python解释器. python2和3,现在python2是主流,但是py ...

  9. python学习笔记(九):操作数据库

    我们在写代码的时候,经常会操作数据库,增删改查,数据库有很多类型,关系型数据库和非关系数据库,这里咱们介绍一下python怎么操作mysql.redis和mongodb. 一.python操作mysq ...

随机推荐

  1. 2、Django源码分析之启动wsgi发生了哪些事

    一 前言 Django是如何通过网络socket层接收数据并将请求转发给Django的urls层? 有的人张口就来:就是通过wsgi(Web Server Gateway Interface)啊! D ...

  2. uni-app 动态控制下拉刷新

    扫码查看原文,搜索uni-app 动态控制下拉刷新: 前置条件: 开发环境:windows 开发框架:uni-app , H5+,nativeJS 编辑器:HbuilderX 2.8.13 4.兼容版 ...

  3. 客户的一个紧急bug,我用了两种方式进行 C# 反编译修改源码

    一:背景 1. 讲故事 周五下午运营反馈了一个紧急bug,说客户那边一个信息列表打不开,急需解决,附带的日志文件也发过来了,看了下日志大概是这样的: 日期:2020-11-13 12:25:45,92 ...

  4. windows10 vs2017编译opencv_contrib3.4.7的小坑及编译好的资源

    1.注意要用正斜杠  /    不要用 \  https://github.com/opencv/opencv/issues/11655 CMake Error at cmake/OpenCVModu ...

  5. Exactly Once 语义

    将服务器的 ACK 级别设置为-1,可以保证 Producer 到 Server 之间不会丢失数据,即 At Least Once 语义. 相对的,将服务器 ACK 级别设置为 0,可以保证生产者每条 ...

  6. 极客mysql06

    两阶段锁:在 InnoDB 事务中,行锁是在需要的时候才加上的,但并不是不需要了就立刻释放, 而是要等到事务结束时才释放. 建议:如果你的事务中需要锁多个行,要把最可能造成锁冲突.最可能影响并发度的锁 ...

  7. CSS 常用列表样式

    CSS 常用列表样式 CSS没学扎实,复习记录一下.下面是一些常用的属性 list-style-image 指定一个图片作为列表项的标记 默认值none,可设置为图片的url list-style-i ...

  8. SNMP介绍及使用,超有用,建议收藏!

    写在前面 如果你是对SNMP完全不了解,或者只想学习如何使用现成的SNMP工具,那你找对了文章,但如果你希望学习SNMP具体协议内容,推荐阅读官方的RFC文档. 1. 简介 SNMP(Simple N ...

  9. go编译成exe后,打开出现闪退问题

    今天博主编译了一个go小脚本,编译完成后用自己电脑试了一下没有问题 然而,当换了一台电脑后,一样是win7系统64位,出现了闪退 于是乎博主疯狂百度 看到网上说   入口文件 的顶部改成  packa ...

  10. php 抛出异常

    <?php //try里面执行的东西如果不成立,可直接 throw new Exception('异常信息'),那么try里面的程序将会被停止执行,直接执行catch里面的程序 try { if ...