js宏使用workbooks.add报错
发布时间:2025-05-20 19:43:49 发布人:远客网络
一、js宏使用workbooks.add报错
1、js宏使用workbooks.add报错。这个问题的答案是:
2、你没有正确地引用 Excel对象模型中的 Workbooks集合。Workbooks集合是 Application对象的一个属性,因此你需要使用 Excel.Application.Workbooks.Add来创建一个新的工作簿。
3、你没有正确地指定模板参数。模板参数可以是一个现有的 Excel文件名的字符串,或者是一个 XlWBATemplate常量,表示新工作簿中包含的工作表类型。如果你省略了模板参数,那么 Excel会根据 SheetsInNewWorkbook属性来创建一个包含多个空白工作表的新工作簿。
4、你没有正确地处理返回值。Workbooks.Add方法会返回一个 Workbook对象,表示新创建的工作簿1。你可以使用这个对象来访问和修改新工作簿中的数据和格式。例如,你可以使用 var wb= Excel.Application.Workbooks.Add来获取新工作簿的引用,然后使用 wb.SaveAs方法来保存它。
5、检查你的代码中是否正确地引用了 Workbooks集合,并且是否使用了完整的语法 Excel.Application.Workbooks.Add。
6、检查你的代码中是否正确地指定了模板参数,或者是否有必要指定模板参数。如果你想使用一个现有的 Excel文件作为模板,那么你需要提供文件名的完整路径,并且确保文件存在并且可以访问。如果你想使用一个常量作为模板,那么你需要从 XlWBATemplate枚举中选择一个合适的值,并且确保它与你想要创建的工作表类型相匹配。
7、检查你的代码中是否正确地处理了返回值,并且是否对新创建的工作簿进行了必要的操作。例如,你可以使用 Workbook对象的属性和方法来设置工作簿的标题、作者、保护等信息,或者向工作簿中添加工作表、表、图表等元素。
8、如果你想在当前与加载项关联的工作簿中插入另一个工作簿中的工作表,那么你可以使用 Workbook对象insertWorksheetsFromBase64方法。这个方法需要一个.xlsx文件的 base64编码字符串作为参数,以及一个InsertWorksheetOptions对象来指定插入选项。你可以使用 FileReader类来将文件转换为 base64编码字符串。
二、javascript如何写游戏脚本
Unity3D中用JavaScript写脚本,如何引用其他JS脚本?
1、方法定义为static,直接类名.方法名调用;
1、方法定义为static,直接类名.方法名调用;
publicstaticfunctionAdd(j:int,i:int):void
3、GameObject.Find(),得到那个有这个脚本组件的GameObject,这个GameObject再GetComponent,得到script,scirpt再调用方法。
js可以本地执行键盘操作写脚本嘛
可以1)使用JS启动本地应用程序
使用上述代码重点是创建了一个ActiveXObject的对象
JavaScript中ActiveXObject对象是启用并返回Automation对象的引用。使用方法:
newObj=newActiveXObject(servername.typename[,location])
ActiveXObject对象语法有这些部分:
其中newObj是必选项。要赋值为ActiveXObject的变量名。
servername是必选项。提供该对象的应用程序的名称。
typename是必选项。要创建的对象的类型或类。
location是可选项。创建该对象的网络服务器的名称。
Automation服务器至少提供一类对象,例如字处理应用程序可能提供应用程序对象、文档对象和工具栏对象。
例如要创建Excel的Application和Sheet对象,代码如下:
varExcelApp=newActiveXObject("Excel.Application");
varExcelSheet=newActiveXObject("Excel.Sheet")
一旦对象被创建,就可以用定义的对象变量在代码中的引用它。下面我们将通过一个例子来看看对对象和方法的引用,通过对象变量ExcelSheet访问新对象的属性和方法和其他Excel对象,包括Application对象和ActiveSheet.Cells集合。代码如下:
1ExcelSheet.Application.Visible=true;
2ExcelSheet.ActiveSheet.Cells(1,1).Value="ThisiscolumnA,row1";
3ExcelSheet.SaveAs("C:\\TEST.XLS");
4ExcelSheet.Application.Quit();
(2)经过(1)的代码设置之后,就可以执行程序,但是ActiveXObject是在浏览器中执行的,浏览器需要进行一些设置保证上述JS代码可以正常的执行。
如上所示可以对计算机的ActiveX控件和插件进行设置,使得可以正常执行IE调用本地应用程序
varobj=newActiveXObject('wscript.shell');
obj.run(location);//其中location是QQ应用程序的本地地址(地址需要使用“//”)
做Web开发已经四年,或多或少积累了一些JavaScript脚本。比如,限制input只允许输入数字的脚本;敲回车自动转到下一个控件,相当于Tab键的作用一样;因为JavaScript数值运算的结果常常不是我们想要的,还得有浮点数运算(加减乘除)函数。每次有JavaScript需求时,常常是在网上找需要的脚本,直接拷贝到aspx文件中,或者新建JavaScript文件,然后添加引用
scriptsrc="JScript.js"type="text/javascript"/script,以这种方式来完成客户端脚本的制作。毕竟对JavaScript的需求不多,也就没有花很大的力气去学。
最近公司的项目不忙,空闲的时间赶忙补习一下脚本的知识。网上有很流行的JQuery脚本库,在园子里也有大量的文章讨论怎么去用。以我亲身体会,JavaScript和正则表达式一样,常学常忘。学过的知识不用,很快就会忘记。特别是和应用相关的内容,比如PageMethods怎么用,客户短回调如何实现,如何用JavaScript调用Web服务,在项目中用过多次,但是一被同事问起来,还是模模糊糊的,很难说出个所以然来。我有一个办法是制作demo,把各种效果的demo做好,分门别类的放在一起,然后用的时候去搜索,这样可以节省很多时间。另外一种办法就是今天这篇文章提到的,把做过的JavaScript整理一下,制作成比较通用的脚本库,方便复用。整理的含义是,对函数进行适当的调整,让它能不仅能满足当前项目的需求,还要能满足未来项目的需求,另一个含义是要规范命名和组织结构,写好样例代码,用起来的时候方便。有时候在网上下载了很多JavaScript实用脚本,但是忘记下载它的测试脚本,不知道怎么去用,还不如到网上重新搜索来得方便。
JavaScript被定义为一种基于对象的脚本语言,一方面它以DOM对象模型和DOM对象中的方法为基础,另一方面,它又不具备面向对象语言的继承,多态的特性。ASP.NETAJAX对JavaScript进行了扩展,使我们可以以面向对象的方式来组织JavaScript脚本。我这里的主要工作是封装,把现有的代码封装起来,方便下次复用。于是,有两种方法来组织现有的JavaScript代码库。
我以JavaScript中倍受争议的浮点运算中的加法和减法运算为例子,看看如何把它们封装起来
Math.prototype.Add=function(arg1,arg2){
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
Math.prototype.Subtraction=function(arg1,arg2){
try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2));
return((arg1*m-arg2*m)/m).toFixed(n);
Type.registerNamespace(“Utility”);
Utility.Math=function(larg,rarg)
try{r1=left.toString().split(".")[1].length}catch(e){r1=0}
try{r2=right.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2))
try{r1=left.toString().split(".")[1].length}catch(e){r1=0}
try{r2=right.toString().split(".")[1].length}catch(e){r2=0}
m=Math.pow(10,Math.max(r1,r2));
return((left*m-right*m)/m).toFixed(n);
Utility.Math.registerClass(“Utility.Math”);
然后,在需要的地方,就可以运用下面的方法调用
varmath=newUtility.Math(2.0,4.2);
使用上面提出的两种方法,可以方便封装常用的JavaScript,减少重复。
上面的命名有个问题,因为Math是JavaScript内置的一种类型,用于处理各种数学运算,为了让上面的JavaScript风格的脚本运行起来,还得把类名换成其它的名字,如MathHelper。ASP.NETAJAX还对JavaScript的六种类型进行了扩展,分别是Array,Boolean,Date,Error,Object和string.
方法有了,估计还有朋友会说,你应该把自己做的JavaScript库公布出来才行,这样才能满足大众的口味。仅有这个方法,要实践起来还是很困难的:有项目时间紧的理由,每天都忙着做项目,哪里有时间去整理这个,也有不熟悉JavaScript的理由。
为了让我的类库不至于很菜,我到网上找了些关于写好JavaScript库的建议。
有一篇文章的名字叫《BuildingaJavaScriptLibrary》,本来写这篇文章之前很想看看他是怎么写的,可是网页中一直提示正在加载文件,无法查看。很想知道老外对于同样的主题,他是怎么写的。
6保持灵活可变7管理好内存,避免内存泄露。
10让类库保持可预知。比如,虽然没有查看文档,也应该能猜测到Math是处理和数学运算相关的内容
11加分的规则:文档;尽可能多的使用命名空间组织代码,使之容易被记住;
我的水平很一般的,很普通的一个程序员。所以,不要向我要代码。我给你了,你还要花时间去看;而且我的代码没有文档,你读不懂怎么办呢。与其这样,为何不把你自己手头有的JavaScript整理一下,况且你手里头有的JavaScript,被你实际用过,你对他肯定熟悉。也不要推荐JQuery,它不是我的目的。
我的目的是教你组织整理现有的JavaScript脚本库,把手头已有资源用好就很不错了。
谁能给我讲讲游戏脚本的事,用什么语言编写?是不是需要你所玩游戏的代码?10分
目前游戏脚本用得多的是按键与TC简单开发,前者需要用到VB,学习起来比较吃力,后者是一个新推出的游戏脚本制作工具,可以说它在这方面弥补了按键的很多不足的地方,再一个就目前的情况来看,很多游戏都对按键进行封杀,所以按键的紶景也是非常的不容易乐观的,就我而言,我更看TC简单开发,必定目前刚推出,游戏商基本上不对其进行封杀,再就是它支持中文编程,有自己的编程语言体系,编写一些游戏脚本自然不需要用到其它的开发语言。
Win平台的游戏一般是使用什么语言开发的
一般的大型游戏开发绝不是用某种语言这么单纯的问题。一个大型游戏的开发需要庞大的团队使用各种各样的语言和工具来完成。总结一下主要有C/C++,汇编语言,着色器语言,脚本语言,高效的开发语言C#或Java。
首先一般的游戏开发架构(Windows平台)从底到顶一般是DirectX?——游戏引擎——游戏。
DirectX?相当于所有显卡的一个统一接口,为游戏提供一个利用硬件渲染的编程模型,但DirectX?接口为了追求高性能功能非常单纯和松散,不利于游戏的高效开发。此时就需要根据游戏特点对其进行适当的取舍和封装,实现一组更高抽象的游戏开发接口和框架,可以理解成游戏引擎中的图形引擎。这部分的开发一般使用的语言是C/C++和少量的汇编语言。
至于游戏引擎是一个非常复杂的功能聚合体,所有的游戏开发工作都是在之上进行的。包括图形引擎,音频引擎,碰撞引擎,艺术资源管理,脚本引擎等等。到此为止几乎还没有涉及到你所说的游戏开发。
首先在图形渲染方面,例如光照阴影处理等等,现代显卡一般是通过可编程着色器实现对图形效果的控制,所采用的编程语言一般是一些着色器语言,例如DirectX?采用的HLSL,OpenGL使用的GLSL等等,语法类似C语言,游戏执行时被编译加载到显卡上,在实现硬件渲染速度的同时又实现了软件编程的灵活性。
大型游戏开发的绝大部分工作其实都是在编写游戏脚本,脚本是大型游戏得以如此高速开发和发布的主要原因。脚本化的开发让游戏开发摆脱了硬编码的种种弊端,让游戏内容可以轻易的修改和调试。游戏故事如何进行,各种事件如何触发,何时该播放哪些声音或动画,如何使用艺术团队创作的资源,这些都是在脚本中编写的,可以说引擎决定了游戏能做什么,而脚本才真正决定了游戏做了什么。一些著名的引擎如虚幻系列都有自己独特的脚本语言,其他一些引擎可能会采用一些第三方的脚本语言,比如比较流行的Lua。所以开发一个新游戏最简单的情形就是沿用之前的引擎,创作艺术资源,然后编写脚本将其组织成一个游戏,几乎不需要什么底层的编程语言。
开发环境方面,游戏团队内部可能会使用一些开发和设计工具对资源进行处理,可以理解成游戏引擎的IDE,这部分因为是内部工具,而且可能需要经常修改所以一般采用比较高效的开发平台和语言,比如暴雪就是部分使用.NET和C#进行一些内部工具的开发。
至于引擎核心的开发,Windows平台比较流行的方法是使用最新版本的VisualStudio,显卡厂商如NVIDIA也会为VS开发一些插件来简化显卡编程和调试。
CS是用VC++写的,魔兽不清楚了,大多都用VC++,C++,DELHPI写的手机上用的JAVA
一般的游戏都是用什么语言开发的
一般的大型游戏开发绝不是用某种语言这么单纯的问题。一个大型游戏的开发需要庞大的团队使用各种各样的语言和工具来完成。总结一下主要有C/C++,汇编语言,着色器语言,脚本语言,高效的开发语言C#或Java。
首先一般的游戏开发架构(Windows)从底到顶一般是DirectX?——游戏引擎——游戏。
DirectX?相当于所有显卡的一个统一接口,为游戏提供一个利用硬件渲染的编程模型,但DirectX?接口为了追求高性能功能非常单纯和松散,不利于游戏的高效开发。此时就需要根据游戏特点对其进行适当的取舍和封装,实现一组更高抽象的游戏开发接口和框架,可以理解成游戏引擎中的图形引擎。这部分的开发一般使用的语言是C/C++和少量的汇编语言。
至于游戏引擎是一个非常复杂的功能聚合体,所有的游戏开发工作都是在之上进行的。包括图形引擎,音频引擎,碰撞引擎,艺术资源管理,脚本引擎等等。到此为止几乎还没有涉及到你所说的游戏开发。
首先在图形渲染方面,例如光照阴影处理等等,现代显卡一般是通过可编程着色器实现对图形效果的控制,所采用的编程语言一般是一些着色器语言,例如DirectX?采用的HLSL,OpenGL使用的GLSL等等,语法类似C语言,游戏执行时被编译加载到显卡上,在实现硬件渲染速度的同时又实现了编程的灵活性。
大型游戏开发的绝大部分工作其实都是在编写游戏脚本,脚本是大型游戏得以如此高速开发和发布的主要原因。脚本化的开发让游戏开发摆脱了硬编码的种种弊端,让游戏内容可以轻易的修改和调试。游戏故事如何进行,各种事件如何触发,何时该播放哪些声音或动画,如何使用艺术团队创作的资源,这些都是在脚本中编写的,可以说引擎决定了游戏能做什么,而脚本才真正决定了游戏做了什么。一些著名的引擎如虚幻系列都有自己独特的脚本语言,其他一些引擎可能会采用一些第三方的脚本语言,比如比较流行的Lua。所以开发一个新游戏最简单的情形就是沿用之前的引擎,创作艺术资源,然后编写脚本将其组织成一个游戏,几乎不需要什么底层的编程语言。
开发环境方面,游戏团队内部可能会使用一些开发和设计工具对资源进行处理,可以理解成游戏引擎的IDE,这部分因为是内部工具,而且可能需要经常修改所以一般采用比较高效的开发和语言,比如暴雪就是部分使用.NET和C#进行一些内部工具的开发。
至于引擎核心的开发,Windows比较流行的方法是使用最新版本的VisualStudio,显卡厂商如NVIDIA也会为VS开发一些插件来简化显卡编程和调试。
游戏里的脚本都是用什么语言写的
可以用Lex和Yacc,没有什么语言,一般自己定义
游戏源码一般都是用什么语言写的?
编写单机PC/主机游戏现在都是C++加上一个脚本语言(比如Lua,这地方不需要脚本引擎多么高性能,够用就好)。游戏的架构是引擎+游戏逻辑,两者代码量是引擎远远大于游戏逻辑。商业游戏往往引擎是重用多于自研,所以那些大型游戏的代码也不是全部都是一行一行敲出来的——很可能其中许多内容是买来的。
网游服务端则一般是自研,这个真是一行一行敲了。网游EVE的服务器完全是照着超算的标准修的,算法也完全是超算的算法。编写单机PC/主机游戏现在都是C++加上一个脚本语言(比如Lua,这地方不需要脚本引擎多么高性能,够用就好)。游戏的架构是引擎+游戏逻辑,两者代码量是引擎远远大于游戏逻辑。商业游戏往往引擎是重用多于自研,所以那些大型游戏的代码也不是全部都是一行一行敲出来的——很可能其中许多内容是买来的。
一般大型的商业游戏引擎有自己的脚本语言,比如Unreal3就有自己的一套UnrealScript,Unity3d可以用C#、JavaScript~~
也有用Python的,不过游戏里面最知名,用的最多的还是Lua。
有些公司自主开发的引擎是不公开的,我们也不知道用什么,很可能是有自己的一套脚本语言系统,有本书《Gamescriptmastery》就是讲解游戏里面脚本引擎搭建的,如果有兴趣,加上一点汇编语言和编译原理的基础,可以跟着这本书上的看看。推荐还是用Lua(前面那本书也提到Lua了),这个东棱现在比较流行,资料齐全,有问题也方便交流。
现在用什么语言写游戏脚本好点5分
做正规游戏用什么语言编写脚本最好
做正规游戏用自己家写的引擎内部语言写脚本。
T语言Y语言C语言哪个写游戏脚本好??
看到这三个选项,心情真的不太好形容,对T语言和Y语言不是特别了解,大概说一下自己的感觉。
C语言是更贴近底层的编程语言,全英文的字母的那种,属于面向过程的语言,个人认为用C语言写游戏脚本有点儿求虐,因为接口什么的都要自己写。不是很建议用。当然,前提是你说的是纯C语言,而不是C++、VC++这种C语言的衍生品。
T语言虽然有点儿过时,不过确实有很多人用TC做出过很炫的游戏效果,应该也容易找到一些例子,方便借鉴。
Y语言不是很了解,只知道是中文编程的典范,全中文内核,不太清楚是不适合写游戏脚本。
但是我觉得如果选用T语言和Y语言之前,应该考虑一下你要做什么游戏的脚本,如果是全英文的游戏内核,就要考虑中文编程和英文游戏的对接问题了,特别是Y语言。不是我崇洋***,但是事实证明国内出的一些计算机相关的东西确实都有很多不足之处,有时候可能会很坑。
最后建议还是选用一下现在主流的语言做游戏脚本,想javascript之类的,这些语言其实语法没比T或Y语言难多少,但是因为大家都在用,可以找到很多资料,还可以有更多的人让你请教。
最简单的做法不就是,有一个button姓名/button,可以给button赋予某个属性,这个属性值就是你的学号,然后给button一个注册一个onclick事件,点击弹出框,并在此时显示时间。
title演示button弹出学号和时间/title
buttonid="1234567"onclick="alert('学号:'+this.id+'当前时间:'+newDate());"自己的姓名/button
VBScript主要用于在ASP中编写服务器端脚本,它是微软开发的一种VB的衍生脚本语言,跟VB的语法类似,学ASP顺便就可以学了。
至于JavaSrcipt,除了名字之外和JAVA语言一丁点关系都没有,是网景公司提出来的,而不是SUN公司。JavaScript的基本语法有点类似于C语言,但是又有很多的内置对象,用于编写网页中的客户端脚本,但是每种浏览器支持的JavaScript也不一样,所以要用心注意一下才好!
三、java生成word文档的问题
Jacob解决Word文档的读写问题收藏
Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。Jacob下载的地址为:
(1)将解压包中的jacob.dll(x86常用,x64)拷到jdk安装目录下的jre\bin文件夹或windows安装路径下的WINDOWS\system32文件夹下
(2)将jacob.jar文件拷到classpath下即可
对于”java.lang.UnsatisfiedLinkError: C:\WINDOWS\system32\jacob-1.14.3-x86.dll:由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正”这个问题,可以通过
重新下载Jacob的jar及dll文件(最好版本比现在的低,如1.11)解决
实例制作(主要功能:标题制作,表格制作,合并表格,替换文本,页眉页脚,书签处理):
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
public static void main(String args[]){
ActiveXComponent wordApp= new ActiveXComponent("Word.Application");//启动word
// Set the visible property as required.
Dispatch.put(wordApp,"Visible", new Variant(true));////设置word可见
Dispatch docs= wordApp.getProperty("Documents").toDispatch();
// String inFile="d:\\test.doc";
// Dispatch doc= Dispatch.invoke(docs,"Open", Dispatch.Method,
// new Object[]{ inFile, new Variant(false), new Variant(false)},//参数3,false:可写,true:只读
// new int[1]).toDispatch();//打开文档
Dispatch document= Dispatch.call(docs,"Add").toDispatch();// create new document
String userName= wordApp.getPropertyAsString("Username");//显示用户信息
System.out.println("用户名:"+ userName);
//文档对齐,字体设置////////////////////////
Dispatch selection= Dispatch.get(wordApp,"Selection").toDispatch();
Dispatch align= Dispatch.get(selection,"ParagraphFormat")
.toDispatch();//行列格式化需要的对象
Dispatch font= Dispatch.get(selection,"Font").toDispatch();//字型格式化需要的对象
//标题处理////////////////////////
Dispatch.put(align,"Alignment","1");// 1:置中 2:靠右 3:靠左
Dispatch.put(font,"Bold","1");//字型租体
Dispatch.put(font,"Color","1,0,0,0");//字型颜色红色
Dispatch.call(selection,"TypeText","Word文档处理");//写入标题内容
Dispatch.call(selection,"TypeParagraph");//空一行段落
Dispatch.put(align,"Alignment","3");// 1:置中 2:靠右 3:靠左
Dispatch.put(selection,"Text","");
Dispatch.call(selection,"MoveDown");//光标标往下一行
//表格处理////////////////////////
Dispatch tables= Dispatch.get(document,"Tables").toDispatch();
Dispatch range= Dispatch.get(selection,"Range").toDispatch();
Dispatch table1= Dispatch.call(tables,"Add", range, new Variant(3),
new Variant(2), new Variant(1)).toDispatch();//设置行数,列数,表格外框宽度
Variant tableAmount= Dispatch.get(tables,"count");
System.out.println(tableAmount);
Dispatch t1= Dispatch.call(tables,"Item", new Variant(1))
Dispatch t1_row= Dispatch.get(t1,"rows").toDispatch();//所有行
int t1_rowNum= Dispatch.get(t1_row,"count").getInt();
Dispatch.call(Dispatch.get(t1,"columns").toDispatch(),"AutoFit");//自动调整
int t1_colNum= Dispatch.get(Dispatch.get(t1,"columns").toDispatch(),
System.out.println(t1_rowNum+""+ t1_colNum);
for(int i= 1; i<= t1_rowNum; i++){
for(int j= 1; j<= t1_colNum; j++){
Dispatch cell= Dispatch.call(t1,"Cell", new Variant(i),
new Variant(j)).toDispatch();//行,列
Dispatch.call(cell,"Select");
Dispatch.put(selection,"Text","cell"+ i+ j);//写入word的内容
Dispatch.put(font,"Bold","0");//字型租体(1:租体 0:取消租体)
Dispatch.put(font,"Color","1,1,1,0");//字型颜色
Dispatch.put(font,"Italic","1");//斜体 1:斜体 0:取消斜体
Dispatch.put(font,"Underline","1");//下划线
Dispatch Range= Dispatch.get(cell,"Range").toDispatch();
String cellContent= Dispatch.get(Range,"Text").toString();
System.out.println((cellContent.substring(0, cellContent
Dispatch.call(selection,"MoveDown");//光标往下一行(才不会输入盖过上一输入位置)
//合并单元格////////////////////////
Dispatch.put(selection,"Text","");
Dispatch.call(selection,"MoveDown");//光标标往下一行
Dispatch range2= Dispatch.get(selection,"Range").toDispatch();
Dispatch table2= Dispatch.call(tables,"Add", range2, new Variant(8),
new Variant(4), new Variant(1)).toDispatch();//设置行数,列数,表格外框宽度
Dispatch t2= Dispatch.call(tables,"Item", new Variant(2))
Dispatch beginCell= Dispatch.call(t2,"Cell", new Variant(1),
new Variant(1)).toDispatch();
Dispatch endCell= Dispatch.call(t2,"Cell", new Variant(4),
new Variant(4)).toDispatch();
Dispatch.call(beginCell,"Merge", endCell);
for(int row= 1; row<= Dispatch.get(
Dispatch.get(t2,"rows").toDispatch(),"count").getInt(); row++){
for(int col= 1; col<= Dispatch.get(
Dispatch.get(t2,"columns").toDispatch(),"count").getInt(); col++){
Dispatch cell= Dispatch.call(t2,"Cell", new Variant(1),
new Variant(1)).toDispatch();//行,列
Dispatch.call(cell,"Select");
Dispatch.put(font,"Color","1,1,1,0");//字型颜色
Dispatch.put(selection,"Text","merge Cell!");
Dispatch cell= Dispatch.call(t2,"Cell", new Variant(row),
new Variant(col)).toDispatch();//行,列
Dispatch.call(cell,"Select");
Dispatch.put(font,"Color","1,1,1,0");//字型颜色
Dispatch.put(selection,"Text","cell"+ row+ col);
Dispatch.call(selection,"MoveDown");
//Dispatch.call(selection,"MoveRight", new Variant(1), new Variant(1));//取消选择
// Object content= Dispatch.get(doc,"Content").toDispatch();
// Word文档内容查找及替换////////////////////////
Dispatch.call(selection,"TypeParagraph");//空一行段落
Dispatch.put(align,"Alignment","3");// 1:置中 2:靠右 3:靠左
Dispatch.put(font,"Color", 0);
Dispatch.put(selection,"Text","欢迎,Hello,world!");
Dispatch.call(selection,"HomeKey", new Variant(6));//移到开头
Dispatch find= Dispatch.call(selection,"Find").toDispatch();//获得Find组件
Dispatch.put(find,"Text","hello");//查找字符串"hello"
Dispatch.put(find,"Forward","True");//向前查找
// Dispatch.put(find,"Format","True");//设置格式
Dispatch.put(find,"MatchCase","false");//大小写匹配
Dispatch.put(find,"MatchWholeWord","True");//全字匹配
Dispatch.call(find,"Execute");//执行查询
Dispatch.put(selection,"Text","你好");//替换为"你好"
//使用方法传入的参数parameter调用word文档中的MyWordMacro宏//
//Dispatch.call(document,macroName,parameter);
//Dispatch.invoke(document,macroName,Dispatch.Method,parameter,new int[1]);
//页眉,页脚处理////////////////////////
Dispatch ActiveWindow= wordApp.getProperty("ActiveWindow")
Dispatch ActivePane= Dispatch.get(ActiveWindow,"ActivePane")
Dispatch View= Dispatch.get(ActivePane,"View").toDispatch();
Dispatch.put(View,"SeekView","9");//9是设置页眉
Dispatch.put(align,"Alignment","1");//置中
Dispatch.put(selection,"Text","这里是页眉");//初始化时间
Dispatch.put(View,"SeekView","10");// 10是设置页脚
Dispatch.put(align,"Alignment","2");//靠右
Dispatch.put(selection,"Text","这里是页脚");//初始化从1开始
//书签处理(打开文档时处理)////////////////////////
//Dispatch activeDocument= wordApp.getProperty("ActiveDocument").toDispatch();
Dispatch bookMarks= Dispatch.call(document,"Bookmarks").toDispatch();
boolean isExist= Dispatch.call(bookMarks,"Exists","bookMark1")
Dispatch rangeItem1= Dispatch.call(bookMarks,"Item","bookMark1")
Dispatch range1= Dispatch.call(rangeItem1,"Range").toDispatch();
Dispatch.put(range1,"Text", new Variant("当前是书签1的文本信息!"));
String bookMark1Value= Dispatch.get(range1,"Text").toString();
System.out.println(bookMark1Value);
System.out.println("当前书签不存在,重新建立!");
Dispatch.call(bookMarks,"Add","bookMark1", selection);
Dispatch rangeItem1= Dispatch.call(bookMarks,"Item","bookMark1")
Dispatch range1= Dispatch.call(rangeItem1,"Range").toDispatch();
Dispatch.put(range1,"Text", new Variant("当前是书签1的文本信息!"));
String bookMark1Value= Dispatch.get(range1,"Text").toString();
System.out.println(bookMark1Value);
//保存操作////////////////////////
Dispatch.call(document,"SaveAs","D:/wordOperate.doc");
//Dispatch.invoke((Dispatch) doc,"SaveAs", Dispatch.Method, new Object[]{htmlPath, new Variant(8)}, new int[1]);//生成html文件
//Dispatch.call(document,"Close", new Variant(0));
//// worddoc.olefunction("protect",2,true,"");
//// Dispatch bookMarks= wordApp.call(docs,"Bookmarks").toDispatch();
//// System.out.println("bookmarks"+bookMarks.getProgramId());
////Dispatch.call(doc,"Save");//保存
//// Dispatch.call(doc,"Close", new Variant(true));
////wordApp.invoke("Quit",new Variant[]{});
// wordApp.safeRelease();//Finalizers call this method