excel上傳

excel上傳前端取值

<upload-file
      v-model="fileList"
      :limit="1"
      :before-upload="beforeUpload"
      drag
      list-position="bottom"
    >
      <i class="el-icon-upload" />
      <div class="el-upload__text">將文件拖到此處,或<em>點(diǎn)擊上傳</em></div>
    </upload-file>
    <span slot="footer" class="dialog-footer">
      <el-button size="small" @click="handleClose">取 消</el-button>
      <el-button size="small" type="primary" @click="handleSubmit">確 定</el-button>
    </span>

    beforeUpload(file) {
      const isXls = file.name.toLocaleLowerCase().includes('.xls') || file.name.toLocaleLowerCase().includes('.xlsx')
      if (!isXls) {
        this.$message.error('僅支持xls文件!')
      }
      const reader = new FileReader()
      reader.onload = e => {
        const data = e.target.result
        const excelData = XLSX.read(data, { type: 'array' })
        this.result = []
        const sheet2JSONOpts = {
          /** Default value for null/undefined values */
          defval: ''// 給defval賦值為空的字符串
        }
        excelData.SheetNames.forEach((sheetName) => {
          this.result.push({
            sheetName: sheetName,
            sheet: XLSX.utils.sheet_to_json(excelData.Sheets[sheetName], sheet2JSONOpts)
          })
        })
      }
      reader.readAsArrayBuffer(file)
      return isXls
    },
    handleSubmit() {
      if (!this.result.length) {
        this.$message.warning('請(qǐng)上傳文件')
        return
      }
      if (this.checkData(this.result[0])) {
        const validData = this.result[0]
        console.log(validData.sheet.slice(2), 'valiData')
        this.$emit('sure', validData.sheet.slice(2).map(v => {
          const [accountOfPayee, accountNoOfPayee, nameOfPayeeBank, jointBanknoOfPayee, amountCollected] = Object.keys(v)
          // const [accountOfPayee, accountNoOfPayee, nameOfPayeeBank, jointBanknoOfPayee, amountCollected] = Object.values(v)
          // Object.values會(huì)自動(dòng)排序問(wèn)題
          return ({
            'otherAccountName': v[accountOfPayee] || '',
            'bankName': v[nameOfPayeeBank] || '',
            'transferFlowNo': v[accountNoOfPayee] || '',
            'remarks': v[jointBanknoOfPayee] || '',
            'transferSum': (parseFloat(v[amountCollected] || 0)).toFixed(2) || ''
          })
        }))
      }
      // this.loading = false
    },
    checkData(excelData) { // 非空校驗(yàn)
      const uploadData = excelData.sheet.slice(2)
      const flag = this.flag
      let valid // :boolean
      let message = '表格必填內(nèi)容缺失产上,請(qǐng)重新上傳'
      console.log(flag)
      // const valid = excelData.sheet.slice(2).every(v => Object.values(v).length === 6 || (Object.values(v)[0] === '行內(nèi)' && Object.values(v)[1] && Object.values(v)[2] && Object.values(v)[5] && (Object.values(v).length === 4 || Object.values(v).length === 5)))
      if (flag === 1) {
        valid = uploadData.every(v => (Object.values(v)[0]) && Object.values(v)[4])
        if (uploadData.length === 1) {
          valid = uploadData.every(v => (Object.values(v)[0]) && Object.values(v)[1] && Object.values(v)[2] && Object.values(v)[3] && Object.values(v)[4])
          message = '如果只導(dǎo)入一個(gè)收款賬戶時(shí)疆导,收款銀行名稱和收款賬戶聯(lián)行號(hào)必填'
        }
      } else if (flag === 0) {
        valid = uploadData.every(v => (Object.values(v)[0]) && Object.values(v)[1] && Object.values(v)[2] && Object.values(v)[3] && Object.values(v)[4])
      }
      if (!valid) {
        this.$message.error(message)
        this.result = []
        this.fileList = []
        return false
      }
      return true
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蚕断,一起剝皮案震驚了整個(gè)濱河市档押,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌毅臊,老刑警劉巖邑退,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異熬苍,居然都是意外死亡稍走,警方通過(guò)查閱死者的電腦和手機(jī)袁翁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)婿脸,“玉大人粱胜,你說(shuō)我怎么就攤上這事『鳎” “怎么了焙压?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)抑钟。 經(jīng)常有香客問(wèn)我涯曲,道長(zhǎng),這世上最難降的妖魔是什么在塔? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任幻件,我火速辦了婚禮,結(jié)果婚禮上心俗,老公的妹妹穿的比我還像新娘傲武。我一直安慰自己,他們只是感情好城榛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布揪利。 她就那樣靜靜地躺著,像睡著了一般狠持。 火紅的嫁衣襯著肌膚如雪疟位。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天喘垂,我揣著相機(jī)與錄音甜刻,去河邊找鬼。 笑死正勒,一個(gè)胖子當(dāng)著我的面吹牛得院,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播章贞,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼祥绞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了鸭限?” 一聲冷哼從身側(cè)響起蜕径,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎败京,沒(méi)想到半個(gè)月后兜喻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡赡麦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年朴皆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了帕识。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡遂铡,死狀恐怖渡冻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情忧便,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布帽借,位于F島的核電站珠增,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏砍艾。R本人自食惡果不足惜蒂教,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脆荷。 院中可真熱鬧凝垛,春花似錦、人聲如沸蜓谋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)桃焕。三九已至剑肯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間观堂,已是汗流浹背让网。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留师痕,地道東北人溃睹。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像胰坟,于是被迫代替她去往敵國(guó)和親因篇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355