亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JS實現(xiàn)在線Excel的附件上傳與下載

 更新時間:2023年08月16日 08:58:17   作者:葡萄城官網(wǎng)  
在本地使用Excel時,經(jīng)常會有需要在Excel中添加一些附件文件的需求,今天小編將為大家介紹如何使用前端HTML+JS+CSS技術通過超鏈接單元格的形式實現(xiàn)在線Excel附件上傳、下載和修改的操作,需要的可以參考下

前言

在本地使用Excel時,經(jīng)常會有需要在Excel中添加一些附件文件的需求,例如在Excel中附帶一些Word,CAD圖等等。同樣的,類比到Web端,現(xiàn)在很多人用的在線Excel是否也可以像本地一樣實現(xiàn)附件文件的操作呢?答案是肯定的,不過和本地不同的是,Web端不會直接打開附件,而是使用超鏈接單元格的形式來顯示,今天小編將為大家介紹使用前端HTML+JS+CSS技術通過超鏈接單元格的形式實現(xiàn)在線Excel附件上傳、下載和修改的操作。

使用JS實現(xiàn)附件上傳

實現(xiàn)的方式分為四個步驟:

1.創(chuàng)建前端頁面

2編寫暫存附件信息的方法

3.編寫附件文件清除的方法

4.編寫文件保存和文件加載的方法

1.創(chuàng)建前端頁面

核心代碼:

<div style="margin-bottom: 8px">
<button id="uploadAttach">上傳附件</button>
<button id="removeAttach">清除附件</button>
<button id="fileSaver">文件保存</button>
<button id="loadSubmitFile">加載文件</button>
<button id="loadPackage">打包下載</button>
</div>
<div id="fileOperate" style="visibility: hidden;position: absolute;top: 100px;left: 300px;z-index: 10; background-color: #eee;padding: 16px">
<label for="choseFile">選擇文件\</label>
<input type="file" id="choseFile" name="choseFile"/>
<button id="submit">提交</button>
<button id="cancel">取消</button>
</div>

點擊上傳附件按鈕可以把附件上傳到對應的單元格,清除附件會清理掉所有已經(jīng)上傳過的附件信息,打包下載會對所有的附件進行統(tǒng)一下載。

2.暫存附件信息方法

這一步起始主要用來設置文件上傳之后單元格超鏈接及tag信息。細心的同學會注意到,這里我注冊了一個命令,超鏈接本身會有一個跳轉的行為,寫command之后,會阻止這個默認跳轉,轉去執(zhí)行對應的命令。注冊的命令主要就是用來做附件文件的下載。

核心代碼:

function hasAttachFile(sheet,row,col,file){
/*
附件文件暫存
這里由于沒有服務端,所以我直接存了File對象,但File對象只有在實際使用時才會去獲取實際的文件內(nèi)容。在demo中可行
在實際項目中,需要將file對象上傳到文件服務器中
上傳完成后tag中的fileInfo應該代表的是文件的訪問地址,而不能再是File對象。
*/
    sheet.setValue(row,col,file.name)
    sheet.setTag(row,col,{
        type: hyerlinkType,
        fileInfo: file // 實際項目中fileInfo應該為上傳完成文件的訪問路徑
        })
        sheet.setHyperlink(row, col, {
            url: file.name,
            linkColor: '#0066cc',
            visitedLinkColor: '#3399ff',
            drawUnderline: true,
            command:'downloadAttachFile',
        }, GC.Spread.Sheets.SheetArea.viewport);
}

在這里,我引入了三方組件庫FileSaver,在點擊超鏈接單元格時,可以支持當前附件文件的下載。

// 下載文件
spread.commandManager().register("downloadAttachFile",{
    canUndo: false,
    execute: function(context,options,isUndo){
        let sheet = context.getActiveSheet()
        let row = sheet.getActiveRowIndex()
        let col = sheet.getActiveColumnIndex()
        let cellTag = sheet.getTag(row,col)
        console.log(sheet,row,col,cellTag)
        if(cellTag && cellTag.type==hyerlinkType){
        /*
         * * 純前端demo,文件存在于本地,fileInfo中存儲的是File對象,可以直接獲取到文件
         * 實際項目中,fileInfo應該是上傳到文件服務器上的文件訪問地址。
         * 因此這里需要發(fā)送請求,先獲取文件blob,將獲取的blob傳遞到saveAs的第二個參數(shù)中。
         */
         saveAs(cellTag.fileInfo,cellTag.fileInfo.name)
        }
    }
})

3. 附件文件清除

document.getElementById("removeAttach").onclick = function(){
/**
* 清除附件
* 清除附件需要先刪除遠程文件服務器的文件,之后清除單元格的Tag信息。
* 這里前端演示demo,只刪除了tag。
* 實際項目中tag中的fileInfo應該是文件上傳后的路徑
*/
let sheet = spread.getActiveSheet()
let row = sheet.getActiveRowIndex()
let col = sheet.getActiveColumnIndex()
spread.commandManager().execute({
    cmd:"removeAttachFile",
    sheet,row,col
})
}

4. 文件保存/加載

將文件保存成為JSON結構:

document.getElementById("fileSaver").onclick = function(){
// 保存文件
submitFile = spread.toJSON()
spread.clearSheets()
spread.addSheet(0)
}
加載已保存文件:
document.getElementById("loadSubmitFile").onclick = function(){
// 加載已保存文件
spread.fromJSON(submitFile)
}

實現(xiàn)功能和效果

在需要在某個單元格中上傳附件時,我們可以彈出一個模態(tài)框,在模態(tài)框中上傳文件,點擊提交之后,可以對文件做一個暫存,將文件信息存儲在單元格的Tag中,點擊單元格可以下載文件。

完整代碼和在線Demo地址:

https://jscodemine.grapecity.com/share/VHlpNyuP-0CIBNleP5jtyA/

以上就是JS實現(xiàn)在線Excel的附件上傳與下載的詳細內(nèi)容,更多關于JS Excel附件上傳下載的資料請關注腳本之家其它相關文章!

相關文章

  • JavaScript--在Vue中使用插槽:slot

    JavaScript--在Vue中使用插槽:slot

    這篇文章主要給大家介紹了關于vue中slot(插槽)的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用vue具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-08-08
  • swiper實現(xiàn)導航滾動效果

    swiper實現(xiàn)導航滾動效果

    這篇文章主要為大家詳細介紹了swiper實現(xiàn)導航滾動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • js里面的變量范圍分享

    js里面的變量范圍分享

    今天寫一個滑動自動加載的功能的時候,遇到了切換就發(fā)現(xiàn)加載完畢的情況,查看了下發(fā)現(xiàn)可能是js的全局變量和局部變量的問題,自己測試了下,果不其然,下面分享下
    2020-07-07
  • Bootstrap基本模板的使用和理解1

    Bootstrap基本模板的使用和理解1

    這篇文章主要為大家詳細介紹了關于Bootstrap基本模板的使用和理解的學習記錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 詳解wow.js中各種特效對應的類名

    詳解wow.js中各種特效對應的類名

    本篇文章主要介紹了wow.js中各種特效對應的類名 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • CSS+JS構建的圖片查看器

    CSS+JS構建的圖片查看器

    [紅色]CSS+JS構建的圖片查看器...
    2006-07-07
  • JavaScript 捕獲窗口關閉事件

    JavaScript 捕獲窗口關閉事件

    javascript捕獲窗口關閉事件有兩種方法
    2009-07-07
  • 如何計算Web動畫幀率FPS

    如何計算Web動畫幀率FPS

    我們知道,動畫其實是由一幀一幀的圖像構成的。有Web動畫那么就會存在該動畫在播放運行時的幀率。而幀率在不同設備不同情況下又是不一樣的。有的時候,一些復雜或者重要動畫,需要實時監(jiān)控它們的幀率,從而更好的優(yōu)化它們,本文就是介紹Web動畫幀率(FPS)計算方法。
    2021-05-05
  • js實現(xiàn)的動畫導航菜單效果代碼

    js實現(xiàn)的動畫導航菜單效果代碼

    這篇文章主要介紹了js實現(xiàn)的動畫導航菜單效果代碼,涉及JavaScript通過鼠標事件控制頁面元素樣式動態(tài)變換的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • 微信小程序自定義導航欄

    微信小程序自定義導航欄

    這篇文章主要為大家詳細介紹了微信小程序自定義導航欄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論