Office控件

优道Office文档控件是一款支持在浏览器和桌面应用中直接编辑多种Office文档的控件,适用于Windows和Linux服务器,支持HTTP、HTTPS、FTP协议。控件小巧易用,可在IE浏览器和桌面应用中嵌入,提供查看、编辑、保护、痕迹控制和保存回服务器等功能。

优道Office文档控件使用帮助

功能概述

优道Office文档控件(UUDoc Office Document Control)是一款简单易用的Office文档控件产品,能够在浏览器和桌面应用程序中直接编辑Word、Excel、PPT、WPS、金山电子表格等文档并保存到Web服务器当中。和其它的Office文档控件不同,本控件以简单易用为设计目标,只提供最常用的文档查看、编辑、保护锁定、痕迹控制、保存回服务器等功能,因此本控件可以做得尽可能的小巧和易用。

运行环境

服务器端:支持Windows和Linux操作系统,支持任何的服务器编程语言,例如asp,asp.net,php,java,python,ruby等

支持使用HTTP、HTTPS、FTP协议从服务器远程加载和保存文档,支持服务器身份验证

控件客户端支持的操作系统:WindowsXP/2003/2008/Vista/Win7/Win8

桌面开发支持的编程语言:VB、CSharp 、VB.NET、Delphi、C++等

支持32位及64位操作系统

支持嵌入到基于ActiveX技术的IE浏览器和桌面应用程序当中

网页中嵌入控件

您可以参考我们提供的演示文件在网页中嵌入优道Office文档控件:

控件的PlogId为:UdOffice.Control

控件的ClassId为:07100CA2-3057-4BFD-B79E-9439F3859D00

   
    <object id="udOfficeCtl" width="100%" height="600"
         classid="CLSID:07100CA2-3057-4BFD-B79E-9439F3859D00"
         codebase="UdOffice.ocx#version=2,3,0,0">
         <param name="Menubar" value="0" />    
         <param name="License" value="" />
    </object>

    

属性的设置示例:

   
    <script type="text/javascript">
        //根据复选框判断是否显示工具条
        function f_toolbars() {
            ctl.Toolbars = document.getElementById("chkToolbars").checked
        }
    </script>
    

方法的调用示例:


    <script type="text/javascript"> 
	//在线打开一个Excel文档
	function f_openXls() {
            ctl.OpenFromURL("sample.xls","xls");
        }
    </script>
    

事件的捕捉示例:


    <script type="text/javascript" event="OnDocumentOpened(file,doc)" for="udOfficeCtl">  
        document.getElementById("info").innerHTML = "OnDocumentOpened事件,文档已打开 "
    </script>
    

控件属性

属性名称类型属性说明
ActiveDocumentObject获取当前活动文档对象,例如Word文档对象、Excel文档对象等
Toolbars布尔获取或设置是否显示Office工具条
ModalState布尔获取或设置控件是否处于模态状态
BorderStyle整数获取或设置控件的边框样式
0:无边框;1:扁平边框;2:3D模式边框;3:不太明显的3D边框
BorderColor整数获取或设置控件的边框颜色
BackColor整数获取或设置控件的背景色
ForeColor整数获取或设置控件的前景色
Menubar布尔获取或设置是否显示菜单栏
HostName字符获取或设置复合文档所嵌入到的的容器应用名称(宿主名)
DocumentFullName字符获取包含路径的文档文件全名
IsReadOnly布尔获取当前文档是否是以只读方式打开
IsDirty布尔获取文档是否已经被修改或需要进行保存
LockServer布尔获取或设置是否已锁定当前嵌入服务器以保持运行。
ActivationPolicy整数获取或设置文档激活方式
0:默认方式;1、应用未激活时保持激活状态;2:失去焦点时组件变成未激活状态;4:组件未激活时文档对象未激活
FrameHookPolicy整数获取或设置使用框架挂钩的方式,框架挂钩主要用于处理文档焦点的状态
0:正常方式;1:在第一次打开时设置;2:每次重新设置(Excel文档需要设置为这个);-1:禁止使用挂钩
MenuAccelerators布尔获取或设置是否允许文档菜单合并到控件菜单栏中
EventsEnabled布尔获取或设置是否允许触发事件
DocumentName字符返回文档名称(不包括路径)
WebFileName字符获取或设置默认定义的文件名称(用于从程序读取文件有时并没有文件名的情况)
WebUserName字符获取或设置默认的文档用户名(记录到文档属性中的文档作者)
WebCodePage整数获取或设置字符编码所使用的代码页号,非UTF8编码时使用
IsUtf8Url布尔获取或设置是否使用UTF8编码的URL地址,否则按指定的代码页进行编码
IsUtf8Data布尔获取或设置是否使用UTF8编码格式进行数据传输,否则按指定的代码页进行编码。
AllowCopy布尔获取或设置是否允许复制文档内容
FileNew布尔获取或设置是否启用菜单及工具条中的“新建”功能
FileOpen布尔获取或设置是否启用菜单及工具条中的“打开”功能
FileClose布尔获取或设置是否启用菜单及工具条中的“关闭”功能
FileSave布尔获取或设置是否启用菜单及工具条中的“保存”功能
FileSaveAs布尔获取或设置是否启用菜单及工具条中的“另存为”功能
FilePrint布尔获取或设置是否启用菜单及工具条中的“打印”功能
FilePrintPreview布尔获取或设置是否启用菜单及工具条中的“打印预览”功能
FilePageSetup布尔获取或设置是否启用菜单或工具条中的“页面设置”
DocType整数获取控件中当前文档的类型:
-1:未知;0:Doc;1:Docx,2:Docm,3:Xls;4:Xlsx;5:Xlsb;6:Xlsm;
7:Ppt;8:Pptx;9:Pptm;10:Vsd;11:Mpp;12:Wps;13:Et;14:Wpp
DocSize整数获取当前文档的字节数
OleAutoConvert布尔获取或设置是否自动进行OLE对象转换,可以防止调用其它软件造成问题
License字符获取或设置控件的注册码信息

控件方法

方法名称参数说明方法说明
void CreateNew(string progId)progId:文档类型的标识符,可以用Word.Document、Excel.Sheet、PowerPoint.Slide等,这里也支持用文档的扩展名,例如doc、xls、ppt等通过ProgId或文档文件扩展名来创建一个新的文档
void CreateFromTemplate(
string template,string progId)
template:模板文件路径,支持本地文件和网络路径,支持相对路径
progId(可选):文档的类型标识符,也支持文档扩展名
通过模版文件来创建一个新的文档
void OpenFromFile(string file,
bool readOnly,
string progId)
file:文档文件路径
readOnly(可选):是否以只读方式打开,默认为false
progId(可选):文档类型的标识符或扩展名
从文件打开一个文档
void OpenFromURL(string url,
string progId)
url:网络文件或服务器程序地址,支持相对路径方式
progId(可选):文档类型的标识符或扩展名
从指定的URL打开一个文档
void SaveToFile(string file,
bool overwrite)
file(可选):要保存到的文件路径
overwrite(可选):如果文件存在是否覆盖
保存文档到指定路径或它的原始位置
void SaveToURL(string url,
string fileFieldName,
string parameters,
string fileName)
url:提交到的服务器处理程序地址
fileFieldName(可选):提交使用的文件域名称,相当于表单中input的name值
parameters(可选):以&分隔的附加参数,例如"name=abc&age=30"
fileName(可选):所提交文档的文件名称,相当于<input type="file" >选中的文件名
使用HTTP协议将文件保存到URL地址
void SetServerUser(string username,
string password)
username:服务器身份验证的用户名
password:服务器用户登录密码
如果需要,设置服务器身份验证的用户名和密码
void Close()关闭当前打开的文档
void ShowDialog(int dlgType)dlgType:要显示的对话框类型:
0:新建;1:打开;2:保存;3:另存为;4:打印;5:页面设置;6:文档属性
显示一个用户指定操作类型的模态对话框。
void PrintOut(bool promptUser,
string printerName,
int copies,
int fromPage,
int toPage,
string outputFile)
promptUser:是否提示用户
printerName:打印机名称
copies:打印份数
fromPage:打印起始页
toPage:打印终止页
outputFile:输出文件名称
使用指定的打印机及打印设置打印当前文档
void PrintPreview()进入打印预览模式(要文档支持)
void PrintPreviewExit()退出打印预览模式
void Protect(string password)password(可选):文档保护密码,为空使用随机密码文档进入保护模式
void UnProtect(string password)password(可选):文档保护密码文档退出保护模式
string GetVersion()获取控件产品的当前版本号

备注:Progid 是在 (CLSID) 中使用的一个可读的版本的类标识符,用于标识 COM/ActiveX 对象,例如Word.Document、Excel.Sheet、PowerPoint.Slide等,为了方便使用,本控件也支持doc、docx、xls、xlsx、ppt、pptx等文件扩展名的使用方式

控件事件

事件名称参数说明事件说明
OnFileCommand(int item,bool cancel)item:选择的菜单项:
0:新建;1:打开;2:关闭;3:保存;4:另存为;
5:打印;6:页面设置;7、文档属性;8:打印预览

cancel:为true取消执行
用户选择文件菜单后触发事件
OnDocumentOpened(string file,object document)file:所打开的文件名
document:打开或创建的当前文档对象
打开或新建文档时触发事件
OnDocumentClosed()文档关闭时触发事件
BeforeDocumentClosed(object document,bool cancel)document:当前文档对象
cancel:为true时取消执行
文档关闭之前触发事件
OnActivationChange(bool fGoingActive)fGoingActive:是否进入活动状态组件获得或失去活动状态时触发事件
OnPrintPreviewExit()打印预览关闭时触发事件
BeforeDocumentSaved(object document,
string location,bool cancel)
document:当前文档对象
location:文档要保存到的路径名
cancel:为true时取消执行
文档保存之前触发事件
OnSaveCompleted(object document,
string docName,string fullFileLocation)
document:当前文档对象
docName:文档名称
fullFileLocation:文档保存路径全名
文档保存成功时触发事件
OnDownload(long downloadSize,long totalSize)downloadSize:当前已经下载的数据字节大小
totalSize:总共需要下载的文档字节大小
从服务器下载文档时触发事件
OnBeforePost(object document,bool cancel)document:当前文档对象
cancel:为true时取消执行
文档提交服务器之前触发事件
OnPostCompleted(string responseText)responseText:从服务器返回的文本信息文档保存回服务器后触发事件

其它

  • 关于优道:珠海市优道信息科技有限公司是一家致力于文档管理、数字版权保护和移动办公产品研发和推广的科技公司。
  • 优道网站:www.uudoc.com
  • 优道服务热线:0756-2132796,技术支持邮件:support@uudoc.com,技术支持QQ:13063574
版本修改记录: V2.2.0.2修改: 修改了HttpPost相对路径的一些问题。 V2.2.0.0增加: [id(0x00010041), helpstring("Get Rev Index")] HRESULT GetRevCount( [out,retval] long * pbool); [id(0x00010042), 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* pbool); [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([in] BSTR strLocalFile, [in] long lPageNum, [in] long lType,[out,retval] long* pbool); ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- LoadDso.js var s = "" s += "" s += "" document.write(s) ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- 接口文档: /* 1.新建 */ //新建Word document.all.FramerControl1.CreateNew("Word.Document"); //新建Excel document.all.FramerControl1.CreateNew("Excel.Sheet"); /* 2.打开文件 */ //打开制定的本地文件 document.all.FramerControl1.Open("C:\\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.FramerControl1.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 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.FramerControl1.HttpAddPostCurrFile("FileData", "文档名.doc"); //执行上传动作 document.all.FramerControl1.HttpPost("http://xxxx.com/uploadfile.asp"); /* 4.修订留痕 */ //进入留痕状态 document.all.FramerControl1.SetTrackRevisions(1); //进入非留痕状态 document.all.FramerControl1.SetTrackRevisions(0); //接受当前修订 document.all.FramerControl1.SetTrackRevisions(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, BSTR strCmdOrSheetName) strFieldName:书签名 strValue:要设置的值 strCmdOrSheetName: 命令 ::ADDMARK:: 添加BookMark ::DELMARK:: 删除这个BookMark ::GETMARK:: 定位到这个BookMark ::FILE:: 插入的是文件 ::JPG:: 插入的是图片 一般来说:WORD中书签是做好的,可以通过此接口把外界数据设置进书签中去。 */ //在当前WORD位置插入标签,标签名为"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.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 #define MNU_SAVE 0x08 #define MNU_SAVEAS 0x16 #define MNU_PGSETUP 0x64 #define MNU_PRINT 0x256 #define MNU_PROPS 0x32 #define MNU_PRINTPV 0x126 */ //只有“新建”菜单可用 document.all.FramerControl1..SetMenuDisplay(1); //只有“打开”菜单可用 document.all.FramerControl1.SetMenuDisplay(2); //只有“打开”和“新建”菜单可用 document.all.FramerControl1.SetMenuDisplay(3); /* 9.保护文档和解保护文档 lProOrUn:1:保护文档;0:解除保护 lProType: wdNoProtection = -1, wdAllowOnlyRevisions = 0, wdAllowOnlyComments = 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 则隐藏修订 = 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) */ //文件头部插入文件 document.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",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); 参数: 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, 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, 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, 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 = 5, wdFormatRTF = 6, wdFormatUnicodeText = 7, wdFormatEncodedText = 7, wdFormatHTML = 8 }; PPT: enum PpSaveAsFileType { ppSaveAsPresentation = 1, ppSaveAsPowerPoint7 = 2, ppSaveAsPowerPoint4 = 3, ppSaveAsPowerPoint3 = 4, ppSaveAsTemplate = 5, ppSaveAsRTF = 6, ppSaveAsShow = 7, ppSaveAsAddIn = 8, ppSaveAsPowerPoint4FarEast = 10, ppSaveAsDefault = 11, ppSaveAsHTML = 12, ppSaveAsHTMLv3 = 13, ppSaveAsHTMLDual = 14, ppSaveAsMetaFile = 15, ppSaveAsGIF = 16, ppSaveAsJPG = 17, ppSaveAsPNG = 18, ppSaveAsBMP = 19 }; */ /* 0x32. 删除本地文件 HRESULT DeleteLocalFile([in] BSTR strFilePath); 参数: strFileName:文件本地路径,如c:\\11.doc */ /* 0x33.创建临时文件 HRESULT GetTempFilePath([out,retval] BSTR* strValue); 返回: 临时文件的路径地址。使用完后,用DeleteLocalFile 删除 */ /* 0x34.设置文档显示模式 HRESULT ShowView([in] long dwViewType, [out,retval] long * pbool); dwViewType的可取值为: enum WdViewType { wdNormalView = 1, wdOutlineView = 2, wdPrintView = 3, wdPrintPreview = 4, wdMasterView = 5, //这个是大纲 wdWebView = 6 }; */ //大纲模式 document.all.FramerControl1.ShowView(5); /* 0x39:下载远程文件 HRESULT DownloadFile( [in] BSTR strRemoteFile, [in] BSTR strLocalFile, [out,retval] BSTR* strValue); 参数: strRemoteFile:远程路径地址,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:文件的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); 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() +"日" + dateObj.getHours() +"时" + dateObj.getMinutes() +"分" + dateObj.getSeconds() +"秒" ); alert("用户:"+document.all.FramerControl1.GetRevInfo(i,0) + "\r\n操作:" + vOpt + "\r\n内容:" + document.all.FramerControl1.GetRevInfo(i,3)); } /* 0x43.设置基本信息: HRESULT SetValue([in] BSTR strValue, [in] BSTR strName, [out,retval] long* pbool); 1.设置文件只读密码 SetValue("password","::DOCPROP:PassWord"); 2.设置文件修改密码 SetValue("password","::DOCPROP:WritePW"); 返回值: 0 正确 -1:不支持此命令,请确定您的第二个参数没有传错 -127:异常 */ //设置文件只读密码 document.all.FramerControl1.SetValue("password","::DOCPROP:PassWord"); //设置文件修改密码 document.all.FramerControl1.SetValue("password","::DOCPROP:WritePW"); /* 0x44.设置文档变量,这个很少能用到 HRESULT SetDocVariable([in] BSTR strVarName, [in] BSTR strValue,[in] long lOpt, [out,retval] long* pbool); strVarName: 变量名 strVlaue:变量值 lOpt: 操作类型, 按位 第一位为1: 表示update域关联的 第二位为1: 表示如果没有这个变量则添加 第三位为1: 未来支持 return: 0:OK -127:异常 */ /* 0x45: 分页保存 HRESULT SetPageAs([in] BSTR strLocalFile, [in] long lPageNum, [in] long lType,[out,retval] long* pbool); strLocalFile:本地路径 lPageNum:页数 */
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值