Python 板


LINE

*Motivation 微软虽然邪恶, 但是Excel真的是好物, 他让资料可视化, 很方便能做分析 在工程资料分析时, 比如我有一大笔资料, 想要取出每笔数值的 bit[15:10] 我当然能利用Excel内建的函数, 组合出我需要的功能, 但是就觉得有点难用 如果处理的方式很复杂, 拼凑出来的公式会很难读 另外一个方案是使用Excel内建的VBA, 这个就能写程式了, 也有bit-wise操作 利用VBA在後端做计算, 在前端使用Excel把资料漂亮的show出来 我曾经想要学VBA, 无奈写C/Python习惯了, 看到VB的语法实在很不习惯 我投资不少时间在Python上, 如果能连结Excel和Python 就能达成後端使用Python, 前端使用Excel的理想境界... *Solution: PyXLL 1. Excel的XLL介面能呼叫外部的DLL, third-party能为Excel开发新的程式 2. PyXLL实做了Excel XLL介面, 他会唤醒Python interpretor 把来自Excel的资料, 放到Python domain 3. PyXLL也能把Python运算结果, 回传给Excel使用 PyXLL是卖钱的工具, 不过试用不用钱, 只是开档要等15秒看log 原理其实如上面所述, 喜欢的话也可以自己写一个 http://www.pyxll.com/ *Install 1. 首先到他的网站抓安装包, 然後解压缩到任何地方, 假设是C:\PyXLL 2. 顺便在网站里, 把文件抓回来 3. 参考这个网站, 安装PyXLL: http://www.codecho.com/execute-python-script-in-excel-using-pyxll/ 4. 阅读C:\PyXLL\pyxll.cfg, 理论上不用改, 不懂的地方请参考文件 5. 编辑C:\PyXLL\examples\worksheetfuncs.py, 这里就是主菜了 !! *worksheetfuncs.py -- basic_pyxll_function_1(), part1 废话不多说, 这个范例宣告一个函数 basic_pyxll_function_1() @xl_func("int x, int y, int z: int") def basic_pyxll_function_1(x, y, z): """returns (x * y) ** z """ return (x * y) ** z 第一行是PyXLL定义的Declarator, PyXLL的任务是沟通Excel-XLL和Python 所以一定要解决的问题是资料如何传递, 答案是@xl_func() 请参考文件, 这个declarator有专门的写法, 支援的资料型别也有限 上面的写法表示 x/y/z 是 int, 回传值在冒号以後, 也是 int 函数的本体和原本的Python没有两样, 这个函数会计算 (x*y) ^ z Python的语法部份, 我想这里就不多说了 接下来是实际在Excel呼叫这个函数看看, 随便找个储存格输入 =basic_pyxll_function(2,2,2), 答案应该是(2*2)^2 = 16 如果看到这个数值, 恭喜, 表示已经成功打通 Python/Excel 两个世界 *worksheetfuncs.py -- basic_pyxll_function_1(), part2 这个范例说明, 怎麽重新载入PyXLL, 重新执行更新过 Python script 毕竟写程式, 没有不改source code 对这个function动点手脚, 让他呼叫另外一个函数看看 def zzz(): return 100 @xl_func("int x, int y, int z: int") def basic_pyxll_function_1(x, y, z): return zzz() 点选到Excel的Add-ins选单, 里面会有PyXLL, 选择Reload PyXLL 然後到储存格里, 点两下按Enter, 让他重算过, 数值就会变成100 *Document 文件的第三章, writing user defined functions, 里面有详细的叙述 记载上面提到的Declarator要怎麽写, 对应的语法, 建议看 3.1 Exposing functions UDFs 3.2 Standard argument and return types 3.3 The var type 3.4 Using arrays 第四章, 介绍PyXLL能在Excel的选单里加入一些按钮, 满酷的功能 我个人比较用不到, 不过也可以大概看一下 see also @ http://lihgong.blogspot.com/2012/03/pyxll.html --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.61.82.125
1F:推 timTan:看起来很不错 03/30 14:38
2F:推 Jason1122:推一下 03/30 20:31
3F:推 littleshamoo:推 03/30 22:14
4F:推 dSnAil:Oh,no没办法在非windows平台上用 orz 本来想用来export资料 03/31 03:02
5F:→ dSnAil:不过还是感谢分享,推 03/31 03:02
6F:→ uranusjr:楼上可以试试 UNO, 这是 OO.o 的套件, 有 Python binding 03/31 11:21
7F:→ ykjiang:如果只是读写 Excel cell资料,可以用 xlrd, xlwt 就好 03/31 12:38
8F:→ ykjiang:还跨平台 03/31 12:39







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP