当前位置:首页 » 《资源分享》 » 正文

前端实现在线预览、编辑Office文档(vue版)

6 人参与  2024年03月31日 11:20  分类 : 《资源分享》  评论

点击全文阅读


使用插件:Spire.Cloud在线Office文档编辑器(官网:冰蓝科技在线编辑)
无需安装,在 index.html 里面引入即可

重点:支持在线创建、编辑、保存和打印 Office (Word / Excel / PPT) 文档
助您轻松实现高效率、无纸化办公
在这里插入图片描述

使用浏览器打开:https://cloud.e-iceblue.cn/,点击右上角头像注册/登录账号。
其次,点击菜单栏“我的应用”创建应用,获取APP ID和APP Key。

(个人理解:动态切换链接不刷新页面时显示不出来的,刷新页面才可以,错误是因为id为iframeEditor得div被替换成了ifarme,切换地址后找不到这个div,无法所以动态切换链接会报错)

<div class="reportbox">      <a-form :layout="formLayout">        <a-form-item>          <a-select style="width: 180px" v-model="from.reportType">            <a-select-option value="PeriodicAnalysis"> xxxxxxxxx报告 </a-select-option>            <a-select-option value="FoulingAssessment"> xxxxxxxxxxxx报告 </a-select-option>          </a-select>        </a-form-item>        <a-form-item :wrapper-col="{ span: 12, offset: 5 }">          <a-button type="primary" @click="queryReport" style="width: 100px"> 查询 </a-button>        </a-form-item>      </a-form>      <div id="div" style="height: auto" >      //div动态创建   </div>      <div v-if="show" class="pdff">        <a-empty />      </div>    </div>

前端JavaScript代码实现

  generateWord() {      var docEditor      const urlString = this.fileUrl      const appid = ' 你的appid '      const appkey = ' 你的appkey '      const innerAlert = function (message) {        if (console && console.log) console.log(message)      }      const onReady = function () {        innerAlert('Document editor ready')      }      const onDocumentStateChange = function (event) {        const title = document.title.replace(/\*$/g, '')        document.title = title + (event.data ? '*' : '')      }      const onError = function (event) {        if (event) innerAlert(event.data)      }      function ajax(options) {        options = options || {}        const method = (options.type || 'GET').toUpperCase()        let url = options.url        let queryString = null        if (!url) return        if (options.data) {          queryString = []          for (var attr in options.data) {            queryString.push(attr + '=' + options.data[attr])          }          queryString = queryString.join('&')        }        if (method === 'GET' && queryString) {          url += '?' + queryString          queryString = ''        }        const xhr = new XMLHttpRequest()        xhr.open(method, url, true)        if (method === 'POST') xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')        xhr.send(queryString)        xhr.onreadystatechange = function () {          if (xhr.readyState === 4) {            if (xhr.status === 200) {              var data = xhr.responseText              if (options.dataType === 'json') data = JSON.parse(data)              options.success && options.success(data)            } else {              options.error && options.error(xhr.status)            }          }        }      }      // 用于保存      const callbackfn = function (result) {        if (result && result.data) {          const data = result.data          let fileName = data[0]          const url = data[1]          if (fileName.indexOf('=') > -1) fileName = fileName.split('=')[1]          ajax({            url: '',            type: 'post',            data: { filename: fileName, fileuri: url },            dataType: 'json',            async: false,            success: function (json) {              if (json.code == 200 || json.code == '200') {                alert('保存成功')              } else {                this.error(json, '保存失败')              }            },            error: function (json, msg) {              alert(+msg)            },          })        }      }      docEditor = new SpireCloudEditor.OpenApi(        'iframeEditor',        {          fileAttrs: {            fileInfo: {              name: this.fileName,  // this.fileName动态返回              ext: 'docx',              primary: String(new Date().getTime()),              creator: '',              createTime: new Date(),            },            sourceUrl: urlString,   // urlString动态返回            createUrl: '',            callbackUrl: '', This item can be empty, but only if the 'onSave' callback function must be defined in events. If the callback function is undefined and this item is empty, Cloud Editor will not provide save function.            verification: null, //用户文件系统下载文件时若需要验证类似token的数据可以写在这里            canEdit: true,            canDownload: true,            canForcesave: true,          },          user: {            primary: '',            name: '',            canSave: true,            customization: {              public: {                common: {                  whiteLabel: false,                  defaultZoom: 1,                  openReviewChanges: false,                  permGroups: ['everyone'], //限制编辑分组                  viewVersion: false,                  header: {                    hideTitle: false,                    defaultView: 'full',                  },                },                word: null, //doc定制                powerpoint: null, //ppt定制                excel: null, //xls定制              },            },          },          editorAttrs: {            //编辑器配置            editorWidth: '100%',            editorHeight: '900px',            editorType: 'document', //编辑器类型,可不配置,程序根据文件类型获取,结果为 document,presentation,spreadsheet            platform: 'desktop', //编辑器平台类型,可选desktop, mobile, embedded            viewLanguage: 'zh', //平台界面展示语言可选en/zh            canChat: true, //是否可聊天            canComment: true, //是否可批注            canReview: true,            embedded: {              saveUrl: '',              embedUrl: '',              shareUrl: '',            },            events: {              onReady: onReady,              onDocumentStateChange: onDocumentStateChange,              onError: onError,              onSave: callbackfn,            },          },        },        appid,        appkey,      )    },    queryReport(){    this.updatdiv() //  动态生成div 每次条件改变的时候清除div,搜索的时候创建新的div    // axios请求 根据实际情况!apiUrl请求地址(我的项目请求地址是第三方)     axios.get(apiUrl, {          headers: {            Authorization: 'Bearer ' + sessionStorage.token,          },          params: pam,        })        .then((res) => {          // console.log(res)          this.fileUrl = res.data.data.downloadUrl          this.fileName = res.data.data.fileName          this.generateWord()  // 此处调用生成word             })        .catch((error) => {          this.show = true          console.log(error)          this.spinning = false        })    } //  动态生成div updatdiv() {      let div = document.querySelector('#div')      var divChild = document.createElement('div') //一级      var childDiv = document.createElement('div') // 二级      childDiv.id = 'iframeEditor'      divChild.appendChild(childDiv)      div.innerHTML = ''      div.appendChild(divChild)    },

这样就解决了链接更改之后word显示还是旧的链接得问题!


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/88438.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 祖母寿宴,侯府冒牌嫡女被打脸了(沈屿安秦秀婉)阅读 -
  • 《雕花锦年,昭都旧梦》(裴辞鹤昭都)完结版小说全文免费阅读_最新热门小说《雕花锦年,昭都旧梦》(裴辞鹤昭都) -
  • 郊区41号(许洛竹王云云)完整版免费阅读_最新全本小说郊区41号(许洛竹王云云) -
  • 负我情深几许(白诗茵陆司宴)完结版小说阅读_最热门小说排行榜负我情深几许白诗茵陆司宴 -
  • 九胞胎孕妇赖上我萱萱蓉蓉免费阅读全文_免费小说在线看九胞胎孕妇赖上我萱萱蓉蓉 -
  • 为保白月光,侯爷拿我抵了债(谢景安花田)小说完结版_完结版小说全文免费阅读为保白月光,侯爷拿我抵了债谢景安花田 -
  • 陆望程映川上官硕《我的阿爹是带攻略系统的替身》最新章节阅读_(我的阿爹是带攻略系统的替身)全章节免费在线阅读陆望程映川上官硕
  • 郑雅琴魏旭明免费阅读_郑雅琴魏旭明小说全文阅读笔趣阁
  • 头条热门小说《乔书意贺宴临(乔书意贺宴临)》乔书意贺宴临(全集完整小说大结局)全文阅读笔趣阁
  • 完结好看小说跨年夜,老婆初恋送儿子故意出车祸_沈月柔林瀚枫完结的小说免费阅读推荐
  • 热推《郑雅琴魏旭明》郑雅琴魏旭明~小说全文阅读~完本【已完结】笔趣阁
  • 《你的遗憾与我无关》宋怀川冯洛洛无弹窗小说免费阅读_免费小说大全《你的遗憾与我无关》宋怀川冯洛洛 -

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1