angular-xlsx 解析excel文件

前言:做項(xiàng)目中俱饿,一需求為上傳excel文件,上傳前判斷文件中的表頭字段為固定字段不能變塌忽,固需要解析excel文件拍埠。項(xiàng)目采用的是angular開(kāi)發(fā),經(jīng)查閱資料可使用xlsx插件解決土居。

在使用xlsx插件前枣购,就遇到下載xlsx插件報(bào)錯(cuò)問(wèn)題嬉探,查閱資料,總結(jié)方法如下棉圈。

npm install xlsx --save

npm ERR! path E:\project\myGo\src\git.changhong.com\matrix\matrix-admin\node_modules\.node-sass.DELETE\vendor\win32-x64-57\binding.node
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall unlink
npm ERR! Error: EPERM: operation not permitted, unlink 'E:\project\myGo\src\git.changhong.com\matrix\matrix-admin\node_modules\.node-sass.DELETE\vendor\win32-x64-57\binding.node'
npm ERR!  { Error: EPERM: operation not permitted, unlink 'E:\project\myGo\src\git.changhong.com\matrix\matrix-admin\node_modules\.node-sass.DELETE\vendor\win32-x64-57\binding.node'
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, unlink 'E:\project\myGo\src\git.changhong.com\matrix\matrix-admin\node_modules\.node-sass.DELETE\vendor\win32-x64-57\binding.node'
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'unlink',
npm ERR!      path: 'E:\\project\\myGo\\src\\git.changhong.com\\matrix\\matrix-admin\\node_modules\\.node-sass.DELETE\\vendor\\win32-x64-57\\binding.node' },
npm ERR!   stack: 'Error: EPERM: operation not permitted, unlink \'E:\\project\\myGo\\src\\git.changhong.com\\matrix\\matrix-admin\\node_modules\\.node-sass.DELETE\\vendor\\win32-x64-57\\binding.node\'',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'unlink',
npm ERR!   path: 'E:\\project\\myGo\\src\\git.changhong.com\\matrix\\matrix-admin\\node_modules\\.node-sass.DELETE\\vendor\\win32-x64-57\\binding.node',
npm ERR!   parent: 'matrix-admin' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\asus\AppData\Roaming\npm-cache\_logs\2019-06-27T08_48_19_621Z-debug.log

解決辦法:
1.看到operation not permitted我們能想到權(quán)限問(wèn)題涩堤,以管理員身份運(yùn)行cmd(針對(duì)本次無(wú)用,大家可以下去試試有用沒(méi))
2.npm版本問(wèn)題分瘾,npm最新版本在安裝包時(shí)有些缺少依賴包胎围,這種情況就需要我們安裝低一點(diǎn)的npm版本,命令npm i -g npm@6.3.0(可用)

現(xiàn)在進(jìn)入正題德召,angular使用xlsx解析excel文件:
上傳組件我使用的是ng.ant的upload

    <nz-upload [(nzFileList)]="fileList" [nzLimit]='1' [nzMultiple]="true" [nzBeforeUpload]="beforeUpload">
      <button nz-button>
        <i nz-icon nzType="upload"></i>
        <span>選擇文件</span>
      </button>
    </nz-upload>

ts文件中引入import * as XLSX from 'xlsx'白魂;
beforeUpload 為上傳文件之前的鉤子,參數(shù)為上傳的文件上岗,若返回 false 則停止上傳福荸。

import * as XLSX from 'xlsx';
beforeUpload = (file): boolean => {
    if (file) {
      const fileName = file.name;//獲取文件名
      const reader: FileReader = new FileReader();//FileReader 對(duì)象允許Web應(yīng)用程序異步讀取存儲(chǔ)在用戶計(jì)算機(jī)上的文件
      //當(dāng)讀取操作成功完成時(shí)調(diào)用FileReader.onload 
      reader.onload = (e: any) => {
        const bstr: string = e.target.result;
        const wb: XLSX.WorkBook = XLSX.read(bstr, { type: 'binary' });      
        const wsname: string = wb.SheetNames[0];
        const ws: XLSX.WorkSheet = wb.Sheets[wsname];   
        this.importUserList = XLSX.utils.sheet_to_json(ws, { header: 1 });//解析出文件數(shù)據(jù),可以進(jìn)行后面操作
        this.importUserHeader =  this.importUserList[0];//獲得表頭字段
        this.fileList = this.fileList.concat(file);
      };
      reader.readAsBinaryString( file );
      return false;
    }
  }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末肴掷,一起剝皮案震驚了整個(gè)濱河市敬锐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捆等,老刑警劉巖滞造,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異栋烤,居然都是意外死亡谒养,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門明郭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)买窟,“玉大人,你說(shuō)我怎么就攤上這事薯定∈忌埽” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵话侄,是天一觀的道長(zhǎng)亏推。 經(jīng)常有香客問(wèn)我,道長(zhǎng)年堆,這世上最難降的妖魔是什么吞杭? 我笑而不...
    開(kāi)封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮变丧,結(jié)果婚禮上芽狗,老公的妹妹穿的比我還像新娘。我一直安慰自己痒蓬,他們只是感情好童擎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布滴劲。 她就那樣靜靜地躺著,像睡著了一般顾复。 火紅的嫁衣襯著肌膚如雪班挖。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天捕透,我揣著相機(jī)與錄音聪姿,去河邊找鬼碴萧。 笑死乙嘀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的破喻。 我是一名探鬼主播虎谢,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼曹质!你這毒婦竟也來(lái)了婴噩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤羽德,失蹤者是張志新(化名)和其女友劉穎几莽,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體宅静,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡章蚣,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了姨夹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纤垂。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖磷账,靈堂內(nèi)的尸體忽然破棺而出峭沦,到底是詐尸還是另有隱情,我是刑警寧澤逃糟,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布吼鱼,位于F島的核電站,受9級(jí)特大地震影響绰咽,放射性物質(zhì)發(fā)生泄漏菇肃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一剃诅、第九天 我趴在偏房一處隱蔽的房頂上張望巷送。 院中可真熱鬧,春花似錦矛辕、人聲如沸笑跛。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)飞蹂。三九已至几苍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間陈哑,已是汗流浹背妻坝。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惊窖,地道東北人刽宪。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像界酒,于是被迫代替她去往敵國(guó)和親圣拄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 點(diǎn)擊查看原文 Web SDK 開(kāi)發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 13,761評(píng)論 0 15
  • JavaScript 模塊化編程 網(wǎng)站越來(lái)越復(fù)雜毁欣,js代碼庇谆、js文件也越來(lái)越多,會(huì)遇到什么問(wèn)題凭疮? 命名沖突饭耳; 文件...
    magic_pill閱讀 1,423評(píng)論 0 1
  • 總覺(jué)得課題這個(gè)詞對(duì)于我來(lái)說(shuō)是特別高大上的感覺(jué),雖然自己也是一線教師执解,但是從來(lái)沒(méi)有想過(guò)自己有一天要去做一個(gè)課題寞肖,總...
    Aliceaurora閱讀 424評(píng)論 0 0
  • 在互聯(lián)網(wǎng)圈中桶唐,我們會(huì)經(jīng)常聊到一個(gè)詞栅葡,那就是“體驗(yàn)經(jīng)濟(jì)”,在互聯(lián)的下半場(chǎng)尤泽,體驗(yàn)經(jīng)濟(jì)已經(jīng)充斥著各個(gè)賽道欣簇,成為了商家必須...
    語(yǔ)憶科技閱讀 546評(píng)論 0 0
  • 我是一個(gè)愛(ài)較勁熊咽,愛(ài)搞笑的人.... 十年前我進(jìn)入了寵物圈.... 我還記得“你做不了寵物行業(yè),別踏進(jìn)這個(gè)深坑......
    新寵秀閱讀 366評(píng)論 0 0