ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6711|回复: 11

[推荐] Excel的世外桃源(贴有点长,慎入)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-4-28 19:25 | 显示全部楼层 |阅读模式
本帖最后由 tmnh168 于 2013-4-28 19:26 编辑

Excel的编程当然是瘦首推VBA,方便快捷,资料也丰富,当然有更高级的要求可以尝试VSTO,但个人感觉VBA到VSTO就如同VBA到VB.net一样 ,还是不大习惯,但又NET的基础的人(例如会c#)还是可以试试的,但今天我要推荐的是一EXCEL下的另外一个编程思路,可能会有遇到世外桃源的感觉,如果你是高手,可能不屑一顾,但我仅仅是推荐一个思路,大家有兴趣不妨试试。

今天要介绍的是EXCEL与python的结合——python是啥? 简单来说是另外一种编程语言,都说vb简单,毕竟名字里就有个 basic,但python其实更简单,没有随处可见的public ,没有var 没有 long,double,next,endif 等等  
论坛搜索 "python"大家可以看下python读写xls还是很方便的。但要与excel真正的交互还是缺乏弹性,好在国外学生还是能折腾,搞了个Datanitro——也就是今天的主角。


1:安装:                           
先给链接:
https://www.datanitro.com/DataNitroTrialSetup.exe


怎么下怎么安装就不废话了,注意只支持excel2007,2010,2013 。还是excel2003的朋友还是升级吧,如果是linux或者是mac的兄弟就去搞个虚拟机实现吧,excel论坛估计99.99%都是windows用户,这条算废话
装好后的界面是这个样子的:
1.png

editor:启动一个自带IDE,用于编写python代码
python shell:启动一个shell界面
import:导入脚本,py文件
remove:移除脚本
run:运行脚本
stop:停止脚本运行
docs:打开在线文档



2:python的基本入门:
    http://ishare.iask.sina.com.cn/里面搜索"python"大把的中文资料,简单的高级的都有,为了不打消积极性,这条暂且不管。





3. 体验飞一般的感觉
你可以点Editor编写python代码了,但如果是测试或者学习,可以先点击python shell,类似windows下的cmd,


  (1)  体验下hello the world
shell下书写 ”Cell(1,1).value="Hello ,the World"  按下你的enter键,你就发现excel里的变化了吧?
      如图所示,如果出不来请注意中引文的引号和大小写的问题。还不出来面壁去,

hello,the world!

hello,the world!


限于一个贴长度有限,下面接着发






TA的精华主题

TA的得分主题

 楼主| 发表于 2013-4-28 19:31 | 显示全部楼层
本帖最后由 tmnh168 于 2013-4-28 19:40 编辑

  (2)  快速入门         


单元格Cell操作
Cell实例化单元格,例如


1.通过一对行列数值,或者以元组的形式


Cell(2,1)
Cell((2,1))
#返回A2


2.通过名字
Cell("A2")
Cell("a2")
#返回A2




3.通过范围,返回选取范围中的第一个单元格
Cell("A2:A10")
#返回A2




4通过已命名的范围返回第一个(没用过,算了)


Cell的属性
具体由row,col,position,sheet,name组成,分别代表单元格所在的行、列、坐标、sheet表、名称


5
Cell("A2").row #返回2
Cell("A2").col #返回1
Cell("A2").position #返回(2, 1)这个元组
Cell("A2").sheet #默认返回'Sheet1'
Cell("A2").name #默认返回'A2'


值(VALUE)
返回单元格中的值
Cell("A2").value #返回"hello world"如果里面是的话,空返回None,不输出任何


公式(Formula)
返回单元格中的公式,是个Str,例
Cell("B2").formula #返回'=sum(A2:A4)'


时间(Date)
如果单元格中有日期数据,返回一个python datetime.date对象,例
A1包含文本格式“2012/09/30”
Cell("A1").date #返回'2012/09/30'
#如果数据格式为时间格式
Cell("A1").date #返回“2012/09/30 0:00:00”




方法
clear
清除单元格中的值
Cell("A1").clear() #清空A1单元格


is_empty
Cell("A1").is_empty() #返回一个True或者False的布尔值




offset
坐标偏移offset(行数,列数)
Cell("a2").offset(1,2) #A2坐标偏移(1,2),返回("C3")


减号-
计算同sheet下俩个单元格的坐标偏移量
Cell("C3")-Cell("A2") #返回元组(1,2)




活动单元格
set_active
Cell("B9").set_active() #当前活动单元格为B9


操作单元格组CellRange实例
CellRange("a1:b5")




TA的精华主题

TA的得分主题

 楼主| 发表于 2013-4-28 19:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 tmnh168 于 2013-4-28 19:58 编辑

(3)VBA与python的结合(激动的地方)      
  先让我们来自己写个函数也就是UDF


打开 editor,然后打开 functions.py文件,当然你也可以用notepad++直接打开,就是个txt的东东。

敲进去如下代码

def distance(x,y):
    return  (x**2+y**2)**0.5


注意:
因为python木有vb的end sub,end if,next,所以你必须保正确的缩进,有人觉得很好,有人觉得这条规定很恶心


保存,然后回到你的excel,在单元格下试试输入
=distance(5,6)


是不是在输入 =dis 就发现excel有自动提示了?  你的自定义函数就这样完成了。是不是觉得很屌?


有人觉得这也太小儿科了, 我用vba也是简简单单就完成了,甚至在excel单元格里都能完成,没觉得你的多方便,
真的是这样吗?{:soso_e113:} (To be continue)

TA的精华主题

TA的得分主题

发表于 2013-4-28 20:39 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-7-4 16:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-8-14 14:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Perfect. 多尝试

TA的精华主题

TA的得分主题

发表于 2014-11-17 08:08 来自手机 | 显示全部楼层
赞,多一种方法,就多一种视野。

TA的精华主题

TA的得分主题

发表于 2014-11-17 12:28 | 显示全部楼层


比VB好不到哪去,很奇怪有原生的不用,偏要去用第三方的,用什么语言很重要吗?

TA的精华主题

TA的得分主题

发表于 2015-8-24 21:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-10-7 22:25 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 05:18 , Processed in 0.050423 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表