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

使用Ant design vue實(shí)現(xiàn)Excel的上傳及讀取方式

 更新時(shí)間:2025年04月25日 09:13:26   作者:合肥愛(ài)國(guó)人士  
這篇文章主要介紹了使用Ant design vue實(shí)現(xiàn)Excel的上傳及讀取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

1、使用組件

Ant design vue自帶上傳文件組件

accept限制上傳的文件類型

<a-upload
        v-model:file-list="keyList"
        name="file"
        accept=".xlsx,.xls"
        :headers="headers"
        @change="handleKeyChange"
        :customRequest="fileUpload"
      >
        <a-button>
          <upload-outlined></upload-outlined>
          上傳
        </a-button>
      </a-upload>

其中action是上傳的地址

但是使用action的話,會(huì)沒(méi)有token,項(xiàng)目中出現(xiàn)驗(yàn)證的話就會(huì)不可用,這里使用customRequest,它的作用是覆蓋默認(rèn)的上傳行為,自定義上傳

const fileUpload = function(info){
      console.log(info)

      const formData = new FormData()
      formData.append('file', info.file)
      formData.append('token', 'aiufpaidfupipiu')//隨便寫(xiě)一個(gè)token示例

      http.request({
        url: "/RedisSyncPlugin/parseExcel",
        method: "post",
        data: formData
      }).then((res) => {
        
        if(res.success){
          info.onSuccess() // 結(jié)束上傳
          res.data.forEach((item,index) => {
            
            innerValue.value.push({
              srcKey: item[0],
              destKey: item[1],
              id: Date.now() + index,
            });
          });
        }else{
          info.onError() // 結(jié)束上傳
        }
      })

    }

這里為什么用FormData而不是直接使用info.file,是因?yàn)閕nfo.file是字符串而不是文件類型,為什么這么用,我也不太清楚,能用就行

出現(xiàn)這樣的類型,代表傳給后臺(tái)的是文件

2、后臺(tái)實(shí)現(xiàn)

pom引用

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.2.3</version>
        </dependency>

實(shí)現(xiàn)

@ApiOperation(value = "解析excel", notes = "解析excel數(shù)據(jù)并返回到前端")
    @PostMapping("/parseExcel")
    public JsonResult<?> parseExcel(@RequestParam("file") MultipartFile file) {
        try (InputStream is = new ByteArrayInputStream(file.getBytes())) {
            FileMagic fm = FileMagic.valueOf(is);
            Workbook wb;
            
            if (fm == FileMagic.OOXML) {
                wb = new XSSFWorkbook(is);
            } else {
                wb = new HSSFWorkbook(is);
            }
            
            int activeSheetIdx = wb.getActiveSheetIndex();
            Sheet sheet = wb.getSheetAt(activeSheetIdx);
            
            if (null == sheet) {
                sheet = wb.getSheetAt(0);
            }
            
            List<List<String>> sheetValues = new ArrayList<>();
            
            for (Row row : sheet) {
                List<String> rowValues = new ArrayList<>();
                
                for (Cell cell : row) {
                    String val = cell.getStringCellValue();
                    rowValues.add(val);
                }
                
                sheetValues.add(rowValues);
            }
            
            wb.close();
            
            JsonResult<List<List<String>>> result = new JsonResult<>();
            result.setSuccess(true);
            result.setData(sheetValues);
            return result;
        } catch (Exception e) {
            return JsonResult.ERROR(e.getMessage());
        }
    }

總結(jié)

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

相關(guān)文章

  • vue watch關(guān)于對(duì)象內(nèi)的屬性監(jiān)聽(tīng)

    vue watch關(guān)于對(duì)象內(nèi)的屬性監(jiān)聽(tīng)

    這篇文章主要介紹了vue watch關(guān)于對(duì)象內(nèi)的屬性監(jiān)聽(tīng)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-04-04
  • Vue組件庫(kù)ElementUI實(shí)現(xiàn)表格加載樹(shù)形數(shù)據(jù)教程

    Vue組件庫(kù)ElementUI實(shí)現(xiàn)表格加載樹(shù)形數(shù)據(jù)教程

    這篇文章主要為大家詳細(xì)介紹了Vue組件庫(kù)ElementUI實(shí)現(xiàn)表格加載樹(shù)形數(shù)據(jù)教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 詳解Vue.directive 自定義指令

    詳解Vue.directive 自定義指令

    這篇文章主要介紹了Vue.directive 自定義指令,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • vue3 teleport的使用案例詳解

    vue3 teleport的使用案例詳解

    這篇文章主要介紹了vue3 teleport的使用demo,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • Vue 修改網(wǎng)站圖標(biāo)的方法

    Vue 修改網(wǎng)站圖標(biāo)的方法

    這篇文章主要介紹了Vue 修改網(wǎng)站圖標(biāo)的方法,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12
  • Vue動(dòng)態(tài)組件與異步組件實(shí)例詳解

    Vue動(dòng)態(tài)組件與異步組件實(shí)例詳解

    這篇文章主要介紹了Vue動(dòng)態(tài)組件與異步組件,結(jié)合實(shí)例形式分析了動(dòng)態(tài)組件與異步組件相關(guān)概念、功能及使用技巧,需要的朋友可以參考下
    2019-02-02
  • vue組件實(shí)現(xiàn)移動(dòng)端九宮格轉(zhuǎn)盤抽獎(jiǎng)

    vue組件實(shí)現(xiàn)移動(dòng)端九宮格轉(zhuǎn)盤抽獎(jiǎng)

    這篇文章主要為大家詳細(xì)介紹了vue組件實(shí)現(xiàn)移動(dòng)端九宮格轉(zhuǎn)盤抽獎(jiǎng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 簡(jiǎn)單聊聊Vue中的ref,toRef與toRefs

    簡(jiǎn)單聊聊Vue中的ref,toRef與toRefs

    這篇文章主要是想和大家來(lái)簡(jiǎn)單聊聊Vue中的ref、toRef、toRefs這三個(gè)函數(shù)的使用與區(qū)別,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-04-04
  • Nuxt 項(xiàng)目性能優(yōu)化調(diào)研分析

    Nuxt 項(xiàng)目性能優(yōu)化調(diào)研分析

    這篇文章主要介紹了Nuxt 項(xiàng)目性能優(yōu)化調(diào)研分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • vue DatePicker日期選擇器時(shí)差8小時(shí)問(wèn)題

    vue DatePicker日期選擇器時(shí)差8小時(shí)問(wèn)題

    這篇文章主要介紹了vue DatePicker日期選擇器時(shí)差8小時(shí)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評(píng)論

鄂托克旗| 无为县| 宣汉县| 德化县| 深圳市| 昭通市| 克山县| 东乌珠穆沁旗| 桦川县| 成武县| 安顺市| 北川| 基隆市| 册亨县| 诸城市| 阆中市| 孟州市| 通州市| 延长县| 美姑县| 明光市| 屏东县| 穆棱市| 建水县| 泾阳县| 榆树市| 开平市| 南宫市| 从化市| 石嘴山市| 金溪县| 科尔| 湖口县| 琼结县| 二连浩特市| 正安县| 财经| 梓潼县| 清水河县| 东乡族自治县| 溧水县|