国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

el-table實(shí)現(xiàn)純前端導(dǎo)出(適用于el-table任意表格)

這篇具有很好參考價(jià)值的文章主要介紹了el-table實(shí)現(xiàn)純前端導(dǎo)出(適用于el-table任意表格)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

2023.9.1今天我學(xué)習(xí)了如何使用el-table實(shí)現(xiàn)前端的導(dǎo)出功能,該方法的好處有無論你的el-table長什么樣子,導(dǎo)出之后就是什么樣子。

1.安裝三個(gè)插件

npm install file-save

npm install xlsx

npm install xlsx-style

2.創(chuàng)建Export2Excel.js

// 根據(jù)dom導(dǎo)出表格
import { saveAs } from 'file-saver'
import * as XLSX from 'xlsx'
import * as XLSXStyle from "xlsx-style";

function s2ab(s) {
  var buf = new ArrayBuffer(s.length);
  var view = new Uint8Array(buf);
  for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
  return buf;
}

export function exportToExcel(idSelector, fileName, titleNum = 1) {
  // 設(shè)置導(dǎo)出的內(nèi)容是否只做解析,不進(jìn)行格式轉(zhuǎn)換     false:要解析, true:不解析
  const xlsxParam = { raw: true }
  let table = document.querySelector(idSelector).cloneNode(true)
  // 因?yàn)閑lement-ui的表格的fixed屬性導(dǎo)致多出一個(gè)table,會(huì)下載重復(fù)內(nèi)容,這里刪除掉
  if (table.querySelector('.el-table__fixed-right')) {
    table.removeChild(table.querySelector('.el-table__fixed-right'))
  }
  if (table.querySelector('.el-table__fixed')) {
    table.removeChild(table.querySelector('.el-table__fixed'))
  }

  const wb = XLSX.utils.table_to_book(table, xlsxParam)
  let range = XLSX.utils.decode_range(wb.Sheets['Sheet1']['!ref'])
  let cWidth = []
  for (let C = range.s.c; C < range.e.c; ++C) {   //SHEET列
    let len = 100 //默認(rèn)列寬
    let len_max = 400 //最大列寬
    for (let R = range.s.r; R <= range.e.r; ++R) {  //SHEET行
      let cell = { c: C, r: R }                    //二維 列行確定一個(gè)單元格
      let cell_ref = XLSX.utils.encode_cell(cell)  //單元格 A1、A2
      if (wb.Sheets['Sheet1'][cell_ref]) {
        // if (R == 0){
        if (R < titleNum) {
          wb.Sheets['Sheet1'][cell_ref].s = {  //設(shè)置第一行單元格的樣式 style
            alignment: {
              horizontal: 'center',
              vertical: 'center'
            }
          }
        } else {
          wb.Sheets['Sheet1'][cell_ref].s = {
            alignment: {
              horizontal: 'center',
              vertical: 'center'
            }
          }
        }
        //動(dòng)態(tài)自適應(yīng):計(jì)算列寬
        let va = JSON.parse(JSON.stringify(wb.Sheets['Sheet1'][cell_ref].v))
        var card1 = JSON.parse(JSON.stringify(va)).match(/[\u4e00-\u9fa5]/g) //匹配中文
        var card11 = ''
        if (card1) {
          card11 = card1.join('')
        }
        var card2 = JSON.parse(JSON.stringify(va)).replace(/([^\u0000-\u00FF])/g, '')  //剔除中文
        let st = 0
        if (card11) {
          // st += card11.length * 16  //中文字節(jié)碼長度
          st += card11.length * 20  //中文字節(jié)碼長度
        }
        if (card2) {
          // st += card2.length * 8  //非中文字節(jié)碼長度
          st += card2.length * 10  //非中文字節(jié)碼長度
        }
        if (st > len) {
          len = st
        }
      }
    }
    if (len > len_max) {//最大寬度
      len = len_max
    }

    cWidth.push({ 'wpx': len })     //列寬
  }
  wb.Sheets['Sheet1']['!cols'] = cWidth
  const wbout = XLSXStyle.write(wb, { bookType: 'xlsx', bookSST: false, type: 'binary' })
  try {
    saveAs(new Blob([s2ab(wbout)], { type: '' }), `${fileName}.xlsx`)
  } catch (e) {
    if (typeof console !== 'undefined') {
      console.log(e, wbout)
    }
  }
  return wbout
}

3.按需引入

<template>
    <div>
      <el-table  id='table'>
        //形式一
        <el-table-column>
         <template>
           <span>可以用插槽形式</span>
         </template>
        </el-table-column>
     
        //形式二
        <el-table-column lable=可以用這種形式' prop='xxx'/>
     
        //形式三(不可用)
        <el-table-column>
          <template>
            <el-input  v-model=''/>//該方式無法識(shí)別到
          </template>
        </el-table-column>

     </el-table>//給表格一個(gè)id
      <el-button @click='demo'>導(dǎo)出</el-button>
    </div>
</template>

<script>
import { exportToExcel } from '@/Export2Excel'

export default{
  data(){
    return{}
 },
  methods:{
      demo(){
        exportToExcel('#table', '導(dǎo)出名稱')//id選擇器,導(dǎo)出名稱,調(diào)用這個(gè)方法就可以了
      }
  }
}
</script>

4.vue.config.js引入

  //在這個(gè)方法里面
  configureWebpack: {
    name: name,
    resolve: {
      alias: {
        '@': resolve('src')
      }
    },
    plugins: [
      // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解壓縮靜態(tài)文件
      new CompressionPlugin({
        cache: false,                   // 不啟用文件緩存
        test: /\.(js|css|html)?$/i,     // 壓縮文件格式
        filename: '[path].gz[query]',   // 壓縮后的文件名
        algorithm: 'gzip',              // 使用gzip壓縮
        minRatio: 0.8                   // 壓縮率小于1才會(huì)壓縮
      })
    ],


    //加入這三行
    externals: [{
      './cptable': 'var cptable'
    }]



  },

效果:

el-table實(shí)現(xiàn)純前端導(dǎo)出(適用于el-table任意表格),前端

el-table實(shí)現(xiàn)純前端導(dǎo)出(適用于el-table任意表格),前端擴(kuò)展:

當(dāng)我們會(huì)出現(xiàn)這樣的表格需求時(shí),如果只是用v-if判斷,導(dǎo)出來會(huì)全部也有,因?yàn)槲覀冎蛔隽藇-if的判斷

el-table實(shí)現(xiàn)純前端導(dǎo)出(適用于el-table任意表格),前端

實(shí)現(xiàn)代碼如下:

<span v-if="index===0">{{scope.row.xxxx}}</span>//如果是第一行就顯示值
<span v-else></span>//如果不是就為空

這樣就可以防止只需要第一個(gè)行數(shù)據(jù)的時(shí)候其他還會(huì)顯示的問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-688406.html

到了這里,關(guān)于el-table實(shí)現(xiàn)純前端導(dǎo)出(適用于el-table任意表格)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue純前端導(dǎo)入excel,獲取excel的表格數(shù)據(jù)渲染el-table

    vue純前端導(dǎo)入excel,獲取excel的表格數(shù)據(jù)渲染el-table

    最近有個(gè)需求,最開始列表數(shù)據(jù)是通過新增按鈕一條條添加的,但是部分?jǐn)?shù)據(jù)量可能上百條,客戶自己手選會(huì)很慢,所以產(chǎn)品經(jīng)理給了個(gè)需求要求可以通過上傳excle文件進(jìn)行導(dǎo)入。 經(jīng)過網(wǎng)上查詢及涉及自己項(xiàng)目,實(shí)現(xiàn)了此功能。 第一步:安裝插件,我安的是0.16.0;原因是默認(rèn)

    2024年02月16日
    瀏覽(30)
  • 【前端】vue3+ts+vite,el-table表格渲染記錄重復(fù)情況

    給自己一個(gè)目標(biāo),然后堅(jiān)持一段時(shí)間,總會(huì)有收獲和感悟! 在使用vue的過程中,總會(huì)遇到一些有疑問的地方,總結(jié)就能夠加深印象,下次再出現(xiàn)的時(shí)候也有個(gè)參考的地方。 Element UI 的 el-table 組件是一個(gè)強(qiáng)大的表格組件,提供了許多常見的屬性來配置和定制表格的外觀和行為

    2024年02月04日
    瀏覽(32)
  • el-table實(shí)現(xiàn)嵌套表格的展示

    el-table實(shí)現(xiàn)嵌套表格的展示

    需求 一個(gè)表單中存在子表 列表返回格式 實(shí)現(xiàn) 實(shí)現(xiàn)思路 el-table中在嵌套一個(gè)el-table,這樣數(shù)據(jù)格式就沒問題了,主要就是樣式 將共同的列放到一列中,通過渲染自定義表頭 render-header ,將表頭按照合適的寬度渲染出來 根據(jù)數(shù)據(jù)渲染表頭 調(diào)樣式,慢慢調(diào)到合適就行 完整代碼

    2024年02月21日
    瀏覽(21)
  • el-table表格實(shí)現(xiàn)自動(dòng)滾動(dòng)效果

    el-table表格實(shí)現(xiàn)自動(dòng)滾動(dòng)效果

    table頁面的內(nèi)容如果超出設(shè)定的height會(huì)出現(xiàn)自動(dòng)無限滾動(dòng)的效果,如下所示: 先給el-table一個(gè)ref屬性 然后獲取到這個(gè)屬性 在mounted階段執(zhí)行scrollFun函數(shù),通過setTnterval定時(shí)器來實(shí)現(xiàn)動(dòng)態(tài)滾動(dòng)效果,代碼如下: 如果出現(xiàn)列表字段過長時(shí),可使用tooltip-effect=“dark” 搭配 show-overf

    2024年02月13日
    瀏覽(26)
  • 【前端vue+elemenui】el-table根據(jù)表格數(shù)據(jù)設(shè)置整行樣式或單元格樣式

    【前端vue+elemenui】el-table根據(jù)表格數(shù)據(jù)設(shè)置整行樣式或單元格樣式

    首先需要了解倆個(gè)函數(shù),row-class-name、cell-class-name 這里以cell-class-name單元格樣式為例 row-class-name 行的 className 的回調(diào)方法,也可以使用字符串為所有行設(shè)置一個(gè)固定的 className。 Function({row, rowIndex})/String cell-class-name 單元格的 className 的回調(diào)方法,也可以使用字符串為所有單元

    2024年01月24日
    瀏覽(28)
  • vue3中el-table實(shí)現(xiàn)表格合計(jì)行

    el-table標(biāo)簽上加屬性 show-summary :summary-method=“getSummary” js中添加函數(shù)(合計(jì)沒有額外的附件參數(shù)添加) js中添加函數(shù)(合計(jì)有額外的附件參數(shù)添加的情況)

    2024年02月02日
    瀏覽(22)
  • el-table實(shí)現(xiàn)表格整行選中狀態(tài),背景顏色切換
  • 表格(el-table)里面嵌套表格(el-table)

    表格(el-table)里面嵌套表格(el-table)

    樣式如下:? ?用到的代碼: 一般需要嵌套表格這種情況下,后端返回的都是字符串格式的數(shù)組,需要在接收到數(shù)據(jù)后自己轉(zhuǎn)化,編輯好提交的時(shí)候也需要自己把數(shù)組轉(zhuǎn)為字符串格式傳給后端. 一般在涉及到嵌套表格的情況下,新增或者編輯某條記錄的時(shí)候,都會(huì)有動(dòng)態(tài)增加或者刪除一

    2024年02月15日
    瀏覽(34)
  • 【Vue/element】 el-table實(shí)現(xiàn)表格動(dòng)態(tài)新增/插入/刪除 表格行,可編輯單元格

    【Vue/element】 el-table實(shí)現(xiàn)表格動(dòng)態(tài)新增/插入/刪除 表格行,可編輯單元格

    效果如下: 點(diǎn)擊“新增一行”可以在表格最后新增一行,單元格內(nèi)容可編輯 點(diǎn)擊綠色+按鈕,可在指定行的后面插入一行 點(diǎn)擊紅色-按鈕,可以刪除指定行 原理:表格 el-table 是通過動(dòng)態(tài)循環(huán) tableData 生成,只要對 tableData 數(shù)組進(jìn)行增加刪除元素,就可以達(dá)到效果 這里用了ele

    2024年02月16日
    瀏覽(35)
  • 最簡單 實(shí)現(xiàn) Element-ui el-table的懶加載表格數(shù)據(jù) el-table懶加載請求數(shù)據(jù) element-ui 懶加載

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包