最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue在線預(yù)覽Excel和Docx格式文件實現(xiàn)方式

 更新時間:2025年12月17日 09:49:19   作者:過路云野  
Vue-Office是一個適用于Vue2和Vue3的Office文件格式在線預(yù)覽插件,支持Word、Excel、PDF和PowerPoint等多種文件格式,它提供了簡單集成、良好用戶體驗和性能優(yōu)化等功能,適用于非Vue框架

前提:本次示例基于Vue2.x,所用插件為Vue-Office。

一、Vue-Office 插件簡介

Vue-Office 是一個一站式解決方案,支持多種 Office 文件格式的在線預(yù)覽,包括:

  • Word(.docx)
  • Excel(.xlsx、.xls)
  • PDF
  • PowerPoint(.pptx)

它適用于 Vue 2 和 Vue 3,同時兼容非 Vue 框架(如 React),為開發(fā)者提供了簡單、高效的文檔預(yù)覽功能。

二、功能特點

1. 簡單集成:

無需為不同文件類型尋找多個庫,Vue-Office 提供了統(tǒng)一的預(yù)覽功能,只需提供文檔的 URL(網(wǎng)絡(luò)地址)即可完成預(yù)覽,降低開發(fā)成本。

2. 良好的用戶體驗

針對每種文件類型選擇了最佳的預(yù)覽方案,確保加載速度、渲染效果和交互操作流暢。

3. 性能優(yōu)化:

針對數(shù)據(jù)量較大的文檔進行了優(yōu)化,確保在高負載情況下也能保持穩(wěn)定的預(yù)覽效果。

4. 支持多種文件格式:

除了常見的 Word、Excel 和 PDF,還支持 PowerPoint 文件。

三、應(yīng)用示例

1.安裝Vue-Office相關(guān)組件

 npm install @vue-office/excel
 npm install @vue-office/docx

2.vue使用

以下以Excel和Word格式文件為例:

<template>
    <div ref="officeViewerRef" v-if="officeDialog" class="officeDemo">
        <vue-office-excel
            v-if="xlsxDialog"
            :src="url"
            style="height: 100vh;"
            @rendered="renderedHandler"
            @error="errorHandler"
        />
        <vue-office-docx
            v-if="docxDialog"
            :src="url"
            style="height: 100vh;"
            @rendered="renderedHandler"
            @error="errorHandler"
        />
    </div>
</template>

<script>
    import VueOfficeExcel from '@vue-office/excel'
    import '@vue-office/excel/lib/index.css'
    import VueOfficeDocx from '@vue-office/docx'
    import '@vue-office/docx/lib/index.css'

    export default {
        name: "office-viewer",
        components: {
          VueOfficeExcel,VueOfficeDocx,
        },
        data(){
            return {
                officeLoading: '',
                xlsxDialog:false,
                docxDialog:false,
                url:'',
                fjType:'',
                isEnd:false,
                officeDialog:true,
            }
        },
        watch: {
            isEnd() {
                this.officeDialog = false;
                this.$nextTick(()=>{
                    this.officeDialog = true;
                })
            },
        },
        mounted(){
            this.loadFile();
        },
        methods: {
            loadFile(){
                const url ='實際文件地址';
                if(url.indexOf(".doc") > -1){
                    this.fjType = 'word';
                }else{
                    this.fjType = 'excel';
                }
                this.url = url;
                this.officeLoading = this.$loading({
                    lock: true,
                    target:this.$refs.officeViewerRef.$el,
                    text: '正在加載,請稍后....',
                    spinner: 'el-icon-loading',
                    background: 'rgba(0, 0, 0, 0.7)'
                });
                if(this.fjType == 'excel'){
                    this.xlsxDialog = true;
                }else if(this.fjType == 'word'){
                    this.docxDialog = true;
                }

            },
            renderedHandler() {
                // this.$message.success("渲染完成!");
                this.officeLoading && this.officeLoading.close();
                if(this.fjType == 'excel'){
                    this.isEnd = true;
                }
            },
            errorHandler() {
                this.$message.error("渲染失??!");
                this.officeLoading && this.officeLoading.close();
            },
        }
    }
</script>

<style lang="scss">
.officeDemo{
  background-color: #808080;
  height: 100%;
  padding: 30px 0;
  .vue-office-docx,.vue-office-excel{
    height: calc(100% - 60px)!important;
  }
  .vue-office-excel{
    width: calc(100% - 60px);
    margin-left: 30px;
  }
  .docx-wrapper{
    padding-top: 0!important;
    padding-bottom: 0!important;
  }
  .docx{
    border-radius: 3px;
  }
  .docx:last-child{
    margin-bottom: 0!important;
  }
  .x-spreadsheet{
    padding-top: 5px;
    box-sizing: border-box;
    border-radius: 5px;
  }
}
</style>

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue,angular,avalon這三種MVVM框架優(yōu)缺點

    vue,angular,avalon這三種MVVM框架優(yōu)缺點

    本文給大家具體分析了下vue,angular,avalon這三種MVVM框架優(yōu)缺點,十分的細致全面,有需要的小伙伴可以參考下
    2016-04-04
  • vue3中的ref、reactive問題解析

    vue3中的ref、reactive問題解析

    ref 和 reactive都是vue3推出的針對組合式設(shè)計的聲明響應(yīng)式狀態(tài)的API,兩者在使用之前都要先進行引入,本文通過實例代碼詳解vue3中的ref、reactive問題,感興趣的朋友一起看看吧
    2024-03-03
  • vue cli3.x打包后如何修改生成的靜態(tài)資源的目錄和路徑

    vue cli3.x打包后如何修改生成的靜態(tài)資源的目錄和路徑

    這篇文章主要介紹了vue cli3.x打包后如何修改生成的靜態(tài)資源的目錄和路徑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue使用docx-preview實現(xiàn)docx文件在線預(yù)覽功能全過程

    vue使用docx-preview實現(xiàn)docx文件在線預(yù)覽功能全過程

    文件在線預(yù)覽是目前移動化辦公的一種新趨勢,下面這篇文章主要給大家介紹了關(guān)于vue?docx-preview實現(xiàn)docx文件在線預(yù)覽功能的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • vue頁面圖片不顯示問題解決方案

    vue頁面圖片不顯示問題解決方案

    這篇文章主要介紹了vue頁面圖片不顯示問題解決方案,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • vue中van-picker的選項插槽的使用

    vue中van-picker的選項插槽的使用

    這篇文章主要介紹了vue中van-picker的選項插槽的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Element-Plus實現(xiàn)動態(tài)渲染圖標的示例代碼

    Element-Plus實現(xiàn)動態(tài)渲染圖標的示例代碼

    在Element-Plus中,我們可以使用component標簽來動態(tài)渲染組件,本文主要介紹了Element-Plus?實現(xiàn)動態(tài)渲染圖標教程,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • vue-router 組件復(fù)用問題詳解

    vue-router 組件復(fù)用問題詳解

    本篇文章主要介紹了vue-router 組件復(fù)用問題詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue 子組件更新props中的屬性值問題

    Vue 子組件更新props中的屬性值問題

    這篇文章主要介紹了Vue 子組件更新props中的屬性值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue實現(xiàn)半自動打字機特效

    Vue實現(xiàn)半自動打字機特效

    本文主要介紹了Vue實現(xiàn)半自動打字機特效,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12

最新評論

临颍县| 珠海市| 布尔津县| 黑河市| 县级市| 红桥区| 灵璧县| 新宁县| 光山县| 安顺市| 民勤县| 汉阴县| 民丰县| 高台县| 青海省| 华容县| 滕州市| 沂源县| 农安县| 新沂市| 保定市| 柞水县| 太白县| 安义县| 阜新市| 澎湖县| 右玉县| 出国| 平顺县| 德江县| 沂南县| 九寨沟县| 孝昌县| 崇左市| 华阴市| 大余县| 东明县| 汾阳市| 武冈市| 桐乡市| 舟曲县|