1.新建文档
方式一:CreateNew接口
用ProgId方式依本地机OFFICE版本新建文件方式,此方式如果本地机是Office2003则建立的文档是DOC,XLS,PPT等格式,如果本地机是OFFICE2007以上版本,则建立的文件是DOCX,XLSX,PPTX等格式。
//新建WORD文档
document.getElementById('WebOffice').CreateNew("Word.Document");
//新建EXCEL文档
document.getElementById('WebOffice').CreateNew("Excel.Sheet");
//新建PPT文档
document.getElementById('WebOffice').CreateNew("PowerPoint.Show");
也可以写成
网页获到WebOffice编程对象:
var WebOffice=document.getElementById('WebOffice');
执行上面语句,则WebOffice即为JS的控件编程对象,有了此对象名,即可访问相关接口,让控件工作。
//新建WORD文档
WebOffice.CreateNew("Word.Document");
//新建WORD文档
WebOffice.CreateNew("Excel.Sheet");
//新建PPT文档
WebOffice.CreateNew("PowerPoint.Show");
上面两个写法是相同的,下面的接口也类似。
方式二:Open接口
采用模板方式建立(实际项目开发式建议此方式)
在服务器上存放好DOC,DOCX,XLS,XLSX,PPT,PPTX等格式的模板文件,需要建立时打开对应格式的模板文件即可。
1.打开一个空白doc文档,建立doc文档
WebOffice.Open('http://www.officectrl.com/weboffice/temp/word.doc',true,"Word.Document");
2.打开一个空白xls文档,建立xls文档
WebOffice.Open('http://www.officectrl.com/weboffice/temp/excel.xls',true,"Excel.Sheet");
3.打开一个空白ppt文档,建立ppt文档
WebOffice.Open('http://www.officectrl.com/weboffice/temp/ppt.ppt',true,"PowerPoint.Show");
4.打开一个空白docx文档,建立docx文档
WebOffice.Open('http://www.officectrl.com/weboffice/temp/word.docx',true,"Word.Document");
5.打开一个空白xlsx文档,建立xlsx文档
WebOffice.Open('http://www.officectrl.com/weboffice/temp/excel.xlsx',true,"xlsx");
6.打开一个空白pptx文档,建立pptx文档
WebOffice.Open('http://www.officectrl.com/weboffice//temp/ppt.pptx',true,"pptx");
2.打开文件方法:Open接口
1.打开本地路径的文件:
document.getElementById('WebOffice').Open("c:\\aa.doc");
2.指定用WORD来打开本地文本文件:
document.getElementById('WebOffice').Open("c:\\aa.txt",true,"Word.Document");
3.打开服务器上的文件:
document.getElementById('WebOffice').Open("http://aaa.com/aa/a.doc");
4.指定用WORD来打开服务器上的文件:
document.getElementById('WebOffice').Open("http://aaa.com/aa/a.doc",true,"Word.Document");
5.二进制流的方式打开文件:
document.getElementById('WebOffice').Open("http://aaa.com/aa/a.jsp?id=1",true,"Word.Document");
上面open方法的第二个参数 false,true是可以自由选择的,暂未起实质作用。
3.保存文件
3.1保存文件到本地电脑
save接口
document.getElementById('WebOffice').Save("c:\\aa.doc");
saveas接口
document.getElementById('WebOffice').ActiveDocument.SaveAs("c:\\aa.doc");
3.2保存文件到服务器
采用HTTP标准协议上传文件,在服务器端需要运行一个jsp、php、.net或Node.js等脚本,用于接上客户端上来过来的文件并保存到服务器硬盘或数据库里。
这个接收脚本页面编写类似于传统网页表单Post上传接收文件的一个页面,此页面完成数据接收保存工作。
接收页面的地址类似于:http://www.officectrl.com/officecs/upload.aspx?id=1
3.2.1 save方法
如:strSaveUrl = "http://www.officectrl.com/officecs/upload.aspx?id=1";
则:
document.getElementById('WebOffice').Save("http://www.officectrl.com/officecs/upload.aspx?id=1");
或
document.getElementById('WebOffice').Save(strSaveUrl);
3.2.2 httppost方法
模拟表单Post上传,采用标准Http协议Post上传文档数据,将文档Post到一个动态页面 (servlet,jsp,php,aspx,asp,node.js......),由此动态网页负责接收和保存上传过来的参数变量和文档二进制数据。
HttpInit();
HttpAddPostString(参数名,参数值);
HttpAddPostCurrFile("docfile",上传文档名称);
HttpPost(服务器动态页面地址);
示例:
//初始化Http引擎,最新版控件可以不需要再初始化
document.getElementById('WebOffice').HttpInit();
//增加上传参数变量,类似与表单录入框名称和值,比如下面语句:ID为名称,202001为值
document.getElementById('WebOffice').HttpAddPostString("id","202001");
document.getElementById('WebOffice').HttpAddPostString("User","张三");
//将控件里打开的WORD文档以A.DOC名称上传,docfile为固定的参数
document.getElementById('WebOffice').HttpAddPostCurrFile("docfile", "a.doc");
//上面语句为准备上传的数据,接下来执行模拟表单上传动作
document.getElementById('WebOffice').HttpPost("http://www.officectrl.com/officecs/upload.aspx?id=1");
注意用Save方法保存与httpPost方法保存的接收程序写法是不同的,具体可以参考相关示例:
HttpPost接口实现
http://www.officectrl.com/down/word0.1.rar
Save接口
http://www.officectrl.com/down/word0.2.rar
4.DeleteLocalFile 删除本地电脑的一个文件
WebOffice.DeleteLocalFile('c:\\a.doc');
或
document.getElementById('WebOffice').DeleteLocalFile('c:\\a.doc');
5.SetCurrUserName 设置当前用户
一般打开文档后,需要设置当前操作的用户名(项目开发时常用到)
document.getElementById('WebOffice').SetCurrUserName("呢称");
6.SetCurrTime 设置当前时间
(留痕会显示("Like 2020:03:01 9:10:7")
document.getElementById('WebOffice').SetCurrTime("2020:03:01 9:10:7");
7.SetTrackRevisions 修订留痕
设置当前打开的文档为留痕状态
document.getElementById('WebOffice').SetTrackRevisions(1);
设置当前打开的文档为非留痕状态
document.getElementById('WebOffice').SetTrackRevisions(0);
接受此文档的当前修订
document.getElementById('WebOffice').SetTrackRevisions(4);
8.ShowRevisions 显示或隐藏修订内容
1 显示痕迹
document.getElementById('WebOffice').ShowRevisions(1);
0 隐藏痕迹
document.getElementById('WebOffice').ShowRevisions(0);
9.插入合并文件
WORD文档头部插入文件
document.getElementById('WebOffice').InSertFile("http://www.officectrl.com/weboffice/temp/file1.doc",1);
WORD文档尾部插入文件
document.getElementById('WebOffice').InSertFile("http://www.officectrl.com/weboffice/temp/file1.doc",2);
WORD文档当前光标位置插入文件
document.getElementById('WebOffice').InSertFile("http://www.officectrl.com/weboffice/temp/file1.doc",0);
WORD文档头部插入图片
document.getElementById('WebOffice').InSertFile("http://www.officectrl.com/images/logo.png",9);
WORD文档尾部插入图片
document.getElementById('WebOffice').InSertFile("http://www.officectrl.com/images/logo.png",10);
WORD文档当前光标位置插入图片
document.getElementById('WebOffice').InSertFile("http://www.officectrl.com/images/logo.png",8);
10.保护文档和解保护文档
ProtectDoc(lProOrUn,lProType,strProPWD)
参数说明:
lProOrUn:1:保护文档;0:解除保护
lProType:
wdNoProtection = -1,
wdAllowOnlyRevisions = 0,
wdAllowOnlyComments = 1,
wdAllowOnlyFormFields = 2
strProPWD:密码
示例:
保护文档,密码为"123"
document.getElementById('WebOffice').ProtectDoc(1,1,"123");
解除文档保护
document.getElementById('WebOffice').ProtectDoc(0,1,"123");
11.SetFieldValue 设置和创建书签
SetFieldValue(strFieldName,strValue,strCmdOrSheetName)
strFieldName:书签名
strValue:要设置的值
strCmdOrSheetName:命令 有如下参数值
::ADDMARK:: 添加书签
::DELMARK:: 删除书签
::SETCOLOR:: 设置书签颜色
::GETCOLOR:: 获得书签颜色
::GETMARK:: 定位到这个书签
::FILE:: 插入的是文件
::JPG:: 插入的是图片
::FLOATJPG:: 插入的是浮动图片
书签是WORD本身的功能,可以事先设置位置书签或值书签,然后通过上述接口与此书签交互,实现智能填充。
//在当前WORD位置插入标签,标签名为"mark1",数值为"123"
document.getElementById('WebOffice').SetFieldValue("mark1","123","::ADDMARK::");
//设置书签"time1",数值为"2020-03-01 10:12:01"
document.getElementById('WebOffice').SetFieldValue("time1","2020-03-01 10:12:01","");
//在书签位置"taohong",插入红头文件"http://www.officectrl.com/weboffice/temp/file1.doc"
document.getElementById('WebOffice').SetFieldValue("taohong","http://www.officectrl.com/weboffice/temp/file1.doc","::FILE::");
12.SaveAs 文档另存为
SaveAs( strFileName, dwFileFormat);
参数:
strFileName:文件本地路径,如c:\\a.doc
dwFileFormat: 文件格式
对于Word,Excel,PPT文档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
};
13.GetTempFilePath 创建临时文件
var strFile = document.getElementById('WebOffice').GetTempFilePath()
GetTempFilePath会返回本地电脑一个临时文件存储地址,使用后应用DeleteLocalFile删除。
14.ShowView 设置文档显示模式
ShowView(dwViewType);
dwViewType的可取值为:
enum WdViewType
{
wdNormalView = 1, //正常模式
wdOutlineView = 2,
wdPrintView = 3,
wdPrintPreview = 4,打印预览
wdMasterView = 5, //大纲模式
wdWebView = 6 //网页方式
};
//大纲模式
document.getElementById('WebOffice').ShowView(5);
15.DownloadFile 下载远程文件
DownloadFile( strRemoteFile, strLocalFile)
参数:
strRemoteFile:远程路径地址
strLocalFile: 本地保存地址
16.GetRevInfo 获取详细的留痕信息
GetRevCount();
GetRevInfo(lIndex,lType);
例子如下
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));
}
17.SetPageAs Word分页保存
SetPageAs(strLocalFile,lPageNum)
strLocalFile:本地路径
lPageNum:第几页页码
将当前打开的文件档的第1页以a.doc保存在C盘根目录下:
document.getElementById('WebOffice').SetPageAs("c:\\a.doc",1);
将当前打开的文件档的第2页以b.doc保存在C盘根目录下:
document.getElementById('WebOffice').SetPageAs("c:\\b.doc",2);
更多接口请正版后获取......
返回首页