前段时间在学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()
首先说一下我对 app
、book
、sheet
这三个的理解
app
这个我理解的就是一个 进程,你可以试一下,把最后一行代码 app.kill()
注释掉,然后 Run,这个时候你再去看任务管理器,会有一个 Excel 的进程一直在那里
再和 pycharm 里面 print 的对比一下:
可以发现两个进程号是一样的,所以这个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 掉。你有更好的做法或者理解的话欢迎留言_