1、DSOFramer原有的接口说明 =================================================================== DSOFramer原有的接口说明 1.void CreateNew(BSTR ProgIdOrTemplate) 新建文档, 其中: ProgIdOrTemplate参数: Excel Spreadsheet "Excel.Sheet" Excel Chart "Excel.Chart" PowerPoint Presentation "PowerPoint.Show"
2、 Project Project "MSProject.Project" Visio Drawing "Visio.Drawing" Word Document "Word.Document" 2. HRESULT Open([in] VARIANT Document, [in, optional] VARIANT ReadOnly, [in, optional] VARIANT ProgId, [in, optional] VARIANT WebUsername, [in, optional] VARIANT WebPassword)
3、 打开文档,可以是本地文件或者是服务器文件 参数: Document 文档路径 ReadOnly 是否已只读模式打开 ProgId OLE类型 WebUsername 用户名(访问网络的文件时候,有可能需要) WebPassword 密码 例子: DsoFramer1.Open "C:\TestBook.xls" DsoFramer1.Open "C:\Plain.txt", , "Word.Document" //用Word来打开c:\plain.txt文件 DsoFramer1.Open "https://secureserver/test/myte
4、st.asp?id=123", True, "Excel.Sheet", "MyUserAccount", "MyPassword" 3.HRESULT Save([in, optional] VARIANT SaveAsDocument, [in, optional] VARIANT OverwriteExisting, [in, optional] VARIANT WebUsername, [in, optional] VARIANT WebPassword); 保存文件在本地 DsoFramer1.Save "c:\1.doc" 4.A
5、ctivate 激活当前文档,没搞明白有什么用 5. HRESULT ActiveDocument([out,retval] IDispatch** ppdisp); 返回当前活动文档的Dispatch接口,这个接口很重要,可以通过这个接口,操作所有的文档接口。 如:下面 javascript 语句调用Office内置的对话框 var obj; obj = new Object(document.all.FramerControl1.ActiveDocument); if(obj !=null){ var dd; dd = obj.Application.Dialogs(8
6、4).Show(); //... ... //delete it delete obj; } 6. HRESULT Close(); 关闭当前文档,建议在页面关闭的时候调用。 MS的原来的版本,有时候关不掉Word,已经修复了。 7. HRESULT Caption([out,retval] BSTR* pbstr); 属性,获取|设置窗口标题 8. HRESULT Titlebar([in] boolean vbool); HRESULT Titlebar([out,retval] boolean* pbool); 显示或者隐藏标题栏 9. HR
7、ESULT Toolbars([in] boolean vbool); HRESULT Toolbars([out,retval] boolean* pbool); 显示或者隐藏工具栏 10. HRESULT ModalState([in] boolean vbool); HRESULT ModalState([out,retval] boolean* pbool); 11.HRESULT ShowDialog([in] dsoShowDialogType DlgType); 显示对话框 12.HRESULT EnableFileCommand([in]
8、 dsoFileCommandType Item, [in] boolean vbool); HRESULT EnableFileCommand([in] dsoFileCommandType Item, [out,retval] boolean* pbool); 13. HRESULT BorderStyle([in] dsoBorderStyle style); HRESULT BorderStyle([out, retval] dsoBorderStyle* pstyle); 14. HRESULT BorderColor([in] OLE_COLOR c
9、lr); HRESULT BorderColor([out,retval] OLE_COLOR* pclr); 15. HRESULT BackColor([in] OLE_COLOR clr); HRESULT BackColor([out,retval] OLE_COLOR* pclr); 16.HRESULT ForeColor([in]OLE_COLOR clr); HRESULT ForeColor([out,retval]OLE_COLOR* pclr); 17.HRESULT TitlebarColor([in] OLE_COLOR clr);
10、 HRESULT TitlebarColor([out,retval] OLE_COLOR* pclr); 18.HRESULT TitlebarTextColor([in] OLE_COLOR clr); HRESULT TitlebarTextColor([out,retval] OLE_COLOR* pclr); 19.HRESULT ExecOleCommand([in] LONG OLECMDID, [in, optional] VARIANT Options, [in, optional] VARIANT* vInParam, [in, out, option
11、al] VARIANT* vInOutParam); 20.HRESULT Menubar([in] boolean vbool); HRESULT Menubar([out,retval] boolean* pbool); 21.HRESULT HostName([in] BSTR bstr); HRESULT HostName([out,retval] BSTR* pbstr); 22. HRESULT DocumentFullName([out,retval] BSTR* pbstr); 文档的路径 23.HRESULT PrintOut([in,
12、 optional] VARIANT PromptUser, [in, optional] VARIANT PrinterName, [in, optional] VARIANT Copies, [in, optional] VARIANT FromPage, [in, optional] VARIANT ToPage, [in, optional] VARIANT OutputFile); 24.HRESULT PrintPreview(); 25.HRESULT PrintPreviewExit(); 26.HRESULT IsReadOnly([out,retv
13、al] boolean* pbool); 是否为只读的。 27.HRESULT IsDirty([out,retval] boolean* pbool); 是否保存了,实际可以用来判读文档有没有修改 oframer.IsDirty = TRUE //文档没有保存,处于修改状态 oframer.IsDirty = FALSE //文档已经保存,没有修改 新加的接口说明(开发接口) [color=red][b]当前版本:V2.2.0.8 2007-02-07[/b] [/color]下载控件需要登录 说明: 控件未经大批量测试,难免有Bug, 发
14、现 Bug,请及时发帖或者Mail:wanhhf@ 版本修改记录: V2.2.0.8修改: 增加了N多个事件,挺不错的东西 [id(DSOF_DISPID_WORD_DocumentChange), helpstring("DSOF_DISPID_WORD_DocumentChange")] HRESULT WORD_DocumentChange(); [id(DSOF_DISPID_WORD_DocumentBeforePrint), helpstrin
15、g("DSOF_DISPID_WORD_DocumentBeforePrint")] HRESULT WORD_DocumentBeforePrint(); [id(DSOF_DISPID_WORD_WindowActivate), helpstring("DSOF_DISPID_WORD_WindowActivate")] HRESULT WORD_WindowActivate(); [id(DSOF_DISPID_WORD_WindowSelectionC
16、hange), helpstring("DSOF_DISPID_WORD_WindowSelectionChange")] HRESULT WORD_WindowSelectionChange(); [id(DSOF_DISPID_WORD_WindowBeforeRightClick), helpstring("DSOF_DISPID_WORD_WindowBeforeRightClick")] HRESULT WORD_WindowBeforeRightClick();
17、 [id(DSOF_DISPID_WORD_WindowBeforeDoubleClick), helpstring("DSOF_DISPID_WORD_WindowBeforeDoubleClick")] HRESULT WORD_WindowBeforeDoubleClick(); V2.2.0.6修改: 修改Open,参数为空时候,一个小 Bug 修改了URL过长时候一个Bug 增加了一个替换文字的接口
18、 long ReplaceText(BSTR strSearchText, BSTR strReplaceText, long lGradation); V2.2.0.2修改: 修改了HttpPost相对路径的一些问题。 V2.2.0.0增加: [id(0x00010041), helpstring("Get Rev Index")] HRESULT GetRevCount( [out,retval] long * pbool); [id(0x0
19、0010042), helpstring("Get Rev Index Info")] HRESULT GetRevInfo([in] long lIndex, [in] long lType, [out,retval] BSTR* pbool); [id(0x00010043), helpstring("Set Doc Prop")] HRESULT SetValue([in] BSTR strValue, [in] BSTR strName, [out,retval] long* pb
20、ool); [id(0x00010044), helpstring("Set Doc Variable")] HRESULT SetDocVariable([in] BSTR strVarName, [in] BSTR strValue,[in] long lOpt, [out,retval] long* pbool); [id(0x00010045), helpstring("Save page To Doc")] HRESULT SetPageAs([i
21、n] BSTR strLocalFile, [in] long lPageNum, [in] long lType,[out,retval] long* pbool); -------------------------------------------------------------------------------------------------------------------------------------------------------------------- LoadDso.js var s = "" s += "" document.write(s) ------------------------------------------------------------------------------------
23、 接口文档: /* 1.新建 */ //新建Word document.all.FramerControl1.CreateNew("Word.Document"); //新建Excel document.all.FramerControl1.CreateNew("Excel.Sheet"); /* 2.打开文件 */ //打开制定的本地文件 document.all.FramerControl1.Open("C
24、\\TestBook.xls"); //制定用Word来打开c:\plain.txt文件 document.all.FramerControl1.Open("C:\\Plain.txt",false, "Word.Document"); //打开服务器的文件 document.all.FramerControl1.Open "https://secureserver/test/mytest.asp?id=123",true, "Excel.Sheet", "MyUserAccount", "MyPassword"); //打开服务器的文件 document.all.Frame
25、rControl1.Open("http://localhost/1.doc", true); /* 3.保存文件 */ //到本地 document.all.FramerControl1.Save("c:\\1.doc",true); //服务器 /*增加Http协议Post上传接口,可以Post一个动态页面(jsp,asp,php...),由动态页面负责解析数据 bool HttpInit(); bool HttpAddPostString(BSTR strName, BSTR strValue); bool HttpAddPostCurrFile(BSTR
26、strFileID, BSTR strFileName); BSTR HttpPost(BSTR bstr); */ //初始化Http引擎 document.all.FramerControl1.HttpInit(); //增加Post变量 document.all.FramerControl1.HttpAddPostString("RecordID","20060102200"); document.all.FramerControl1.HttpAddPostString("UserID","李局长"); //上传打开的文件 document.all.Fr
27、amerControl1.HttpAddPostCurrFile("FileData", "文档名.doc"); //执行上传动作 document.all.FramerControl1.HttpPost(" /* 4.修订留痕 */ //进入留痕状态 document.all.FramerControl1.SetTrackRevisions(1); //进入非留痕状态 document.all.FramerControl1.SetTrackRevisions(0); //接受当前修订 document.all.FramerControl1.SetTrackRevisi
28、ons(4); /* 5.设置当前用户 */ document.all.FramerControl1.SetCurrUserName("张三"); /* 6.设置当前时间(笔迹留痕会显示("Like 2006:02:07 11:11:11") */ document.all.FramerControl1.SetCurrTime("2006:02:07 11:11:11"); /* 7.设置和创建书签,此功能比较强大,设置书签数据、添加书签和添加红头文件就靠他了 SetFieldValue(BSTR strFieldName, BSTR strValue,
29、BSTR strCmdOrSheetName) strFieldName:书签名 strValue:要设置的值 strCmdOrSheetName: 命令 ::ADDMARK:: 添加BookMark ::DELMARK:: 删除这个BookMark ::GETMARK:: 定位到这个BookMark ::FILE:: 插入的是文件 ::JPG:: 插入的是图片 一般来说:WORD中书签是做好的,可以通过此接口把外界数据设置进书签中去。 */ //在当前WORD位置插入标签,标
30、签名为"book1",数值为"test" document.all.FramerControl1.SetFieldValue("book1","test","::ADDMARK::"); //设置书签"Time",数值为"2006-03-16 22:22:22" document.all.FramerControl1.SetFieldValue("Time","2006-03-16 22:22:22",""); //在书签位置"hongtou",插入红头文件"http://222.222.222.222/hongtou1.doc" 这样,红头就自动插进去了 document.all.
31、FramerControl1.SetFieldValue("hongtou","http://222.222.222.222/hongtou1.doc","::FILE::"); /* 8.设置菜单显示情况 BOOL SetMenuDisplay(long lMenuFlag) lMenuFlag为以下数值的组合 #define MNU_NEW 0x01 #define MNU_OPEN 0x02 #define MNU_CLOSE 0x04
32、 #define MNU_SAVE 0x08 #define MNU_SAVEAS 0x16 #define MNU_PGSETUP 0x64 #define MNU_PRINT 0x256 #define MNU_PROPS 0x32 #define MNU_PRINTPV 0x126 */ //只有“新建”菜单可用 do
33、cument.all.FramerControl1..SetMenuDisplay(1); //只有“打开”菜单可用 document.all.FramerControl1.SetMenuDisplay(2); //只有“打开”和“新建”菜单可用 document.all.FramerControl1.SetMenuDisplay(3); /* 9.保护文档和解保护文档 lProOrUn:1:保护文档;0:解除保护 lProType: wdNoProtection = -1, wdAllowOnlyRevisions = 0, wdAllo
34、wOnlyComments = 1, wdAllowOnlyFormFields = 2 strProPWD:密码 */ //完全保护文档,密码为"pwd" document.all.FramerControl1.ProtectDoc(1,1,"pwd"); //解除文档保护 document.all.FramerControl1.ProtectDoc(0,1,"pwd"); /* 10.显示或隐藏修订内容 ShowRevisions(long nNewValue) nNewValue = 0 则隐藏修订
35、 = 1 则显示修订 */ //显示修订留痕 document.all.FramerControl1.ShowRevisions(1); //隐藏修订留痕 document.all.FramerControl1.ShowRevisions(0); /* 11.插入合并文件, strFieldPath 文件路径,可以是http,ftp的路径 pPos = 0 //当前鼠标位置 1;文件开头 2;文件末尾 pPos的第4位为1的时候,代表插入的是图片 InSertFile(BSTR strFieldPath, long lPos) */ //文件头部插入文件 d
36、ocument.all.FramerControl1.InSertFile("http://XX.com/XX.doc",1); //文件尾部插入文件 document.all.FramerControl1.InSertFile("http://XX.com/XX.doc",2); //当前光标位置插入文件 document.all.FramerControl1.InSertFile("http://XX.com/XX.doc",0); //文件头部插入图片 document.all.FramerControl1.InSertFile("http://XX.com/XX.jpg"
37、9); //文件尾部插入图片 document.all.FramerControl1.InSertFile("http://XX.com/XX.jpg",10); //当前光标位置插入图片 document.all.FramerControl1.InSertFile("http://XX.com/XX.jpg",8); /* 0x31. 文档另存为 HRESULT SaveAs([in] VARIANT strFileName, [in] VARIANT dwFileFormat, [out,retval] long* pbool);
38、 参数: strFileName:文件本地路径,如c:\\11.doc dwFileFormat: 文件格式 dwFileFormat的数值为: Excel: Type enum XlFileFormat { xlAddIn = 18, xlCSV = 6, xlCSVMac = 22, xlCSVMSDOS = 24, xlCSVWindows = 23, xlDBF2 = 7, xlDBF3 = 8, xlDBF4 = 11, xlDIF = 9,
39、 xlExcel2 = 16, xlExcel2FarEast = 27, xlExcel3 = 29, xlExcel4 = 33, xlExcel5 = 39, xlExcel7 = 39, xlExcel9795 = 43, xlExcel4Workbook = 35, xlIntlAddIn = 26, xlIntlMacro = 25, xlWorkbookNormal = -4143, xlSYLK = 2, xlTemplate = 17,
40、xlCurrentPlatformText = -4158, xlTextMac = 19, xlTextMSDOS = 21, xlTextPrinter = 36, xlTextWindows = 20, xlWJ2WD1 = 14, xlWK1 = 5, xlWK1ALL = 31, xlWK1FMT = 30, xlWK3 = 15, xlWK4 = 38, xlWK3FM3 = 32, xlWKS = 4, xlWorks2FarEast = 28,
41、 xlWQ1 = 34, xlWJ3 = 40, xlWJ3FJ3 = 41, xlUnicodeText = 42, xlHtml = 44 }; Word: Type enum WdSaveFormat { wdFormatDocument = 0, wdFormatTemplate = 1, wdFormatText = 2, wdFormatTextLineBreaks = 3, wdFormatDOSText = 4, wdFormatDOSTextLineBreaks =
42、 5, wdFormatRTF = 6, wdFormatUnicodeText = 7, wdFormatEncodedText = 7, wdFormatHTML = 8 }; PPT: enum PpSaveAsFileType { ppSaveAsPresentation = 1, ppSaveAsPowerPoint7 = 2, ppSaveAsPowerPoint4 = 3, ppSaveAsPowerPoint3 = 4, ppSaveAsTemplate = 5, ppS
43、aveAsRTF = 6, ppSaveAsShow = 7, ppSaveAsAddIn = 8, ppSaveAsPowerPoint4FarEast = 10, ppSaveAsDefault = 11, ppSaveAsHTML = 12, ppSaveAsHTMLv3 = 13, ppSaveAsHTMLDual = 14, ppSaveAsMetaFile = 15, ppSaveAsGIF = 16, ppSaveAsJPG = 17, ppSaveAsPNG = 18,
44、 ppSaveAsBMP = 19 }; */ /* 0x32. 删除本地文件 HRESULT DeleteLocalFile([in] BSTR strFilePath); 参数: strFileName:文件本地路径,如c:\\11.doc */ /* 0x33.创建临时文件 HRESULT GetTempFilePath([out,retval] BSTR*
45、strValue); 返回: 临时文件的路径地址。使用完后,用DeleteLocalFile 删除 */ /* 0x34.设置文档显示模式 HRESULT ShowView([in] long dwViewType, [out,retval] long * pbool); dwViewType的可取值为: enum WdViewType { wdNormalView = 1, wdOutlineView = 2, wdPrintView = 3, wdPri
46、ntPreview = 4, wdMasterView = 5, //这个是大纲 wdWebView = 6 }; */ //大纲模式 document.all.FramerControl1.ShowView(5); /* 0x39:下载远程文件 HRESULT DownloadFile( [in] BSTR strRemoteFile, [in] BSTR strLocalFile, [out,retval] BSTR* strValue); 参数: strRemoteFi
47、le:远程路径地址,http or Ftp strLocalFile: 本地保存地址,if strLocalFile == NULL then Create Temp File and return TempFile's Path */ /* 0x40:增加Http上传时候的,附加其他文件 HRESULT HttpAddPostFile([in] BSTR strFileID, [in] BSTR strFileName, [out,retval] long* pbool); 参数: strFileID
48、文件的ID,供服务器端页面解析 strFileName: 本地文件地址 */ /* 0x41,0x42.获取详细的修订信息。 GetRevCount( [out,retval] long * pbool); GetRevInfo([in] long lIndex, [in] long lType, [out,retval] BSTR* pbool); 例子如下 */ var vCount; vCount = document.all.FramerControl1.GetRevCount(); alert(vCount);
49、 var vOpt = 0; var vDate; for(var i=1; i<= vCount; i++){ vOpt = document.all.FramerControl1.GetRevInfo(i,2); if("1" == vOpt){ vOpt = "插入"; }else if("2" == vOpt){ vOpt = "删除"; }else{ vOpt = "未知操作"; } vDate = new String(document.all.FramerControl1.GetRevInfo(i,1)); vDate = parseFloat(vDate); alert(vDate); dateObj = new Date(vDate); alert(dateObj.getYear() + "年" + dateObj.getMonth() + 1 + "月" + dateObj.getDate() +"日" +
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818