一、背景

有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. Python调用Java(基于Ubuntu 18.04)

    最近实习,需要使用Python编程,其中牵涉到一些算法的编写.由于不熟悉Python,又懒得从头学,而且要写的算法自己之前又用Java实现过,就想着能不能用Python调用Java.经过查找资料,方法 ...

  2. php获取快手视频id

    <?php $url = "http://www.gifshow.com/s/xxxxxx"; //初始化 $curl = curl_init(); //设置抓取的url c ...

  3. 虚拟机vbox给vdi增加容量到16G后的一系列操作

    虚拟机vbox给vdi增加容量到16G后的一系列操作windows 下:cmdVbox/bin下1.#VBoxManage modifyhd "cloned.vdi" --resi ...

  4. [MIT6.006] 10. Open Addressing, Cryptographic Hashing 开放定址,加密哈希

    前几节课讲散列表的时候,我们需要用Chaining,链接法需要用到指针pointer,但有一种方法可以不要Chaining和指针,还能在发生冲突时,为产生冲突的关键字寻找下一个"空" ...

  5. 与pandas初相识

    前一阵子有个同事说,他看不懂从kibana上拉下来的日志,但是又想分析一些数据,感觉很头痛,每次都找开发给他整理一下,但是开发也很忙,要数据的频率也略高,那时候正好我跟这位需求方的项目,负责测试工作. ...

  6. TensorFlow_笔记

    Tensorflow 1.基本概念 TensorFlow是一个编程系统,使用图(graphs)来表示计算任务,图(graphs)中的节点称之为op(operation),一个op获得0个或多个Tens ...

  7. 限流10万QPS、跨域、过滤器、令牌桶算法-网关Gateway内容都在这儿

    一.微服务网关Spring Cloud Gateway 1.1 导引 文中内容包含:微服务网关限流10万QPS.跨域.过滤器.令牌桶算法. 在构建微服务系统中,必不可少的技术就是网关了,从早期的Zuu ...

  8. 不要再说不会Spring了!Spring第一天,学会进大厂!

    工作及面试的过程中,作为Java开发,Spring环绕在我们的身边,很多人都是一知半解,本次将用14天时间,针对容器中注解.组件.源码进行解读,AOP概念进行全方面360°无死角介绍,SpringMV ...

  9. php(tp5)实现分页效果

    public function admin(){ if(request()->isPost()){ //获取第二页的数据传current = 2过来即可 $post['origin'] = in ...

  10. BUUCTF 不一样的flag writeup

    感谢BUUCTF提供的学习平台 https://buuoj.cn 题目:不一样的flag 工具:x64dbg 这是一道内存的迷宫题,迷宫是402000处的字符串 根据经验,这应该(a行*b列)的字符, ...