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

前提:因使用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应该也差不多。#引用comrequire “win32ole”#连接一个已经打开的excelxlapp = win32ole.connect(“excel.application”)#接下去就和vba的写法没什么两样了wb = xlapp.activeworkbook #获取当前激活的workbookws = wb.worksheets(1) #获取第一个worksheetws.range(‘a1’).value = “hello” #在sheet1的a1写入“hello”
搜索pyxll,你值得拥有
有了xlwings,excel就成了个gui了,结合numpy,pandas各种爽。还有比如直接插入matplotlib图表,比如利用python自带的sort一行代码完成vba写个几十行大一百行才能完成的复杂排序。刚看了下新版api,又有新的黑科技了,可以excel装个插件然后用python来写自定义公式
改用c#也可以,不需要一定用vba。而且根据政策,等以后移植到uwp之后,都用c#了。
我想用js…逃跑ε=(´o`)
cython也不能脱离python runtime。那个python.dll还是要的。excel调用python没问题。可以用pywin32,支持com。我原来也用过,用python写了一个函数,在excel调用。你这个需求感觉用cx freeze包装一下,在客户端安装就行了,不需要动用cython。
我曾经也有这样的想法,因为实在很难适应vba的语法,写一会vba,再写别的就各种掰不回来。楼上各位提到的工具多少也试过,都没成功。最后我用了一种曲线救国的方法: 1.先用vba写导出json的函数,注意,是函数,可以把excel里的数据直接转化为json并直接保存,每次源数据变化都会重新导出并保存。 2.用python读取json数据,进行运算,众所周知,python读取json的方法是很友好的当然缺点就是,这种方式只能用于运算数据,不能更改excel的数据
datanitro
这个问题我觉得我还是有点专业的,虽不是财务,但是大量处理财务数据。背景:公司程序员是绝对不可能给我一个数据库账号的,就算只有读权限也不行。公司内网web系统auth不完善,我可以轻松绕过权限爬数据。起初,用xlrd和xlwt。后来发现这两个工具写起来有点麻烦,而且性能不是很优秀。于是改用内置的csv模块。在这个阶段,自动化程度不高,需要大量人工干预和预先处理现在因为数据量大了,我就在本地弄了个lnmp环境和navicat,将paypal原始数据导入,操作数据库。现在正在写这方面的脚本,结合email模块和windows计划任务完成全部自动化。
solverstudio for excel 支持c# python等,有没有人试过?

“an integrated environment for optimisation using modelling languages within excel”

developing for excelif you are interested in developing for excel, you might like the following resources.excel xll add-in libary for writing c++ add-ins using visual studio 2010 (incl express): excel xll add-in libraryexcel-dna provides .net integration with excel: excel-dna – homepyxll, a “free for non-commercial and evaluation purposes” excel extension, allows python code to be used to add menus and user functions within excel.pycel will compile a spreadsheet into python. it was developed to allow non-linear optimisation of aircraft design.pyworkbooks is an open source python interface for excel and gnumeric; it looks very nice, with careful thought given to speed issues (e.g. implenting generators).python for excel (pfe) is a commercial (?) python scripting system for excel that “provides a complete set of tools for building of fully featured applications with excel front end. it is in-process control of excel with an out-of-process developement and debugging environment.”

Posted in 未分类

发表评论