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

Vue3實現(xiàn)LuckSheet在線預覽Excel表格

 更新時間:2023年11月22日 08:53:50   作者:晨曦  
在前端開發(fā)中預覽Excel文件是常見的需求之一,本文將介紹如何使用Vue.js框架以及兩個優(yōu)秀的Excel庫——LuckyExcel和Luckysheet,來實現(xiàn)Excel文件在線預覽功能,希望對大家有所幫助

LuckSheet和LuckyExcel

在前端開發(fā)中預覽Excel文件是常見的需求之一。本文將介紹如何使用Vue.js框架以及兩個優(yōu)秀的Excel庫——LuckyExcel和Luckysheet,來實現(xiàn)Excel文件在線預覽功能。

LuckSheet是一款基于Web的在線表格組件,一款純前端類似excel的在線表格,功能強大、配置簡單、完全開源結合Vue3可以實現(xiàn)數(shù)據(jù)的動態(tài)展示和編輯,為用戶提供良好的用戶體驗。

準備工作

首先,需要在Vue3項目中安裝LuckSheet組件庫,可以通過npm或yarn進行安裝:

npm install luckysheet

或者

yarn add luckysheet

安裝完成后,可以在Vue3項目中引入LuckSheet組件并進行配置。

【參考】Luckysheet官方文檔

實現(xiàn)LuckSheet組件

在Vue3項目中,可以創(chuàng)建一個LuckSheet組件來實現(xiàn)在線預覽Excel表格的功能。在LuckSheet組件中,可以使用LuckSheet提供的API來加載和展示Excel表格數(shù)據(jù),并且可以實現(xiàn)數(shù)據(jù)的編輯和保存功能。

<template>
    <div>
        <!-- excel表格容器 -->
        <a-card :bordered="false" :style="{ background: '#fff' }">
            <div id="luckysheet" :style="{ margin: '0px', padding: '0px', width: '100%', height: contentHeight + 'px' }" />
        </a-card>
    </div>
</template>


<script setup>
import $script from 'scriptjs'
import LuckyExcel from 'luckyexcel'
import { nextTick } from 'vue'
import { reactive } from 'vue'
import { message } from 'ant-design-vue'

//父組件傳遞參數(shù)
const props = defineProps({
    fileUrl: {
        type: String,
        default: '',
    },
    fileName: {
        type: String,
        default: '',
    },
})
const state = reactive({
    fileUrl: '',
    fileName: '',
})
//初始化加載
onMounted(() => {
     //動態(tài)引入文件
    $script(['/lib/luckysheet/plugins/js/plugin.js', '/lib/luckysheet/luckysheet.umd.js', '/lib/luckysheet/loadCss.js'], 'luckysheet')
    $script.ready('luckysheet', function () {
        const fileUrl = props.fileUrl ? props.fileUrl : ''
        const fileName = props.fileName ? props.fileName : ''
        state.fileUrl = fileUrl
        state.fileName = fileName
        if (fileUrl == null) {
            console.log('error')
        } else {
            // 加載文件內(nèi)容
            openExcel({ url: fileUrl, name: fileName })
        }
    })
})
//監(jiān)聽重新渲染組件
watch(
    () => props.fileUrl,
    () => {
        openExcel({ url: props.fileUrl, name: props.fileName })
    }
)
//動態(tài)計算高度
const totalHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight
const contentHeight = totalHeight - 230
//渲染excel
const openExcel = ({ url: url, name: name }) => {
    nextTick(() => {
        LuckyExcel.transformExcelToLuckyByUrl(url, name, (exportJson, luckysheetfile) => {
            if (exportJson.sheets == null || exportJson.sheets.length === 0) {
                message.warning('無法讀取excel的內(nèi)容')
                return
            }
            const firstData = []
            const secondData = {}
            for (let i = 0; i < exportJson.sheets.length; i++) {
                firstData[i] = {
                    name: exportJson.sheets[i].name,
                    index: exportJson.sheets[i].index,
                    order: exportJson.sheets[i].order,
                    status: exportJson.sheets[i].status,
                    config: exportJson.sheets[i].config,
                }
                firstData[i].config.row = 10
                parseInt(exportJson.sheets[i].status) === 1 ? (firstData[i].celldata = exportJson.sheets[i].celldata) : 0 == 0
                secondData[exportJson.sheets[i].index] = exportJson.sheets[i].celldata
            }
            // luckysheet生成網(wǎng)頁excel
            window.luckysheet.destroy()
            window.luckysheet.create({
                lang: 'zh',
                container: 'luckysheet', // 設定DOM容器的id
                showtoolbar: false, // 是否顯示工具欄
                showinfobar: false, // 是否顯示頂部信息欄
                showstatisticBar: true, // 是否顯示底部計數(shù)欄
                sheetBottomConfig: false, // sheet頁下方的添加行按鈕和回到頂部按鈕配置
                allowEdit: false, // 是否允許前臺編輯
                enableAddRow: false, // 是否允許增加行
                enableAddCol: false, // 是否允許增加列
                sheetFormulaBar: false, // 是否顯示公式欄
                data: exportJson.sheets, //表格內(nèi)容
                enableAddBackTop: true, //返回頂部
                title: exportJson.info.name, //表格標題
                sheetRightClickConfig: {
                    delete: false, // 刪除
                    copy: false, // 復制
                    rename: false, //重命名
                    color: false, //更改顏色
                    hide: false, //隱藏,取消隱藏
                    move: false, //向左移,向右移
                },
                showsheetbarConfig: {
                    add: false,
                },
                devicePixelRatio: window.devicePixelRatio, //分辨率
                defaultFontSize: 20, //默認字體大小
                cellRightClickConfig: {
                    copy: false, // 復制
                    copyAs: false, // 復制為
                    paste: false, // 粘貼
                    insertRow: false, // 插入行
                    insertColumn: false, // 插入列
                    deleteRow: false, // 刪除選中行
                    deleteColumn: false, // 刪除選中列
                    deleteCell: false, // 刪除單元格
                    hideRow: false, // 隱藏選中行和顯示選中行
                    hideColumn: false, // 隱藏選中列和顯示選中列
                    rowHeight: false, // 行高
                    columnWidth: false, // 列寬
                    clear: false, // 清除內(nèi)容
                    matrix: false, // 矩陣操作選區(qū)
                    sort: false, // 排序選區(qū)
                    filter: false, // 篩選選區(qū)
                    chart: false, // 圖表生成
                    image: false, // 插入圖片
                    link: false, // 插入鏈接
                    data: false, // 數(shù)據(jù)驗證
                    cellFormat: false, // 設置單元格格式
                },
            })
        })
    })
}
</script>

在LuckSheet組件中,通過引入Luckysheet庫并動態(tài)加載樣式文件,使用window.Luckysheet.create方法來創(chuàng)建LuckSheet實例,將Excel表格數(shù)據(jù)和配置選項傳入實例中即可實現(xiàn)在線預覽Excel表格的功能。

頁面使用

<template>
<div>
   <a-card :bordered="false" :loading="loading" :style="{ background: '#fff' }">
      <lucksheetExcel :fileName="state.fileName" :fileUrl="state.fileUrl"></lucksheetExcel>
  </a-card>
</div>
</template>
<script lang="ts"  setup>
//導入組件
import {lucksheetExcel } from 'xxxxxxx'
//預覽方式
const token = 'Bearer ' + getToken()
const fileUrlId = ref<string>('')
const state = reactive({
    fileUrl: `${import.meta.env.VITE_AXIOS_BASE_URL}/file/download/${fileUrlId.value}?Authorization=${token}`,
    fileName: '',
})
//預覽方法
const refreshTable = () => {
  // params請求參數(shù)
  getLucksheetAPI(params).then((res) => {
                fileUrlId.value = res.data.fileId
                state.fileUrl = `${import.meta.env.VITE_AXIOS_BASE_URL}/file/download/${fileUrlId.value}?Authorization=${token}`
            })
            .catch((err) => {
                console.log(err)
            })

}
onActivated(() => {
    refreshTable()
})

</script>

實現(xiàn)效果

結語

通過Vue3和LuckSheet的結合,可以實現(xiàn)方便快捷的在線預覽Excel表格功能,為用戶提供良好的數(shù)據(jù)展示和編輯體驗。

以上就是Vue3實現(xiàn)LuckSheet在線預覽Excel表格的詳細內(nèi)容,更多關于Vue3在線預覽表格的資料請關注腳本之家其它相關文章!

相關文章

  • vue實現(xiàn)表格動態(tài)嵌入折線圖的繪制代碼

    vue實現(xiàn)表格動態(tài)嵌入折線圖的繪制代碼

    這篇文章給大家介紹了vue實現(xiàn)表格動態(tài)嵌入折線圖的繪制方法,文中有詳細完整的代碼示例攻大家參考,對大家的學習或工作有一定的參考價值,需要的朋友可以參考下
    2023-10-10
  • Nuxt引用cookie-universal-nuxt在服務端請求cookie方式

    Nuxt引用cookie-universal-nuxt在服務端請求cookie方式

    這篇文章主要介紹了Nuxt引用cookie-universal-nuxt在服務端請求cookie方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • UniApp在Vue3下使用setup語法糖創(chuàng)建和使用自定義組件的操作方法

    UniApp在Vue3下使用setup語法糖創(chuàng)建和使用自定義組件的操作方法

    通過defineProps定義屬性,defineEmits定義事件,computed創(chuàng)建計算屬性,emitEvent方法觸發(fā)事件,在其他組件中導入并使用這些自定義組件,傳遞屬性和監(jiān)聽事件,實現(xiàn)組件的復用性和可維護性,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Vue3中實現(xiàn)歌詞滾動顯示效果

    Vue3中實現(xiàn)歌詞滾動顯示效果

    本文分享如何在Vue 3中實現(xiàn)一個簡單的歌詞滾動效果,我將從歌詞數(shù)據(jù)的處理開始,一步步介紹布局的搭建和事件的實現(xiàn),感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • vue實現(xiàn)一個滾動條樣式

    vue實現(xiàn)一個滾動條樣式

    滾動條能夠給用戶帶來極好的體驗效果,今天通過本文給大家分享vue實現(xiàn)一個滾動條樣式,代碼簡單易懂,需要的朋友參考下吧
    2021-07-07
  • 談談vue中mixin的一點理解

    談談vue中mixin的一點理解

    vue中提供了一種混合機制--mixins,用來更高效的實現(xiàn)組件內(nèi)容的復用。下面給大家談談我對vue中mixin的一點理解,需要的朋友參考下吧
    2017-12-12
  • vue中 router.beforeEach() 的用法示例代碼

    vue中 router.beforeEach() 的用法示例代碼

    導航守衛(wèi)主要是通過跳轉或取消的方式守衛(wèi)導航,本文通過示例代碼講解vue中 router.beforeEach() 的用法,感興趣的朋友跟隨小編一起看看吧
    2023-12-12
  • 用vue2.0實現(xiàn)點擊選中active其他選項互斥的效果

    用vue2.0實現(xiàn)點擊選中active其他選項互斥的效果

    這篇文章主要介紹了用vue2.0實現(xiàn)點擊選中active其他選項互斥的效果,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • vue如何實現(xiàn)自定義底部菜單欄

    vue如何實現(xiàn)自定義底部菜單欄

    這篇文章主要介紹了vue如何實現(xiàn)自定義底部菜單欄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • 解決vuex刷新狀態(tài)初始化的方法實現(xiàn)

    解決vuex刷新狀態(tài)初始化的方法實現(xiàn)

    這篇文章主要介紹了解決vuex刷新狀態(tài)初始化的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08

最新評論

濮阳县| 蒲江县| 高碑店市| 定襄县| 台南市| 枣强县| 开江县| 福清市| 龙里县| 灵山县| 西乡县| 聊城市| 福鼎市| 吉首市| 宁强县| 广灵县| 宝应县| 新龙县| 彭山县| 托克逊县| 女性| 莆田市| 来宾市| 长治市| 西宁市| 岫岩| 鄂托克前旗| 塔河县| 汝阳县| 噶尔县| 桃园市| 桐梓县| 调兵山市| 马鞍山市| 兴隆县| 连山| 留坝县| 英山县| 和硕县| 尼勒克县| 时尚|