点聚weboffice 6.0 ASP.NET 在线Word,excel,wps编辑控件

 WebOffice是一款由北京点聚信息技术有限公司提供的完全免费(商业用途也免费)且功能强大的在线Word/excel/wps编辑辅助控件,可以实现:

1.在线编辑Word、Excel、PPT、WPS... ...
2.全面支持MS Office的界面定制,包括对于Office2007的全面支持
3.修订留痕
4.限制打印、保存、复制
5.直接保存到服务器,支持标准Http Post协议
6.强大的书签管理
7.套红、文档保护
8.模板管理
9.其他功能扩展

点聚WebOffice是基于客户端的ocx控件,它的功能是将Office文档(WordExcelWPS)嵌入到浏览器中,并调用Office中各种接口,完成文档编辑工作,然后使用控件的Http接口模拟表单提交,发送到数据处理页面(此文档举例为saveDoc.asp页,代码见演示文件),完成文档的存档工作。

在本地测试的时后,首先要安装插件和证书WebOffice_Setup.exe和孙小钢.pfx,然后用VS来运行示例,不要直接打开HTML,那样会报错的

webOffice控件自动下载是指在打开网页时,网页会自动把webOffice控件下载下来,从而可以将word、excel嵌入到网页中。控件自动下载的相关代码如下:

 

< object id=WebOffice height=768 width="100%"
style
="LEFT: 0px; TOP: 0px" classid="clsid:E77E049B-23FC-4DB8-B756-60529A35FAD5" codebase="../js/WebOffice1.ocx#version=6,0,4,0">
<param name="_ExtentX" value="6350">
<param name="_ExtentY" value="6350">
object>

上面的脚本意思是: 自动更新classid= FF1FE7A0-0578-4FEE-A34E-FB21B277D561 的COM组件, 更新地址为 ../js/WebOffice1.ocx,codebase后的路径为相对路径也可为绝对路径,要更新的最新版本为6,0,4,0。 此时,IE会自动访问注册表,如果发现当前机器未安装或者当前版本低于6,0,4,0,就会自动下载。

 

WebOffice开发系列02-如何打开文件

单击打开文件按钮,可以在webOffice中打开文件,具体操作如图所示:

打开文档的接口为LoadOriginalFile,其接口描述如下: 原 型: long LoadOriginalFile(BSTR pcFileNameOrUrl, BSTR pcType); 功 能:新建、装载Office文档 参 数: pcFileNameOrUrl: 要装载文件的本地路径或者URL,值为空表示新建文档,如果是在Http的Web环境下,可以传相对路径. pcType: doc:打开、新建Word文件 xls:打开、新建Excel文件 ppt:打开、新建PPT 文件 wps:打开、新建WPS 文件 返回值: 为 0:失败 非0:成功 示 例:

JavaScript Code复制内容到剪贴板

document.all.WebOffice1.LoadOriginalFile("http://127.0.0.1/getdoc.asp?id=8", "doc");
// 通过URL打开一个服务器文件,相对路径
document.all.WebOffice1.LoadOriginalFile("/getdoc.asp?id=8", "doc");
document.all.WebOffice1.LoadOriginalFile(
"./getdoc.asp?id=8", "doc");
// 新建Excel
document.all.WebOffice1.LoadOriginalFile("", "xls");
==================特别注意===============================
建议在NotifyCtrlReady 事件中调用 LoadOriginalFile 接口,否则有可能出现Word窗口脱离IE界面的问题。
for=WebOffice1>
/****************************************************
*
* 在装载完Weboffice(执行)
* 控件后执行 "WebOffice1_NotifyCtrlReady"方法
*
***************************************************
*/

WebOffice1_NotifyCtrlReady()


WebOffice1_NotifyCtrlReady(){
document.all.WebOffice1.LoadOriginalFile(
"", "doc");
}

 

WebOffice开发系列03-修订留痕

webOffice对文档的修订操作提供了丰富的接口,其接口为:document.all.WebOffice1.SetCurrUserName("user_name"); 文档操作的具体步骤如图所示,先以Test用户身份对文档进行编辑,如图所示:

 

编辑完成上传后,其他用户如果想修订文档可以单击“修订文档”的按钮,接口为:

JavaScript Code复制内容到剪贴板
  1. // 开始修订
    document.all.WebOffice1.SetTrackRevisions(1);
    // 接受修订
    document.all.WebOffice1.SetTrackRevisions(4);
      

 

编辑文档的时候字体会针对不同的用户显示不同的颜色,如下图所示:

单击“显示修订”会显示所有其他用户的修改和删除的操作,单击“隐藏修订”时就会隐藏所有的修订, 文档文字的颜色会变成同原文档的文字一样,而且删除的横线也会去掉,其接口如下:

JavaScript Code复制内容到剪贴板

// 隐藏修订
document.all.WebOffice1.ShowRevisions(0);
// 隐藏修订
document.all.WebOffice1.ShowRevisions(0);

如下图所示:

 

单击“接受所有修订”则文档的修订就会生效,否则单击“拒绝所有修订”文档的所有修订失效,文档内容和初稿内容一致。 //接受当前所有修订信息 document.all.WebOffice1.SetTrackRevisions(4); 单击“获取修订信息”则会获取所有对文档进行修订的用户的相关信息及修订日期,接口描述如下: 原 型: BSTR GetRevInfo(long lIndex, long lType); 功 能:获取修订节点的信息(修订人,修订的时间,修订的动作) 参 数: lIndex: 修订的节点编号 lType: 获取的信息编号 返回值: 示 例:

JavaScript Code复制内容到剪贴板

//1.获取修订的用户
vUserName = document.all.WebOffice1.GetRevInfo(i,0);
//2.获取修订的时间
vDate = new String(document.all.WebOffice1.GetRevInfo(i,1));
//3.获取修订的动作
var vRet = document.all.WebOffice1.GetRevInfo(i,2);
vRet
== "1":表示"插入"的操作
vRet
== "2":表示"删除"的操作
//4.获取修订的内容
vUserName = document.all.WebOffice1.GetRevInfo(i,3);
//总体的例子代码
var vCount;
vCount
= document.all.WebOffice1.GetRevCount();
var vOpt = 0;
var vDate;
for(var i=1; i<= vCount; i++){
vOpt
= document.all.WebOffice1.GetRevInfo(i,2);
if("1" == vOpt){
vOpt
= "插入";
}
else if("2" == vOpt){
vOpt
= "删除";
}
else{
vOpt
= "未知操作";
}
vDate
= new String(document.all.WebOffice1.GetRevInfo(i,1));
vDate
= parseFloat(vDate);
dateObj
= new Date(vDate);
alert(dateObj.getYear()
+ "" + dateObj.getMonth() + 1 + "" + dateObj.getDate() +"" + dateObj.getHours() +"" + dateObj.getMinutes() +"" + dateObj.getSeconds() +"" );
alert(
"用户:"+document.all.WebOffice1.GetRevInfo(i,0) + "\r\n操作:" + vOpt + "\r\n内容:" + document.all.WebOffice1.GetRevInfo(i,3));
}

 

WebOffice常用接口调用

JavaScript Code复制内容到剪贴板

// ---------------------=== 控件初始化WebOffice方法 ===---------------------- //
function WebOffice1_NotifyCtrlReady() {
document.all.WebOffice1.LoadOriginalFile(
"", "doc");
}
// ---------------------=== 新建文档 ===---------------------- //
function newDoc() {
var doctype = document.all.doctype.value;
document.all.WebOffice1.LoadOriginalFile(
"", doctype);
}
// ---------------------=== 显示打印对话框 ===---------------------- //
function showPrintDialog() {
document.all.WebOffice1.PrintDoc(
1);
}
// ---------------------=== 直接打印 ===---------------------- //
function zhiPrint() {
document.all.WebOffice1.PrintDoc(
0);
}
// ---------------------== 关闭页面时调用此函数,关闭文件 ==---------------------- //
function window_onunload() {
document.all.WebOffice1.Close();
}

// ---------------------------== 解除文档保护 ==---------------------------------- //
function UnProtect() {
document.all.WebOffice1.ProtectDoc(
0, 1, document.all.docPwd.value);
}

// ---------------------------== 设置文档保护 ==---------------------------------- //
function ProtectFull() {
document.all.WebOffice1.ProtectDoc(
1, 1, document.all.docPwd.value);
}
// ---------------------------== 禁止打印 ==---------------------------------- //
function notPrint() {
document.all.WebOffice1.SetSecurity(
0x01);
}
// ---------------------------== 恢复允许打印 ==---------------------------------- //
function okPrint() {
document.all.WebOffice1.SetSecurity(
0x01 + 0x8000);

}
// ---------------------------== 禁止保存 ==---------------------------------- //
function notSave() {
document.all.WebOffice1.SetSecurity(
0x02);

}
// ---------------------------== 恢复允许保存 ==---------------------------------- //
function okSave() {
document.all.WebOffice1.SetSecurity(
0x02 + 0x8000);

}
// ---------------------------== 禁止复制 ==---------------------------------- //
function notCopy() {
document.all.WebOffice1.SetSecurity(
0x04);
}
// ---------------------------== 恢复允许复制 ==---------------------------------- //
function okCopy() {
document.all.WebOffice1.SetSecurity(
0x04 + 0x8000);

}
// ---------------------------== 禁止拖动 ==---------------------------------- //
function notDrag() {
document.all.WebOffice1.SetSecurity(
0x08);
}
// ---------------------------== 恢复拖动 ==---------------------------------- //
function okDrag() {
document.all.WebOffice1.SetSecurity(
0x08 + 0x8000);

}
// -----------------------------== 修订文档 ==------------------------------------ //
function ProtectRevision() {
document.all.WebOffice1.SetTrackRevisions(
1)
}

// -----------------------------== 隐藏修订 ==------------------------------------ //
function UnShowRevisions() {
document.all.WebOffice1.ShowRevisions(
0);
}

// --------------------------== 显示当前修订 ==---------------------------------- //
function ShowRevisions() {
document.all.WebOffice1.ShowRevisions(
1);

}

// -------------------------== 接受当前所有修订 ==------------------------------- //
function AcceptAllRevisions() {
document.all.WebOffice1.SetTrackRevisions(
4);
}

// ---------------------------== 设置当前操作用户 ==------------------------------- //
function SetUserName() {
if (document.all.UserName.value == "") {
alert(
"用户名不可为空")
document.all.UserName.focus();
return false;
}
document.all.WebOffice1.SetCurrUserName(document.all.UserName.value);
}
// -------------------------=== 设置书签 ===------------------------------ //
function addBookmark() {
document.all.WebOffice1.SetFieldValue(
"mark_1", "北京信息技术有限公司", "::ADDMARK::");
}

// -------------------------=== 设置书签套加红头 ===------------------------------ //
function addRedHead() {
document.all.WebOffice1.SetFieldValue(
"mark_1", "", "::ADDMARK::"); // 添加书签
document.all.WebOffice1.SetFieldValue("mark_1", "E:\\tem1.doc", "::FILE::");
}
// -------------------------=== 设置书签插入图片 ===------------------------------ //
function addImage() {
document.all.WebOffice1.SetFieldValue(
"mark_1", "", "::ADDMARK::"); // 添加书签
document.all.WebOffice1.SetFieldValue("mark_1", "c:\\image\\logo.gif", "::JPG::");
}


// -----------------------------== 返回首页 ==------------------------------------ //
function return_onclick() {
document.all.WebOffice1.Close();
window.location.href
= "index.jsp"
}
// 打开本地文件
function docOpen() {
document.all.WebOffice1.LoadOriginalFile(
"open", "doc");
}
// -----------------------------== 保存文档 ==------------------------------------ //
function newSave() {
document.all.WebOffice1.Save();
}
// -----------------------------== 另存为文档 ==------------------------------------ //
function SaveAsTo() {
document.all.WebOffice1.ShowDialog(
84);
}
// -----------------------------== 隐藏菜单 ==------------------------------------ //
function notMenu() {
document.all.WebOffice1.SetToolBarButton2(
"Menu Bar", 1, 8);
}
// -----------------------------== 显示菜单 ==------------------------------------ //
function okMenu() {
document.all.WebOffice1.SetToolBarButton2(
"Menu Bar", 1, 11);
}
// -----------------------------== 隐藏常用工具栏 ==------------------------------------ //
function notOfter() {
document.all.WebOffice1.SetToolBarButton2(
"Standard", 1, 8);
}
// -----------------------------== 显示常用工具栏 ==------------------------------------ //
function okOfter() {
document.all.WebOffice1.SetToolBarButton2(
"Standard", 1, 11);
}
// -----------------------------== 隐藏格式工具栏 ==------------------------------------ //
function notFormat() {
document.all.WebOffice1.SetToolBarButton2(
"Formatting", 1, 8);
}
// -----------------------------== 显示格式工具栏 ==------------------------------------ //
function okFormat() {
document.all.WebOffice1.SetToolBarButton2(
"Formatting", 1, 11);
}

function ShowToolBar_onclick() {
//通过Document->application->CommandBars 获取到菜单对象
var vObj = document.all.WebOffice1.GetDocumentObject().Application.CommandBars("电子印章");
vObj.Visible
= !vObj.Visible
}
function AddSeal_onclick() {
//通过Document->application->CommandBars 获取到菜单对象
var vObj = document.all.WebOffice1.GetDocumentObject().Application.CommandBars("电子印章");
if (vObj) vObj.Controls("盖章").Execute();
}

 下载地址:http://www.51ascx.com/211.html

posted @ 2011-03-17 11:14  小眼睛Smile  阅读(5019)  评论(6编辑  收藏  举报