免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 8861|回复: 8
收起左侧

COM编程在WalkScript中的支持

[复制链接]

22

主题

444

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
265
发表于 2012-6-20 15:50 | 显示全部楼层 |阅读模式
本帖最后由 walk.djg 于 2012-6-20 19:40 编辑





COM in walkscript.png
                              
            COM具有与语言,平台无关的特性,walkscript对com组件提供支持


            COM(Component ObjectModel组件对象模型)是开发软件组件的一种方法。COM组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM具有与语言、平台无关的特性,walkscript对com组件提供了支持。











如图所示:
是用WalkScript输出的WalkScript.MSExcel对象信息。
   walkscript.MSExcel对象信息.png


wkCom
内部提供的方法有:
====================
create(string progId_or_clsid);
free();
call(...);
dynamic_call();
dumpToText();
====================

例如:
void main()
{
        wkCom excelApp;
        excelApp.create("WalkScript.MSExcel"); //声明COM对象walkscript.MSExcel
        excelApp.dumpToTxt();  //打印输出WalkScript.MSExcel组件对象信息
        //--------------直接调用组件内部函数----------------------------------------------
        excelApp.open("f:\\a.xls");
        excelApp.SetCellString("COM in WalkScript!!",9,9);
        excelApp.Save();
        excelApp.close();
        //----------------------------------------------------------------------------------------
        excelApp.free(); //与crate("WalkScript.MSExcel")对应,释放excelApp对象。
        
}

22

主题

444

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
265
 楼主| 发表于 2012-6-25 12:55 | 显示全部楼层
常用COM组件WalkScript.MSExcel
void main()
{
         wkCom excelApp;
         //创建组件“WalkScript.MSExcel
         excelApp.create("WalkScript.MSExcel");
         //打印该组件的类型信息
         excelApp.dumpToTxt();
         excelApp.open("f:\\a.xls");
         //填充单元格(第九行,第九列)的值为“COMin WalkScript!!
         excelApp.SetCellString("COM inWalkScript!!",9,9);
         //在第二行处,插入三行
         excelApp.InsertRow(2, 3);
         //合并A2C4的区域
         excelApp.Merge("A2:C4");
         //保存
         excelApp.Save();
         //关闭
         excelApp.close();
         //释放COM接口
         excelApp.free();      
}
Scripting.FileSystemObject
void main()
{
         wkCom fs;
         //创建Scripting.FileSystemObject对象。
         fs.create("Scripting.FileSystemObject");
         //打印类型信息
         fs.dumpToTxt();
         
         //应用程序所在路径下的WalkISurvey.exe
         string sFile = WsGetAppFolder() +"WalkISurvey.exe";
         //获取WalkISurvey.exe的版本信息
         string sFileVersion = fs.GetFileVersion(sFile);        
         trace(sFileVersion+ "\n");
         
         //判读路径是否存在
         sFile= WsGetAppFolder();
         bool bExist = fs.FolderExists(sFile);
         trace("%s%s\n", sFile, bExist ? "存在" : "不存在");
         sFile= "C:\\我是一个判读文件";
         bExist= fs.FileExists(sFile);
         trace("%s%s\n", sFile, bExist ? "存在" : "不存在");
         
         //获取一个临时文件名
         string sTemp = fs.GetTempName();
         trace(sTemp+ "\n");
         
         fs.free();
}

回复 支持 反对

使用道具 举报

185

主题

2898

铜板

13

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2398
发表于 2012-6-25 15:45 | 显示全部楼层
支持!!!!
回复 支持 反对

使用道具 举报

22

主题

444

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
265
 楼主| 发表于 2012-6-27 11:24 | 显示全部楼层
本帖最后由 walk.djg 于 2012-6-27 18:17 编辑


walkscript中使用ADO.png

                 
回复 支持 反对

使用道具 举报

22

主题

444

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
265
 楼主| 发表于 2012-6-27 11:27 | 显示全部楼层
在WalkScript编辑运行器中输出结果如下图所示:

walkscript中使用ADO_输出结果.png




回复 支持 反对

使用道具 举报

185

主题

2898

铜板

13

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2398
发表于 2012-7-2 09:18 | 显示全部楼层
看看 发现又更新了  不错的呢
回复 支持 反对

使用道具 举报

22

主题

444

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
265
 楼主| 发表于 2012-10-24 10:54 | 显示全部楼层
alert 发表于 2012-7-2 09:18
看看 发现又更新了  不错的呢

例如,使用组件编程方式来操作excel

        void main()
        {
                wkCom excel;
                //创建Excel组件对象
                excel.create("Excel.Application"); //有的系统可能需要加版本号,例如Excel.Application.13或者Excel.Application.14等等
                //新建Excel表
                wkCom workBook1 = excel.Workbooks().Add(true);
                wkCom sheets = workBook1.WorkSheets();
                wkCom sheet1 = sheets.Item(1);
                //设置或修改单元格内容
                sheet1.Cells().Item(1, 1).putProperty("Value", "WalkScript");
                sheet1.Cells().Item(1, 2).putProperty("Value", "in");
                sheet1.Cells().Item(1, 3).putProperty("Value", "Com");
                string strExcelPath = view.dlgFile(false, "", "Microsoft Excel文件(*.xls)|*.xls||");
                //保存并关闭
                workBook1.Close(true, strExcelPath, 0);
                //退出
                excel.Quit();
                //别忘记释放新建的Excel对象
                excel.free();
        }

特别地,WalkScript的wkCom中提供了putProperty方法来设置某个属性。

回复 支持 反对

使用道具 举报

0

主题

496

铜板

1

好友

技术员

Rank: 3Rank: 3

积分
15
发表于 2020-4-27 15:28 | 显示全部楼层
大佬,求救啊,请问怎样做一个walkscript脚本,按提供的word模板,批量读取属性,按模板新建word到自动生成的文件夹中,自动填入字段属性并输出word文件
回复 支持 反对

使用道具 举报

6

主题

1万

铜板

20

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2985
发表于 2021-5-10 08:35 | 显示全部楼层
感谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表