精易论坛

标题: 用对象操作excel纯源码 [打印本页]

作者: Logo黑星    时间: 2018-9-9 10:52
标题: 用对象操作excel纯源码
前阵子,发表了一篇入门级的《用对象操作word纯源码》,很多坛友反映,能否弄一贴关于excel的,为此,总结前人的经验,开拓自己的思想,写下此贴。
实质上,使用对象操作word或者excel,论坛中早有前人用对象做过相关的类或者模块并且已经开源供大家使用了。我写这两篇贴子的初衷仅仅是帮助大家更进一步的学习使用而已。
根据前人开源的代码,我总结了一下:
易语言操作EXCEL的模块
https://125.confly.eu.org/forum.php?mod=viewthread&tid=13805868&highlight=%D2%D7%D3%EF%D1%D4%B2%D9%D7%F7
易语言操作EXCEL的模块2
https://125.confly.eu.org/forum.php?mod=viewthread&tid=14134310&highlight=%D2%D7%D3%EF%D1%D4%B2%D9%D7%F7
Excel对象操作
https://125.confly.eu.org/forum.php?mod=viewthread&tid=13802293&highlight=%B6%D4%*FF3%2Bexcel
这些开源的模块中,已经将对象操作excel的基本功能写得很到位,我在此仅仅只是添砖加瓦,还望各位海涵!

同样的,给新人们几点建议:
1,Vbaexcelxl10.chm 这个知识库肯定是得看的,方便查找对象,属性,方法等;
2,对象.查看(),这个命令是必须使用的,同样是方便查找对象,方法,并了解在易语言中,到底该用.读对象属性(),还是.对象型方法();
3,记住几个主要的对象:application, ActiveWorkbook,Activesheet,Range,cells, selection
4,操作的思想:
找到对象(.读对象属性())-->处理对象(.对象型方法())




好了,废话不多说,进入正题:
本贴主题主要写关于在EXCEl单元格中置数据的。主要是看到开源的代码中,这个功能有待完善,而且这个功能是最常用最基本的。
本贴主要解决两个功能:
功能一:单元格的操作,有活动与非活动的区别。最常用的是活动单元格的操作,并且分为单个,多个(1行,1列,3行2列...)。
功能二:其内容的输入,有文字,数字,日期,图片.....通常主要是文字与数字的输入。




我这里主要是实例,如源码作者看到可以将这两个功能优化后加入模块中。
注:测试使用前记得打开一个excel空表。
部分代码展示:

.版本 2
.子程序 活动单元格操作
.参数 定位, 编辑框
.参数 输入文本, 编辑框
.局部变量 excel, 对象
.局部变量 books, 对象
.局部变量 sheets, 对象
.局部变量 ranges, 对象
.局部变量 value, 变体型
.局部变量 cell1, 变体型
.局部变量 cell2, 变体型
.局部变量 分割文本, 文本型, , "0"
.局部变量 selection, 对象

分割文本 = 分割文本 (定位.内容, “:”, )  ' 填写单元格区域,如:“A15”或“A1:B3”
.如果 (取数组成员数 (分割文本) > 1)
    cell1.赋值 (分割文本 [1], )
    cell2.赋值 (分割文本 [2], )
.否则
    cell1.赋值 (定位.内容, )
    cell2.赋值 (定位.内容, )
.如果结束
' 此处将纯数字文本按数字输入excel,excel中数字与文本的区别在于数字默认靠右对齐,文本默认靠左对齐。例如:“'1234”是文本,“1234”则转换为数字。
.如果 (是否全部为数值_Code (输入文本.内容))
    value.赋值 (到数值 (输入文本.内容), )
.否则
    value.赋值 (输入文本.内容, )
.如果结束

excel.获取 (“excel.application”)
books = excel.读对象型属性 (“ActiveWorkbook”, )
sheets = books.读对象型属性 (“Activesheet”, )
ranges = sheets.读对象型属性 (“Range”, cell1, cell2)
ranges.对象型方法 (“Select”, )  ' select代表先选择单元格,再操作,能够实时定位当前活动单元格位置
' selection = excel.读对象型属性 (“Selection”, )
' selection.写属性 (“FormulaR1C1”, value)  ' 输入数据方法一
' 或者ranges.写属性 (“FormulaR1C1”, value)’非活动输入
ranges.写属性 (“Value”, value)  ' 输入数据方法二
excel.清除 ()


excel对象操作.e (9.75 KB, 下载次数: 354)






作者: oycs429    时间: 2018-9-9 11:25
支持分享...........
作者: ltt199    时间: 2018-9-9 11:38
这个是写脚本吗?最近也在学,但是不是很懂
作者: Logo黑星    时间: 2018-9-9 15:23
ltt199 发表于 2018-9-9 11:38
**** 作者被禁止或删除 内容自动屏蔽 ****

对象应用
作者: 米仓老鼠    时间: 2018-9-9 16:40
谢谢分享,学习一下。
作者: zjattj    时间: 2018-9-11 10:48
感谢楼主详细例子!
作者: Ψ恋上金牛座    时间: 2018-9-11 21:28

支持分享
作者: 1623863129    时间: 2018-9-12 22:39
果然呢牛。。。。。。。。。。。。。。。
作者: 网络注册络员    时间: 2018-9-18 11:25
支持五支持
作者: Joedown    时间: 2018-9-18 14:14
虽然看不懂,但是要支持
作者: 244428268    时间: 2018-9-24 00:16
很不错哦,刚好在学习中
作者: 发大财    时间: 2018-10-4 10:31
支持分享...........
作者: wffjyrsw    时间: 2018-10-8 08:45
请教:如何不采用循环方式写入单元格区域?
在vb中,可以将二维数组arr直接写入单元格区域,如:ranges(“a1:b2”)=arr

那么,易语言中二维数组如何写入区域?如.
数组 [1] [1] = “1”
数组 [1] [2] = “2”
数组 [2] [1] = “3”
数组 [2] [2] = “4”
ranges = sheets.读对象型属性 (“Range”, “a1”, “b2”)
ranges.写属性 (“Vaule”, 数组)
但结果只显示写入了a1:b1,a2:b2没有写进去是什么原因?
作者: wffjyrsw    时间: 2018-10-8 09:38
如何将二维数组直接写入单元格区域,如ranges(“a1:b2”)=arr
作者: ttt0410    时间: 2018-10-13 20:26
楼主你直接在源码中加入命令就行,都公开的
13楼你写个方法然后调用不行么,方法中自己循环,你只管调用
作者: wffjyrsw    时间: 2018-10-15 10:14
ttt0410 发表于 2018-10-13 20:26
楼主你直接在源码中加入命令就行,都公开的
13楼你写个方法然后调用不行么,方法中自己循环,你只管调用

我的意思是不用循环的方式,而是采用vb中的赋值方式 ranges(“a1:b2”)=arr
采用循环方式这个比较简单,但是效率低
作者: lndis    时间: 2018-10-19 09:46
支持分享...........
作者: lxw7788    时间: 2018-10-19 20:38
更进一步的学习使用
作者: qwc3000    时间: 2018-12-28 16:46
xuexike
作者: tsg2005    时间: 2019-1-22 16:29
下载看看   
作者: fxcf    时间: 2019-2-25 11:45
新技能已get√
作者: rkerry    时间: 2019-3-22 14:31
谢谢分享,学习了
作者: smk718    时间: 2019-3-23 11:02
好东西收藏,功能好强大
作者: mkxk    时间: 2019-4-3 11:22
支持分享...........
作者: zzhenzhe    时间: 2019-5-2 14:05
要支持要支持
作者: watermelon    时间: 2019-9-3 09:18
学习一下。。
作者: watermelon    时间: 2019-9-3 09:19
学习一下。。
作者: 441663619    时间: 2019-9-14 11:56
333333333333
作者: 袮会开心么?    时间: 2019-9-25 16:15
支持分享...........
作者: 2442295093    时间: 2020-3-18 00:34
感谢楼主,好东西哇
作者: 晚风归    时间: 2020-4-4 06:06
老哥 Vbaexcelxl10.chm能发下吗 网上找的 要么下载不了 要么不对
作者: 蓝河笑月    时间: 2022-4-25 17:08
感谢分享  感谢开源
作者: duisir    时间: 2023-4-26 20:57
666666666666666666666666666666666666666666
作者: duisir    时间: 2023-5-1 19:42
66666666666666666666666666666666666666666666666666
作者: cf2010    时间: 2024-12-11 10:13
学习一下,谢谢楼楼




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4