您现在的位置: 主页 > 上位机技术 > python > excel中想实现使用Python代替VBA,请问应该怎么做?
本文所属标签:
为本文创立个标签吧:

excel中想实现使用Python代替VBA,请问应该怎么做?

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-08-13 

问题描述如下:

前提:因使用VBA代码可读性和 扩展性差,想用Python实现,以提高 复用率。
目前的想法是 在Excel中写入基础信息,执行宏时,VBA中通过库调用Python代码,生成统计数据,请问可以使用什么库来实现?

参考答案如下:

维护一个基于Excel的项目5年的苦逼怒答。“python(或者其他什么语言)操作excel”文件,按是否依赖Excel,可以分为两类。

第一类,excel文件只是用来存储数据,python对它的操作只是读和写。这种时候,对文件的操作不需要依赖Excel,你的机器上没有excel也能执行。在这种场景下,csv,txt等Excel支持的文本文件格式,都是很好的选择。这种情况,所谓的"python读写excel文件",实际上就是python读写文本文件,无非是这个文本文件是有一定格式的,找个csv的类库处理能事半功倍。如果csv/txt太过简单,文件内需要多个worksheet,那么可以保存为xls/xlsx格式,对应的读写操作用楼上提到的xlrd和openpyxl。

第二类,对文件的操作不止读写数据,包含更多的其他操作,比如插入行列,设置字体颜色,等待。这时候文件格式必然是excel only的格式(xls*)。对应的操作,其实最基础的,是通过COM调用Excel的API,实际上VBA调用的也是这个东西。python,以及其他很多语言,都是支持COM的,在脚本里面获取到了Excel.Application,就可以像在VBA里面一样写Application.Workbooks(1).Worksheet(1)了。下面sample是ruby写的,python应该也差不多。

#引用COM
require "win32ole"

#连接一个已经打开的Excel
xlApp = WIN32OLE.connect("Excel.Application")

#接下去就和VBA的写法没什么两样了
wb = xlApp.activeWorkbook #获取当前激活的workbook
ws = wb.worksheets(1) #获取第一个worksheet
ws.range('A1').value = "hello" #在sheet1的A1写入“hello”

参考答案如下:

搜索pyxll,你值得拥有

              查看评论 回复



嵌入式交流网主页 > 上位机技术 > python > excel中想实现使用Python代替VBA,请问应该怎么做?
 文件 操作 格式

"excel中想实现使用Python代替VBA,请问应该怎么做?"的相关文章

网站地图

围观()