# 依赖从金格官网下载 http://www.goldgrid.com/jinge_download/index.aspx?num=5
<!DOCTYPE html>
<html lang="zn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="WebOffice.js"></script> <!-- 需要引入依赖 -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.11.2/jquery.js"></script>
<script type="text/javascript">
/* 创建对象 */
var WebOfficeObj = new WebOffice2015(); //创建WebOffice对象
/* 初始化 */
function Load() {
WebOfficeObj.ServerUrl = "";
WebOfficeObj.UserName = "演示人";
WebOfficeObj.FileName = "新建文件.doc";
WebOfficeObj.FileType = ".doc"; //FileType:文档类型 .doc .xls
WebOfficeObj.EditType = "1"; //设置加载文档类型 0 锁定文档,1无痕迹模式,2带痕迹模式
//WebOfficeObj.RecordID = "123456789"; // //文档存数据库id,唯一标识
//WebOfficeObj.FileName = "sample.xlsx";
//WebOfficeObj.FileType = ".xlsx"; //FileType:文档类型 .doc .xls
//WebOfficeObj.DataBase = "MYSQL"; //启用数据库打开保存数据 MYSQL/ORACLE
WebOfficeObj.ShowWindow = true; //true显示进度条//false隐藏进度条
WebOfficeObj.obj.Style.ShowOpenProgress = true; //开启、关闭打开文档时的进度条
WebOfficeObj.obj.WebCreateProcess(); //创建空进程避免打开慢
WebOfficeObj.ShowMenu = 1;
WebOfficeObj.ShowToolBar = 1;
// WebOfficeObj.SetCaption(WebOfficeObj.UserName + "正在编辑文档");
SetGraySkin(); //设置控件皮肤
if (browser == "chrome") {
// 下载文件时访问OfficeServer与其他网页页面session保持一致的说明 (开始)
// 为了让/OfficeServer这个Servlet和浏览器的其他页面保持session一致,需要在访问OfficeServer之前把其他页面的cookie发送到服务端去,通过调用
// INetSetCookie方法,参数是服务器url和cookie值
var MyCookie = "JSESSIONID=" + "<%=mSessionID%>";
WebOfficeObj.INetSetCookie(WebOfficeObj.ServerUrl, MyCookie);
//WebOfficeObj.INetSetCookie(WebOfficeObj.ServerUrl, document.cookie);
// 但如果浏览器设置了禁止cookie,那么document.cookie则获取不到有效cookie值,这时候可以通过在客户端创建一个
// 跟cookie内容值一样的字符串,再把这个字符串当成cookie发送给服务器,也能实现session保持一致
// 创建的字符串是这样的形式:JSESSIONID=XXXXXXXXXXXXXXXXXXXXXX,
// XXXX...XXX是服务端的sessionid,可以通过jsp变量的形式发送给客户端
// varMyCookie = "JSESSIONID=" + "<%=mSessionID%>";
// WebOfficeObj.INetSetCookie(WebOfficeObj.ServerUrl, varMyCookie);
// 下载文件时访问OfficeServer与其他网页页面session保持一致的说明 (结束)
}
if (WebOfficeObj.WebOpen()) {
alert(WebOfficeObj.Status);
}
}
/* 创建文件 */
function createFiles() {
WebOfficeObj.CreateFile();
WebOfficeObj.ShowMenuBar(1); //控制菜单栏是否可以显示
WebOfficeObj.NewShowToolBar(1); //控制Office工具栏和自定义工具栏
}
/* 通过url打开文件 */
function openUrl() {
WebOfficeObj.WebOpen3(url)
}
/* 保存文档到服务器 */
function SaveDocument() {
var files = WebOfficeObj.WebSave2() // 可以从WebOffice.js WebSave2()方法中取到文件对象(myfff) 再做进一步上传处理
/* 以下为WebOffice.js WebSave2()方法修改
this.WebSave2 = function (callback) {
var rands = Math.round(Math.random() * 1000000);
var fileUpPathName = this.getFilePath() + rands + this.FileName;
//alert(fileUpPathName);
var mSaveResult = this.WebSaveLocalFile(fileUpPathName);
if (!(mSaveResult == 0)) {
this.Status = "保存本地文档失败!错误代码为:" + mSaveResult;
return false;
}
else {
// alert("文档没有内容,是否确定保存");
}
var jsWebOffice = this;
var officeobj = this.obj;
var filename = this.FileName;
var base64file = officeobj.File2Base64Text(fileUpPathName);
var formData = new FormData();
var timestamp1 = new Date().getTime();
var myfff = base64toBlob(base64file);
var timestamp2 = new Date().getTime();
//alert(myfff);
formData.append("FileData", myfff, "myFileName");
var aaa = '${pageContext.request.contextPath}';
var strUrl = jsWebOffice.WebUrl + '/AJAXServer?OPTION=MultiPartUpload&FILENAME=' + filename;
// $.ajax({
// //url: '${pageContext.request.contextPath}/AJAXServer?OPTION=MultiPartUpload',
// url: strUrl,
// type: "POST",
// data: formData,
// contentType: false,
// cache: false,
// processData: false,
// xhr: function(){ //这是关键 获取原生的xhr对象 做以前做的所有事情
// console.log("xhr function");
// var xhr = jQuery.ajaxSettings.xhr();
// console.log(xhr);
// xhr.upload.onprogress = function (evt)
// {
// if (evt.lengthComputable)
// {
// var percentComplete = evt.loaded / evt.total;
// console.log(percentComplete);
// //callback(0);
// }
// }
// return xhr;
// },
// success: function(data, textStatus) {
// console.log('success');
// console.log('textStatus: ' + textStatus);
// console.log('data: ' + data);
// callback(0);
// },
// error: function(XMLHttpRequest, textStatus, errorThrown)
// {
// console.log('essor');
// console.log(XMLHttpRequest);
// console.log('textStatus: ' + textStatus);
// console.log('errorThrown: ' + errorThrown);
// callback(1);
// }
// });
return myfff;
} */
}
window.onload = function () {
WebOfficeObj.setObj(document.getElementById('WebOffice2015'));//给2015对象赋值
Load();//避免页面加载完,控件还没有加载情况
}
</script>
</head>
<body>
<div style="width: 100%; height: 100%">
<div style="width: 100%;">
<input type=button value="保存文档到服务器" onclick="SaveDocument();">
<input type=button value="打开本地文档(有窗口)" onclick="WebOfficeObj.WebOpenLocal()">
<input type=button value="保存本地文档(有窗口)" onclick="WebOfficeObj.WebSaveLocal()">
<input type=button value="通过url打开文件" onclick="openUrl">
<input type="button" value="新建文件" onclick="createFiles()">
</div>
<div id="OfficeDiv" style="width: 100%; height: 80vh;">
<script src="iWebOffice2015.js"></script>
<!-- 需要引入依赖 -->
</div>
</div>
</body>
</html>