欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python使用xlwings处理excel遇到的问题

程序员文章站 2024-02-23 19:39:16
...

前段时间在学python可视化,因为要操作excel,所以就了解了几个常用的python处理excel数据的库,开始我用的是 xlrd/xlwt,但是后来发现这个库好像功能不是很强大,然后又改用 xlwings,这个库功能比较完备,据说性能也更好一点。

首先如何导入一个excel

import xlwings as xw
app = xw.App(visible=False, add_book=False)
book = app.books.add()		# 新建一个book
#book = app.books.open('d:\test.xlsx')		# 打开一个存在的 book
print(book.fullname) 		# 测试 1,打印文件绝对路径
print(book.app) 		 	# 测试 2,查看进程
sheet = book.sheets[0]		# 或者 sheet = book.sheets['sheet1']
sheet.range('A1').value = 'Hello'
sheet.range(2,1).value = 'World!'
book.save(r'd:\test.xlsx')
app.kill()

首先说一下我对 appbooksheet 这三个的理解

app
这个我理解的就是一个 进程,你可以试一下,把最后一行代码 app.kill() 注释掉,然后 Run,这个时候你再去看任务管理器,会有一个 Excel 的进程一直在那里
python使用xlwings处理excel遇到的问题
再和 pycharm 里面 print 的对比一下:
python使用xlwings处理excel遇到的问题
可以发现两个进程号是一样的,所以这个app就是你创建的一个用来处理 Excel 的进程。

book
这个我理解的就是一个 Excel 表

sheet
Excel 里面一个个的 sheet,一般第一个sheet 默认名字都是 sheet1,打开的时候根据名字和序号都可以

来看上面这段代码

首先是 app = xw.App(visible=False, add_book=False)
这行代码就是打开一个操作Excel的进程,第一个参数 visible 作用是控制这个进程是否显示在前台,如果设置为 False 的话,那么这个进程将只会在后台运行,你可以打开任务管理器查看到这个 Excel 进程;True 的话你在 run 这个 .py 的时候可以看到下方任务栏有一个 Excel 一闪而过

创建一张表格 book = app.books.add()

或者引入 book = app.books.open('d:\test.xlsx')

然后 sheet.range()获取一个个的 cell,获取的方式有很多种,当然也可以一次获取很多个 cell,网上这方面标称比较多,我就不写了,我主要写网上很难查到的东西。

最后就是保存和退出,这一部分我在网上看到的很多是这样子写:

book.save()
book.close()
app.quit()

但是我这样子试了好像有问题的。运行后要等很久才会停止,而且后台 Excel 进程也会一直运行,如果你操作了很多次,那么后台就会有一大堆 Excel 进程。

所以我直接 save 然后 kill 掉。你有更好的做法或者理解的话欢迎留言_