vue使用vue-office组件,在线预览

安装插件

npm install --save @vue-office/docx @vue-office/excel @vue-office/pdf vue-demi

//docx文档预览组件
npm install @vue-office/docx vue-demi
 
//excel文档预览组件
npm install @vue-office/excel vue-demi
 
//pdf文档预览组件
npm install @vue-office/pdf vue-demi

vue的版本是2.6的 还需要安装

@vue/composition-api 

个人使用安装了这个会报错,所以没事安装这个包也可以正常运行 

上代码

<template>
  <div class="app-container-temp">
    <div style="width: 100%; height: 840px; overflow: hidden">
      <vue-office-docx
        v-if="isdocx"
        :src="url"
        @rendered="rendered"
        style="width: 100%; height: 100%"
      />
      <vue-office-excel
        v-if="isexcel"
        :src="url"
        @rendered="rendered"
        style="width: 100%; height: 100%"
      />
      <vue-office-pdf
        v-if="ispdf"
        :src="url"
        @rendered="rendered"
        style="width: 100%; height: 100%"
      />
    </div>
  </div>
</template>
 
<script>
//引入VueOfficeDocx组件
import VueOfficeDocx from "@vue-office/docx";
//引入相关样式
import "@vue-office/docx/lib/index.css";
//引入VueOfficeExcel组件
import VueOfficeExcel from "@vue-office/excel";
//引入相关样式
import "@vue-office/excel/lib/index.css";
//引入VueOfficePdf组件
import VueOfficePdf from "@vue-office/pdf";
 
import { getPathByIds } from "@/api/system/user";
 
export default {
  components: {
    VueOfficeDocx,
    VueOfficeExcel,
    VueOfficePdf,
  },
  props: {
    // 文件uuid
    fileUuid: {
      type: String,
    },
  },
  data() {
    return {
      url: "",
      isdocx: false,
      isexcel: false,
      ispdf: false,
    };
  },
  mounted() {
    console.log("this.fileUuid00000 :>> ", this.fileUuid);
    var _this = this;
    this.url = "";
    if (this.fileUuid && this.fileUuid != "") {
      const list = [this.fileUuid];
      getPathByIds(list).then((res) => {
        if (res.data.length) {
          this.url = res.data[0].filePath;
          this.previewFile(this.url);
        }
      });
    }
  },
  methods: {
    rendered() {
      console.log("渲染完成");
    },
    previewFile(url) {
      // 根据文件格式显示预览内容
      const fileExtension = url.split(".").pop().toLowerCase();
      if (fileExtension === "xlsx") {
        this.isexcel = true;
      }
      if (fileExtension === "docx") {
        this.isdocx = true;
      }
      if (fileExtension === "pdf" || "PDF") {
        this.ispdf = true;
      }
    },
  },
};
</script>
 
<style scoped lang="scss"></style>

父组件弹窗

<el-dialog
      title="预览"
      append-to-body
      :visible.sync="oopen"
      modal-append-to-body
      :width="'1200px'"
    >
      <Preview :fileUuid="fileUuid" v-if="oopen"> </Preview>
    </el-dialog>

 

 

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值