WebOffice文档控件常见问题
1、问题:我下载了WebOffice.rar文件,接下来要怎么做才能安装? 回答:首先:下载WebOffice.rar文件后,启用WinRAR解压缩软件将WebOffice.rar所有内容解压至桌面、C盘或D盘等任意盘的根目下。执行后路径如:C:\WebOffice 或 D:\WebOffice 等。 然后:打开解压后的WebOffice目录,找到 WebOffice安装.bat 文件,双击运行,在提示“是”与“否”等对话框时,请选择“是”或“同意”按钮即可。 如果发生问题,请确保WebOffice.rar解压后不要放在带空格的目录路径。 如果采用上述方式,问题依旧,请按如下办法: 1、打开ocx文件夹找到 copyweboffice.bat,以右键管理员身份运行。 2、打开控件包里的office文件夹找到 weboffice.bat,直接双击运行。 完成后,即可以使用IE6以上所有浏览器版本打开网页查看控件。win7\win10等64位操作系统所带IE,则先右键管理员身份运行IE后再打开含控件的网页即可看到效果。 注意:如果金山、360等安全软件有提示,请将WebOffice软件添加到信任区即可。 -------------------------------------------------------------------------------- 2、问题:控件会自动安装吗?控件会自动更新吗? 回答:第1个问题:正常情况下,控件在IE等浏览器会自动下载安装,但由于有些电脑安全性等因素,要保证百分百安装好控件,建议手动下载安装一次。 第2个问题:通过在服务器上放置最新版的控件文件,控件会自动更新客户端上的版本文件。 -------------------------------------------------------------------------------- 3、问题:如何集成WebOffice产品到我司项目? 在集成WebOffice产品到软件项目前,一定要先学以下教程: 学习网址: Hello World打开文档 用save方法保存文档 用Httppost方法保存文档(建议用此方法保存文档) 解决Session登陆认证问题 学习并实际操作以上教程后,再结合项目需要,一般即会知道如何在项目里打开保存一个文档。如果熟了后,建议参考本站在线演示页( http://www.officectrl.com/weboffice_demo.html)已做的示例,代码可以参考使用! 扩展问题:如何使用智能窗来浏览器网页? 回答:请先学习Hello World打开文档 关于智能窗的一些使用介绍:首先要确保你本机电脑已下载WebOffice控件安装包,并成功能安装; 其次,在HTML网页代码里把链接由传统网址:http://www.officectrl.com/officecs/WebDocEdit.aspx?oper=edit&id=180 形式,修改为:weboffice://|Officectrl|http://www.officectrl.com/officecs/WebDocEdit.aspx?oper=edit&id=180 即可; 如果将前述 WebOffice|Officectrl| 改为:WebOffice|Officectrl.com| 智能窗的地址栏将隐藏。 如果将 WebOffice://|Officectrl| 改为 WebOffice://|Officectrl|(500,300)| 则智能窗将以宽500像素,高300像素方式显示。 如果将 WebOffice://|Officectrl|(500,300)| 改为 WebOffice://|Officectrl|(500,300)|(350,250)| 则智能窗将在屏幕距左上角350像素,顶部250像素的位置以宽500像素,高300像素大小显示。 -------------------------------------------------------------------------------- 4、问题:点击智能窗链接后,在弹出的外部协议请求对话框里选择了取消启动应用并记住,如何恢复? 回答:可通过此页面《chrome外部协议请求设置》的提供的方法解决。 -------------------------------------------------------------------------------- 5、问题:我用的是WPS2016用控件能打开文档,为什么用WPS2019不行? 回答:应是WPS2019在安装时没有在注册表里导入打开OFFICE文档的信息项引起,解决办法请重新设置下WPS2019的注册项即可,具体操作方法请见《WPS2019设置》,设置完成后重启下电脑以生效。 -------------------------------------------------------------------------------- 6、问题:我用的是WIN7,WIN10的64位系统,按上面要求安装了控件,为什么还是不能用IE8或IE11看到控件? 回答:由于win7/win10等64位系统里同时具有32位IE和64位IE,而一般在桌面上的IE图标默认打开的是 64位IE,须开启用智能窗才可以访问WebOffice控件,如果用户进入系统盘 C:\Program Files (x86)\Internet Explorer\iexplore.exe运行32位IE,则可以直接IE内部显示控件网页。 64位系统产生这一问题主要原因是权限问题引起的。解决方法如下:在WIN7,WIN10的64位系统用IE查看含控件的网页时,请以右键管理员身份启动IE后再来打开含控件的网页,即可正常查看到控件。操作方法是在资料管理器找到C:\Program Files\Internet Explorer\iexplore.exe文件,对此文件右键在弹出菜单选“以管理员身份运行”即可。也可以对C:\Program Files\Internet Explorer\iexplore.exe文件在桌面上建立快捷方式,以后在桌面上对此IE图标“以管理员身份运行”,即可。 -------------------------------------------------------------------------------- 7、问题:我的操作系统,为什么用智能窗的打开Word文档后界面出现很多虚线框?要调整显示器显示比例为100%才可以? 回答:产生这一问题主要原因是Win10操作系统下应用程序兼容性设置有关。解决此问题请按如下方法进行: 1、进入WebOffice安装文件夹C盘WebOffice目录(C:\WebOffice)(旧版WebOffice则是解压后的文件夹),找到tool文件夹里的WebOfficeBrowser.exe,右键属性,找到兼容性面板,见下图: 2、在上图点击:更改高DPI设置 按钮后,见下图: 在上图的替代高DPI缩放行为前的复选框打勾。 -------------------------------------------------------------------------------- 8、问题:控件怎么保存不成功,再打开卡了? 回答:如果控件能正常编辑OFFICE文档,但发现保存后文档是空值,有两个情况会这样: 其一是:自已写后台接收器代码,此代码有误无法正常工作,请下载 test.html测试此接收器代码是否能正常实现文件上传接收。 其二是:你当前使用的Office版本未激活,请先激活后再测试。 当发生文档控件能正常编辑,但保存为空的情况到服务器上时,用控件打开此空文档,则是一个错误格式的文档,可能会卡住,解决办法是查找进程关闭对应的OFFICE程序,或者点控件【文件菜单】-》【清理内存】。然后按上面的两个情况分析解决即可。 -------------------------------------------------------------------------------- 9、问题:控件是如何打开一个文档的? 回答:控件是采用业界标准组件的设计方法,适合B/S,C/S结构的任意架构集成。 具体打开一个文档的执行流程请参考:《控件架构原理》。 -------------------------------------------------------------------------------- 10、问题:打开文档后如何设置文档操作的当前用户名? 回答:控件提供了多个方式实现设置当前操作文档的用户名: 以JS为例: 方法一: document.getElementById('WebOffice').GetApplication.username='呢称';//设置当前操作文档的用户名称为:呢称 alert(document.getElementById('WebOffice').GetApplication.username);//读取当前操作文档的用户名 方法二: document.getElementById('WebOffice').SetCurrUserName='Jeny';//设置当前操作文档的用户名称为:Jeny -------------------------------------------------------------------------------- 11、问题:打开pdf要装PDF阅读器吗? 回答:本地机需装有PDF阅读器,建议使用Adobe Reader XI(PDF)阅读器。 -------------------------------------------------------------------------------- 12、问题:WebOffice控件支持WPS吗? 回答:兼容的。 -------------------------------------------------------------------------------- 13、问题:怎么检测智能窗浏览器的IE版本? 回答:启动智能窗后,在智能窗的地址栏输入如下网址:http://www.officectrl.com/tool/webbrowser/index.html,即可以提示智能窗当前浏览器的版本。 -------------------------------------------------------------------------------- 14、问题:如果设置智能窗里的IE版本? 回答:找到WebOffice安装包解压后的文件夹,进入tool文件夹,找到curruser.reg文件,用记事本打开,其中值为:00002af8 则对应使用IE11,其它值情况见下表: -------------------------------------------------------------------------------- 15、问题:支持多浏览器吗? 回答:最新版的WebOffice永久突破各浏览器的限制,支持所有国内外浏览器。 -------------------------------------------------------------------------------- 16、问题:为什么我无法看到控件? 回答:最主要原因是控件没有注册成功! -------------------------------------------------------------------------------- 17、问题:谷歌Chrome或FireFox最新版支持吗? 回答:都支持,如果您访问本页面使用的是最新版谷歌Chrome浏览器或FireFox,当提示【是否同意打开外部应用】,选择【同意】即可。 -------------------------------------------------------------------------------- 18、问题:网络下载回来的内容有误? 回答:网络下载回来的内容有误有两个情况: 1、 传给Open方法的URL地址有问题,此地址不能正确下出一个完整的文档出来引起的。解决的办法是用alert()语句将传给Open方法的地址变量打印出来,然后放后浏览器访问看是否用此地址能下载一个完整的二进制Office文档内容,可以用记事本打开查看下里面的内容是文本还是二进制,如果二进制则是正确的,如果是文本内容则有误。 2、本机安装的OFFICE版本可能是简化版引起,如Office2007简化版等,解决办法安装完整版的Office或WPS2016等。 -------------------------------------------------------------------------------- 19、问题:出现“Com Activex脚本不可用”等脚本错误信息? 回答:当客户端通过控件用OFFICE2007以上版本打开低版本DOC文档,当正常保存后,再次用控件保存后的文档时出现“Com Activex脚本不可用”等提示,这个问题是属OFFICE高低版本转换产生的BUG,解决的办法是找到保存后的文档或原始低版本文档,双击用WORD打开后,在文件菜单另存文档为DOCX格式后,再次打开DOCX格式文档,然后再另存为DOC文档,通过这样连续转换后DOC文档即可以正常通过控件打开保存。 -------------------------------------------------------------------------------- 20、问题:为什么我打开Excel文档时有下面这个提示? 回答:当使用控件Open方法打开Excel文档时Open方法参数设置如果不正确有可能产生上面错误提示后导致无法打开Excel文档。 解决的方法是,要确认Open方法里打开地址的对应的Excel文档的格式是xls还是xlsx。建议手动下载这个URL地址的EXCEL文档后,用Ultraedit或EditPlus等编辑器查看此EXCEL文档的二进制码。 如果看到是下字样: 表示此Excel文档是xls格式的,则使用Open方法打开时语句类似:document.getElementById("WebOffice").Open(excle文档地址,flase,'Excel.Sheet')来打开此文档。 如果看到是下字样: 表示此Excel文档是xlsx格式的,则使用Open方法打开时语句类似:document.getElementById("WebOffice").Open(excle文档地址,flase,'xlsx')来打开此文档。 注意:如果您使用的是2019以上版本的WebOffice可以试着用如果语句直接打开Excel文档: document.getElementById("WebOffice").Open(excle文档地址) 即只给Open方法传入Excel地址即可,其它交由控件智能判断。 -------------------------------------------------------------------------------- 21、问题:安装WebOffice文档控件后台需要其他配置吗? 回答:不需要。我们的控件是使用http标准协议,与后台服务器无关,后台无须任何安装配置,使用极为简单。 -------------------------------------------------------------------------------- 22、问题:支持手写签名吗? 回答:最新版本支持手写签名,加密的电子盖章(印章,签章),手工绘制图片,从服务器插入浮动图片,支持从服务器和从本地加入签名印章(可放入U盘)等功能。 -------------------------------------------------------------------------------- 23、问题:控件有一个ActiveDocument对象,该对象有一个方法及参数如:SaveAs(路径,参数)?该怎么使用? 回答:SaveAs方法有两个参数,第一个参数路径是指本地文档的完整路径,表示控件将把文档存到指定的本地路径;第二个参数是保存文档的格式类型,该参数的详细值说明,可参考微软的VBA手册,地址为:https://docs.microsoft.com/zh-cn/office/vba/api/word.wdsaveformat -------------------------------------------------------------------------------- 24、问题:如何插入浮动图片并设置透明背景色? 回答:如下函数可以将一个背景色是白色的图片增加到控件文档,并且设置为浮动,颜色是透明: function AddPicture() { WebOffice = document.getElementById('WebOffice'); var doc = WebOffice.ActiveDocument; doc.Shapes.AddPicture( "c:\\我的文档\\My Pictures\\test.gif", false,true); doc.Shapes(doc.Shapes.Count).Select(); var range = doc.Application.Selection.ShapeRange; range.WrapFormat.Type = 3; range.PictureFormat.TransparentBackground = true; range.PictureFormat.TransparencyColor = 0xFFFFFF; range.Fill.Visible = false; }-------------------------------------------------------------------------------- 25、问题:如何调用Word的内置对话框? 回答:使用控件的ActiveDocument的Application的Dialogs集合索引对象(Dialog)的Show()函数。比如,以下Javascript语句显示插入图片对话框。有关Dialogs(索引)请参阅编程手册。 WebOffice = document.getElementById('WebOffice'); WebOffice.ActiveDocument.Application.Dialogs(163).Show()。 //也可以使用: WebOffice = document.getElementById('WebOffice'); WebOffice.WebDialogs(163)-------------------------------------------------------------------------------- 26、问题:客户端不安装Office能不能使用? 回答:可以,如果你本机装有WPS,则可以不用安装OFFICE。 -------------------------------------------------------------------------------- 27、问题:能否让用户只能在痕迹保留模式下工作? 回答:WebOffice文档控件通过关闭工具菜单,关闭审阅工具栏和右键关联的审阅上下文菜单,完全可以做到强制痕迹保留。 -------------------------------------------------------------------------------- 28、问题:为什么在OfficeXP版本下Word不能打印预览?Excel可以? 回答:因为Word2002和2003版本在退出打印预览时的BUG(微软公布了),会导致Word出现内存保护错误,因此,我们取消了对Word2002和2003版本的打印预览支持。但是,Office2000中的Word 2000,Excel 2000,以及OfficeXP,Office2003中的Excel都可以支持打印预览。 -------------------------------------------------------------------------------- 29、问题:为什么批注回复的保存后就变了显示的样式? 回答:如果发生此问题,则在保存里先将文档通过SAVEAS方法保存到本地电脑缓冲文件夹里,然后再通过WebUploadFile方法上传到指定Web服务器。 1、首先获得本地电脑缓冲文件夹使用TempFilePath属性返回,JS编程如:var tempPath=WebOffice.TempFilePath;var tempfile=tempPath+ +"/a.docx"; 2、再将文件保存到本地缓冲,JS编程如:WebOffice.SaveAs(tempfile,16); 后面的16值可以通过此网址查看说明:https://docs.microsoft.com/zh-cn/office/vba/api/word.wdsaveformat 3、 通过WebUploadFile方法上传,JS编程如: var strSaveUrl = 'http://localhost/aa/upload.php'; //接收器的地址 hr=document.getElementById('WebOffice').WebUploadFile(strSaveUrl,tempfile) -------------------------------------------------------------------------------- 30、问题:智能窗如何才能支持SESSION认证? 回答:当用户使用智能窗打开系统内页时,SESSION值如何传递的问题: 1、当用户登陆系统时,记下当前机器的IP、用户的帐号名称和登陆时间存入数据库等字段(也可以使用Application来存储),关将帐号名和登陆时间统一成字符串后进行MD5加密产生一个密码串并根据需要把要用的SESSIN值存入数据库相应字段里。 2、在打开智能窗时把账号名和MD5加密串分别用URL参数如http://www.aa.com/aa.jsp?fileid=1&user=账号名&token=MD5加密串,进行传递 3、在aa.jsp通过获得的账号名,找到库里(或Application)存储的此账号在当前访问的机器IP最近一次登陆的时间,通过前面登陆时使用的加密算法对账号和从库里取出的时间进行MD5加密,得出一个新的加密字符串,如果此加密字符串与网址里aa.jsp?fileid=1&user=账号名&token=MD5加密串里token参数的值一至且机器IP地址一致,则一定是同一个人操作,接下来再到库(或Application)中把对应的SESSION值读取出来就可以了。 验证通过! -------------------------------------------------------------------------------- 31、问题:感觉控件有时打开会变慢? 回答:因为当你关浏览器时,由于控件不是浏览器的进程,只能通过浏览器发消息通知控件退出,控件又要通知本地的WORD进程退出,这里肯定有一个时间间隔,跟本机响应性能也有一定关系,此过程由于WORD是比较大的程序,WORD退出与启动要时间,占用内存多,所以一般WORD退出比较慢,而此时你立马打开下一个WORD,而上一个WORD还在退,这样会感觉变慢了,而实际是这个系统内部进程堵在那里,这也是产生这一现象的常见原因。解决办法是两次打开尽量不要太快或者在JS代码设置下延时1秒执行OPEN方法。 -------------------------------------------------------------------------------- 32、问题:控件上传的WORD文件是word2003版本的doc还是word2007版本的docx,这个是由什么决定的呢? 回答:在默认情况由本地机的WORD版本决定,比如你本机装的是word2007以上版本,一般都是以docx的格式上传的,如果你本地机装的是word2003版本,则是以doc格式上传。 另外注意:如果本地机装的是Word2003,则是打不开服务器上的word2007以上版本存的WORD文档,因为里面的二进制格式都是docx的,虽然有时侯服务上的word文档扩展名也是.doc,但内部可能还是docx格式的数据,所以本地机Word2003是无法打开的。 为了统一使用,可以建议用户统一使用word2007以上的版本的office。 如果本机装有OFFICE2007以上版本的Word,则可以自定义保存的Word文档的doc或docx格式,方法是调用控件的Saveas方法,在本地机生成好doc或docx文档后,再通过控件的WebUploadFile方法上传该文档到服务器。 -------------------------------------------------------------------------------- 33、问题:为什么有时侯发现服务器文档是有0大小的文档? 回答: 技术员在做WebOffice控件集成,一般都会借助示例写好的代码集成,由于个别示例并没有在代码端做文档的大小判断,所以技术员在集成好后,要在服务器上的jsp、php或.net等编写的接收器保存的代码前加一个判断,即在接收到上传过来的文档内容后,要判断下这些内容的大小,如果大小为0,不保存才行。 通过上述方法将保存代码加强一下,以确保数据准确。 -------------------------------------------------------------------------------- 34、问题:为什么我本机环境测试有些文件可以保存成功,有些不行? 回答:如果控件能正常打开文档,但在保存时发现有些文件可以保存成功,有些不行,则很可能是这些保存不上的文件大小是较大如3M以上等,本地机IIS等WEB服务器有上传文件大小有限制,不充许接收这么大的文件,解决办法是设置对应WEB服务器的上传文件大小值,即可。 如PHP用的apache服务器设置方法是找到php.ini后,对下面的数据做相应修改即可: upload_max_filesize 8m 望文生意,即允许上传文件大小的最大值。默认为2M post_max_size 8m 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M 说明:一般地,设置好上述参数后,在网络正常的情况下,上传<=8M的文件是不成问题 但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。除非你的网络真有100M/S的上传高速,否则你还得继续设置下面的参数。 max_execution_time 600 每个PHP页面运行的最大时间值(秒),默认30秒 max_input_time 600 每个PHP页面接收数据所需的最大时间,默认60秒 memory_limit 8m 每个PHP页面所吃掉的最大内存,默认8M -------------------------------------------------------------------------------- 35.如何按CTRL+S快捷键保存文档? 回答:1、开启用智能窗弹窗方式访问并打开WORD文档。 2、在网页里加入如下JS代码: function keyDown(e){ e.preventDefault(); var currKey=0, e=e||event||window.event; currKey = e.keyCode||e.which||e.charCode; if(currKey == 83 && (e.ctrlKey||e.metaKey)){ //这里加入控件保存的接口JS代码 } } document.onkeydown = keyDown;3、使用时应先点击网页,让网页获得焦点,然后再按CTRL+S。 -------------------------------------------------------------------------------- 36.为什么提示没有注册类? 回答:本地机没有安装可以打开DOC等文档的Office或WPS软件,或已安装但是可能是简化版,请参考: http://www.officectrl.com/weboffice_starter.html 第3点关于产品软硬件环境要求。重装OFFICE软件。 -------------------------------------------------------------------------------- 37.关于是否直接在浏览器内部显示控件,而不用弹窗? 回答:控件可以同时支持内㠌网页方式和弹窗网页方式显示的。 只是需依不同浏览器,选择不同的方式: 内㠌网页方式访问:如果你的项目使用IE内核 或360等国内浏览器IE内核模式访问或chrome42版本以下,则直接内㠌网页访问即可,64位系统则在本地机找到32位IE后(具体位置在:系统磁盘C盘->Program Files (x86)\Internet Explorer\iexplore.exe,可以将此程序发送到桌面快捷方式),右键管理员运行此IE或此快捷方式访问。 弹窗网页方式访问:如果你用的是最新版CHROME,FIREFOX等浏览器访问,则应采用弹窗模式访问,弹窗方式显示控件本质上也是网页内㠌方式显示的,只是做法有不同,多弹出了一个界面而已。实际使用时为了获好的稳定性和跨所有浏览器,建议用弹窗网页方式访问! -------------------------------------------------------------------------------- 38.控件安装CMD命令窗提示复制文件成功,其它提示也正常,控件安装正常,为什么打开含控件的网页是空白,没看到控件的标题等界面,提示JS错误对话框? 回答:发生这个问题很有可能是此台电脑上的IE浏览器安全性设置不是默认等级,请设置此IE的internet访问安全性为默认即可解决问题! -------------------------------------------------------------------------------- 39.网页有DIV层,想显示在控件界面上方,但总是被控件遮住在下方,怎么办? 回答:控件是OBJECT类型,由于OBJECT会遮蔽掉页面内容,但是IFRAME又可以遮蔽掉OBJECT和select下拉列表,而DIV可以遮蔽掉IFRAME,所以我们在浮动的DIV中放入一个IFRAME,让IFRAME遮蔽OBJECT、DIV遮蔽IFRAME。 代码: <div style="position:absolute;z-index=1;"> <iframe src='about:blank' frameBorder='0' marginHeight='0' marginWidth='0' style='position: absolute; visibility: inherit; top: 0px; left: 0px; width: 100%; height: 100%; z-index: -1; filter: alpha(opacity = 0);'></iframe> <!-- 此处可以放需要展示在OCX控件之上的代码(菜单栏),如果存在多处则需要添加多个--> </div>注意: 1.div必须有特定的z-index且大于iframe的z-index,不能是auto或空; 2.iframe的z-index必须为负(之前一直设置为正值,虽然小于div的z-index,但一直不能被div遮盖),否则,div无法遮盖iframe; 3.iframe的top和left为0,且iframe的宽、高与div的宽高相等; 4.注意设置iframe的透明度为0。 这里的iframe是全屏遮蔽的,如果只需要遮蔽一部分,修改iframe 的样式。 或者百度查找:ocx object 层 查找相关解决方案。 本站示例:http://www.officectrl.com/demo/screen 解决了object层的问题。 -------------------------------------------------------------------------------- 40.是否支持流文件方式打开保存文档? 可以支持流文件方式打开文档,比如java开发的话,开发人员可以写一个action,读取数据库中的文件流下载,那么就可以把这个action的地址赋值给Open方法的第一个参数。 如果:Downfile.do?id=123 访问这个地址就可以下载office文档的话, 那么:WebOffice.Open("Downfile.do?id=123",true,"Word.Document");就可以打开这个文件。 如果: Uploadfile.do?id=123可以接收客户端发送到服务器的二进制流数据,则可以用Save方法完成此数据的发送工作,实现文档保存:WebOffice.Save(Uploadfile.do?id=123)。 -------------------------------------------------------------------------------- 41.为什么提示没有注册类? 原因可能是:1)电脑上真的没有安装office软件;2)office软件本身出现问题,需要修复安装一下。可能用户会说自己本地使用office很好的,没有任何问题,但是用户不清楚Office软件本身分为用户接口和程序接口,office安装后安装了上万的文件,有的文件是系统级的,安装或卸载其他软件的时候,有文件被过老的版本替换了,或者被卸载了,都会造成程序接口出问题。 解决办法:如果已经安装过office办公软件,则卸载当前的office,重启电脑,重新安装office办公软件(安装的office软件必须是完整的安装版,不能是简易版或者绿色版)。如果没有安装office,则安装office办公软件即可。 -------------------------------------------------------------------------------- 42.WebOffice是不是支持中文名的文件,能不能支持非Web系统目录下的文件? 打开文件时调用的Open方法的第一个参数是文件在服务器上的磁盘路径,即使路径或文件名中包含中文也是可以支持的。非web目录下的当前服务器上的任意磁盘上的文件都支持。 建议采用ID号在数据库建立服务器文件夹文档的索引,读取和保存文档时通过后端语言java,jsp,php,c#等读取此文档的二进制流返回。 -------------------------------------------------------------------------------- 43.为什么文档打开进度条加载速度慢? 文档打开的进度分四个部份: 0~10% ocx初始化阶段,程序文件1M多,这个过程很快的; 10%~50% 下载文件阶段,这个就要看网络环境了,下载慢,只能从改善网络环境下手; 50%~80% 启动本地office阶段,由于WORD.exe或Eexcel.exe是较大的程序,加载到本地机进程需要较多时间的, 如果慢的话,重新安装一下office一般都能解决。 80%~100% 是Word.exe或Excel.exe真正打开已下载的文档的时间。 -------------------------------------------------------------------------------- 44.如何实现文档关闭前提示用户是否保存? 最新版的WebOffice在启用智能窗浏览的情况下是支持窗口关闭前提示用户保存的。通过在控件页增加特定的JS函数名称的代码,即可触发响应,对应代码如下: function isUnloadJs() //isUnloadJs函数是智能窗退出时自动响应执行。 { if(confirm('是否真的关闭本窗口?')) { //这里写你的JS代码逻辑 alert("任务完成!"); }else{ isExit = 0;//isExit为固定变量用于与智能窗交互,当值为0时,表示不关闭本窗口 } } -------------------------------------------------------------------------------- 45.能不能支持文档合并功能 支持文档合并功能。 不但支持多个Word文档的合并,而且支持把图片、Excel插入到Word文档中的合并。 -------------------------------------------------------------------------------- 46.最大支持多大的文件?是不是对文档大小有限制? 然从理论上来说WebOffice并没有限制过文件的大小,但是在线处理Office文档,最好不要超过50M。 -------------------------------------------------------------------------------- 47.打开文档提示下载的数据格式有误。 1、不能打开0字节文件,因为下载0字节的文件与文件不能下载是一样的。WebOffice可以打开空白的docx格式文件,但是不能打开0字节的docx文件,因为0字节的文件不是合法的docx格式。 微软的office纠错能力强,比如一个1.txt中的内容是123,把1.txt改名为1.docx那么word自动就可以打开,再保存一下的话,就自动被office修正为docx格式文件了,基于这个特点,在桌面上右键新建一个word文件的时候,默认的就是一个0字节的文件,但根本就不是一个合法的docx格式,把这个文件打开后,另存一下就不是0字节的文件了,就是一个真正的空白的docx格式文件了。 2、可能下载的文档数据格式是当前OFFICE程序不能识别打开的文档类型 -------------------------------------------------------------------------------- 48.怎样获取整个Word文件中的纯文本字符串内容? 在客户端用js获取: var txt = document.getElementById("WebOffice").ActiveDocument.Content.Text; -------------------------------------------------------------------------------- 49.是否可以在不显示或不打开word文档情况下进行打印? 不打开Word文件是肯定不能打印的,可以在点自己的打印文件按钮时用一个隐藏的iframe加载一个页面打开word文档,在AfterDocumentOpened事件里执行js:document.getElementById("WebOffice").PrintOut() ,这样一来用户看不到文件打开,但还是把文件打印了。 -------------------------------------------------------------------------------- 50.ASP.NET文件保存操作,当文件比较大时,发现保存不成功 ASP.NET 默认上传文件是4M ,可以修改服务配置.. -------------------------------------------------------------------------------- 51.怎样实现全文检索功能? 在保存文件的时候,通过获取Word文件的所有纯文本内容保存到数据库文档记录表的一个独立的字段中,这就意味着数据库中保存的纯文本内容和word文件中的文字一直都是完全一样的,做全文检索的时候只需要对文档记录表做SQL查询即可。 -------------------------------------------------------------------------------- 52.怎样获取Word文件中的所有痕迹? function allRevisions() { try{ var RevCount; RevCount = document.getElementById('WebOffice').GetRevCount(); alert("共有"+RevCount+"修订痕迹"); for(var i=1; i<= RevCount; i++) { chrOper = document.getElementById('WebOffice').GetRevInfo(i,2); if("1" == chrOper){ chrOper = "插入"; }else if("2" == chrOper){ chrOper = "删除"; }else{ chrOper = "设置格式"; } editDate = new String(document.getElementById('WebOffice').GetRevInfo(i,1)); alert(editDate + " 用户:"+document.getElementById('WebOffice').GetRevInfo(i,0) + "\r\n操作:" + chrOper + "\r\n内容:" + document.getElementById('WebOffice').GetRevInfo(i,3)); } }catch(e){ alert("信息提示:\r\n出错内容:"+e+"\r\n错误代码:"+e.number+"\r\n错误描述:"+e.description); } } -------------------------------------------------------------------------------- 53.js实现保护文档? 可以使用ProtectDoc方法实现文档保护,具体可参考api手册 -------------------------------------------------------------------------------- 54.如何在打开文件的时候让Word跳转到指定页? 比如跳转到Word文档第三页,可用如下语句: document.getElementById('WebOffice').ActiveDocument.Application.ActiveWindow.Selection.GoTo(1,2,0,3); 关于上面Goto接口的具体的用法,可以参考微软VBA手册。 -------------------------------------------------------------------------------- 55.一个WEB页面能不能打开多个OFFICE文档 由于WebOffice架构的特殊性,一个页面中不能加载多个WebOffice打开多个文件。 如果在某些情况下用户强烈要求一个页面加载两个或更多的office文件,推荐使用多个div实现的tab效果,每个tab中使用iframe加载一个独立的页面,在这个独立页面中集成一个WebOffice,每次只显示一个tab中的office文件,点击tab标签实现多个office文件的切换。 注意:当一个tab切换出来的时候,执行一下下面的js,设置一下当前tab中的WebOffice为活动状态: document.getElementById("WebOffice").Activate(); -------------------------------------------------------------------------------- 56.在线打开的word或excel文件如何下载到本地客户端电脑上? 1 可以使用控件的“文件”菜单中的“另存为”就可以保存文件到本地电脑; 2 或添加自定以按钮执行js:document.getElementById("WebOffice").ShowDialog(2); 3 可以使用DownLoadFile方法 -------------------------------------------------------------------------------- 57.如何在word光标处插入文本? 1 可以使用SetFieldValu方法 WebOffice.SetFieldValue('','这里填写要加入的内容','::ADDMARK::'); 2 可以使用InSertFile方法,把服务器上的WORD文档或文本文本加入到当前光标处 WebOffice.InSertFile('http://www.officectrl.com/temp/file1.doc',0); 3 使用WebAddText方法 WebOffice.WebAddText('http://www.officectrl.com/temp/text.txt'); 4 使用ActiveDocument方法 WebOffice.ActiveDocument.Application.Selection.Text -------------------------------------------------------------------------------- 58.office2003安装了打开docx文件的兼容包后可以打开文件吗? 不能支持。就目前测试过的安装了2007的兼容包的office2003的客户端电脑,打开保存docx格式的文件不稳定,有的是不能打开文件,有的是保存有问题。微软对office2003提供的2007的兼容包,只是解决了用户接口的问题,本地打开docx格式的文件还是可以的,但是程序接口上处理的不够完善,所以在线打开文件就不稳定,并且就目前的情况来看,微软不再发布新的补丁包解决程序接口上的问题。所以如果您的局域网里安装的既有Office2003也有Officer007,推荐WebOfice打开、创建文件都用Office2003的doc格式,这样整个局域网的电脑就都能兼容了。 -------------------------------------------------------------------------------- 59.打开文档的时候能用web视图吗? WebOffice.ActiveDocument.Application.ActiveWindow.ActivePane.View.Type = 6;//web视图 此外还有其它视图,如大纲版式,页面视图,vba代码如下: WebOffice.ActiveDocument.Application.ActiveWindow.ActivePane.View.Type = 3;//页面视图 WebOffice.ActiveDocument.Application.ActiveWindow.ActivePane.View.Type = 5;//大纲视图 -------------------------------------------------------------------------------- 60.163邮箱有预览文档的功能,那里面打开的速度很快但是不能编辑,能否实现同样的只读快速打开预览? 1. 保存文件的同时调用WebSaveAsHtml方法,把文件另存为页面,那么下次打开html肯定是很快的,缺点保存的html会丢失word文档中的部分格式; 2. 保存文件的同时调用WebSaveAsPDF方法,把文件保存成PDF,客户端预览的时候直接查看pdf文件即可。 -------------------------------------------------------------------------------- 61.怎么样控制一个文档只让一个用户打开,防止多个人同时打开同一份文件? 已提供了一个并发编辑控制的示例:http://www.officectrl.com/down/16.word.rar -------------------------------------------------------------------------------- 62.怎么设置打开文件的页面的百分比(缩放视图)? WebOffice.ActiveDocument.Application.ActiveWindow.ActivePane.View.Zoom.Percentage = 100;// word比例按100%显示 -------------------------------------------------------------------------------- 63.如何打开Excel文件的时候显示指定的Sheet工作薄? // 设置指定的Sheet为当前显示的Sheet function showSheet(sheetName) { var sMac = "function myfunc()" + "\r\n" + "Application.Sheets(\""+ sheetName +"\").Select \r\n" + "End function"; document.getElementById("WebOffice").RunMacro("myfunc", sMac); } -------------------------------------------------------------------------------- 64.WebOffice怎样新建word文件? 1.可以使用CreateNew方法来新建文档,具体参考API手册 2.在一个办公系统中总是会存在模板文件的,即一个空文件也可以看做一个空白的模板。需要新建文的时候,不管是java开发还是asp.net开发或PHP开发,都可以自己写代码拷贝模板文件为一份新文件来实现文件的新建操作,然后用WebOffice在线打开新文件即可。 -------------------------------------------------------------------------------- 65.如何判断Word文件是否已经修改过? document.getElementById("WebOffice").IsDirty;可以获取文件是否被修改的状态。 此属性目前仅支持Word。当文档已被修改且尚未保存时,返回true;当文档未被修改或已保存时,返回false。 -------------------------------------------------------------------------------- 66.发现Word文档保存后有些内容没有保存? 建议用DOC通用一些,你可以这样,在保存WORD到服务器上时可以选DOC格式存在服务器上的,用saveas方法存为本地doc后上传到服务器,上传用webupload方法 saveas方法的参数参考:https://docs.microsoft.com/zh-cn/office/vba/api/word.wdsaveformat WebOffice.ActiveDocument.SaveAs(tempFile,0); tempPath=WebOffice.TempFilePath; tempName = "temp.doc"; //确定缓冲文件的全路径和文件名 tempFile=tempPath + tempName; //将需要保存的文档存到缓冲文件 WebOffice.ActiveDocument.SaveAs(tempFile,0); //调用控件方法,将缓冲文件保存到服务器 a=WebOffice.WebUploadFile(strSaveUrl,tempFile); WebOffice.DeleteLocalFile(tempFile); 像上面保存文件到服务器 strSaveUrl 为接收器的JSP等的代码,WebUploadFile与Save方法的接收器代码一样的。 -------------------------------------------------------------------------------- 67.Chrome总是弹出协议对话框,是否可以不显示? 答:可以!用记事本将以下代码复制并保存文件名为a.reg,然后双击运行! Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome] "ExternalProtocolDialogShowAlwaysOpenCheckbox"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge] "ExternalProtocolDialogShowAlwaysOpenCheckbox"=dword:00000001 -------------------------------------------------------------------------------- 68.使用智能窗时,打开控件的网页如何向原窗口(父窗口)传递JS变量值(返回值)? 答:在智能窗打开的网页(edit.html),这个页面用JS向服务器发送数据,服务器端用APPLICATION变量保存此值,原窗口(父窗口)页用JS每隔1秒查询APPLICATION值,当发现此特定的值时执行相应动作。 -------------------------------------------------------------------------------- 69.打开word文档时发生错误,提示转换文档? 答:发生此问题的原因是本地机的OFFICE版本过低或服务器文档下载回来的不是WORD文档。 如果本地机OFFICE是2003,则升级到office 2007以上完全版即可以正常打开。如果本地机OFFICE已是2007以上版本,则是服务器下载回来的文档有问题 ,请检查服务器上对应的文档后再检查提供给OPEN方法的网址下载回来的是不是一个完整的WORD文档。 -------------------------------------------------------------------------------- 70.智能窗访问时提示"console未定义" 答:产生此问题的原因是本地机IE不支持console对象,解决办法是为网页加入以下脚本: window.console = window.console || (function () { var c ={}; c.log = c.warn = c.debug = c.info = c.error = c.time = c.dir = c.profile= c.clear = c.exception = c.trace = c.assert = function(){}; return c; })(); -------------------------------------------------------------------------------- 71.智能窗访问时提示网络下载回来的文档有误 答:此问题是JS脚本报错,说明执行OPEN方法时产生错误,两个原因: 第一个原因可能是服务器的文档数据大小有问题,或格式有误,如:扩展名.xls的文档实际格式是:.xlsx格式 第二个原因是本地机OFFICE版本不支持此文档打开,可以升级OFFICE或换OFFICE版本测试 -------------------------------------------------------------------------------- 72.打开EXCEL文档时,可以看到控件界面,但里面显示内容一片空白 答:此问题是不同版本的OFFICE编辑EXCEL时,EXCEL软件不兼容引起,如Excel2016编辑并保存后的EXCEL文档再用EXCEL2010打开时,由于版本较低,可能EXCEL2010会认为文档有保护而打不开,具体检查方法是:下载服务器上的此EXCEL文档,用本地EXCEL打开看是否正常,若有如下问题: 表示存在问题,此时用本地EXCEL软件修复此文档能正常编辑保存后,再把此EXCEL上传回服务器,接下来可以正常通过网络控件打开。 -------------------------------------------------------------------------------- 73.集成时要注意什么? 集成注意事项: 1、浏览器或智能窗访问的地址用英文字符或如果包含中文参数则用UTF-8统一编码。 2、打开excel文件xls和xlsx格式不同,open方法打开参数也是不同的。 3、用SAVA方法保存后,浏览器或智能窗要退出,目的是让word,excel等进程退出,保证稳定运行WebOffice控件。 -------------------------------------------------------------------------------- 74.如何只读打开一个文档? 答:当实现用控件WebOffice.Open方法正常打开文档后,再执行以下JS,即可以实现文档阅读状态: WebOffice.Titlebar=false; WebOffice.MenuBar=false; WebOffice.Toolbars=false; WebOffice.IsNotCopy=1; WebOffice.ProtectDoc(1,2,'123'); -------------------------------------------------------------------------------- 75.为什么保存时服务器返回值为"Local\"字符? 回答:由于程序与服务器交互的特别性,当服务器返回 "Local\"字符时,可当作是固定值,接收器需要返回的数据用JS代码进一步分析提取,具体可以参考以下实用示例: 打开保存Word方式一:HttpPost接口实现 打开保存Word方式二:Save接口 下载以上示例下载后,解压,找到对应语言的例子, 找到接收器文件如:postsave.jsp,postsave.php,postsave.aspx.cs,查看返回值的写法如: echo "||&";//标识返回值的开始处 echo "ok"; echo "&||";//标识返回值的结束处 或 Response.Write("||&");//标识返回值的开始处 Response.Write("ok"); Response.Write("&||");//标识返回值的结束处 打开postsave.js文件,参考前端postSave()JS函数里面的代码写法,以分析接收器的返回值。 -------------------------------------------------------------------------------- 76.vue如何集成? 回答:vue里,软件项目的各功能一样用vue写,在需要编辑的文档处起个链接弹出智能窗,像hello world教程(网址:http://www.officectrl.com/lession/weboffice.html)的index.html这样起链接弹窗,智能窗弹开的那个控件网页用传统的html+js来做,像hello world教程的edit.html这样来写,通过这样式方式,降低了开发量和调试难度,也为后面布署维护提高了兼容性和效率。 综上,vue集成用下面步骤实现: 一、学习并制作HELLO WORLD教程和示例,制作的示例有两个文件一个index.html,一个是edit.html,index.html是提供一个链接用于启动智能窗打开控件页,edit.html是控件显示页; 二、在VUE项目里需要用控件打开WORD等文档的网页里建立一个像index.html一样的启动链接启动智能窗,然后智能窗显示页用edit.html一样的传统网页,此网页用html+js来写。 -------------------------------------------------------------------------------- 77.excel如何插入图片? 回答:excel插入图片URL方式: frm.WebOffice.ActiveDocument.Application.ActiveSheet.Pictures.Insert('http://www.officectrl.com/weboffice/images/001.gif'); excel插入图片本地硬盘方式: frm.WebOffice.ActiveDocument.Application.ActiveSheet.Pictures.Insert('c:\\001.gif'); -------------------------------------------------------------------------------- 78.为什么office文档在控件外层显示,而不是内部打开了? 回答:由于Office软件有变化或Office自动更新的产生问题,当用控件打开文档时不是在内部显示而是弹出OFFICE软件显示,解决办法时卸载当前OFFICE软件,重新安装OFFICE软件,安装好后,设置OFFICE不要自动更新! -------------------------------------------------------------------------------- 79.使用控件有的打得开文档,有的打不开文档? 回答:客户端OFFICE版本有关引起的 换OFFICE版本一般都解决的! 如果是控件引起的问题一般所有电脑同样现象的。 http://www.officectrl.com/weboffice123/ 上面这个链接供对比测试这个机环境是否OK 上面的示例如果能打开,说明本地机环境是正常的。这样说明是集成时编程有问题,请检查编写的JS程序。如果不清楚,请下载入门教程示例: http://www.officectrl.com/lession/weboffice.html http://www.officectrl.com/lession/autoopen.html http://www.officectrl.com/demo/word0.1 参考上面的教程或示例,放入项目调试运行通过后,再修改相关参数实现集成。 -------------------------------------------------------------------------------- 80.问:金蝶网站上看到了WebOffice的科普知识https://vip.kingdee.com/article/323512124930654976,通过网络找到weboffice网站,请问金蝶软件上的WebOffice是采用这个软件? 回答:金蝶软件公司采购了我司WebOffice发行版软件,你看到的这个WebOffice科普知识是采用我司WebOffice控件软件的一个应用场景。 -------------------------------------------------------------------------------- 81.问:打开控件页时显示无法显示网页? 回答: 将以下内容存为bat文件后运行: REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v SecureProtocols /t REG_DWORD /d 2720 /f -------------------------------------------------------------------------------- 82.问:下载试用版后为什么控件加载不了? 回答: WebOffice正版用户使用正版后,再在网上下载试用版后产生正版不能使用的原因是weboffice.ocx文件里的版本号与正式版里的版本号不一致导致浏览器加载了试用版软件。 -------------------------------------------------------------------------------- 83.问:Word保存为pdf文档时,WebSaveAsPdf方法能否用httppost等上传代替? 回答: 支持的。 具体方式如下: 1、将示例程序: WebOffice.WebSaveAsPDF(pdfile,strPdfSaveUrl); 这一行 换为: WebOffice.HttpInit(); WebOffice.HttpAddPostFile('file1',pdfile); var strResults=WebOffice.HttpUpload(strPdfSaveUrl); 也一样能保存Pdf文档的。 2、或者 WebOffice.WebSaveAsPDF(pdfile,strPdfSaveUrl); 这行换为: WebOffice.HttpInit(); WebOffice.HttpAddPostFile('file1',pdfile); var bGetDoc=WebOffice.HttpAddPostCurrFile("docfile","");//此外这样写,控件处理的 var strResults=WebOffice.HttpPost(strPdfSaveUrl); 执行上面程序,后台接收器相当于会接到两个文件,一个是FILE1的PDF文档,另一个是WORD文档,这样能保存PDF和DOC文档到服务器
|