xlsx将html table导出为excel表格

示例中已省略部分无关的代码。

一、安装xlsx

$ npm install xlsx --save

二、导出excel方法

将导出excel方法写在混入中,在每个需要的页面混入。

isShowTableColumn 控制不需要打印的列 (XLSX会根据拿到的table的dom来转换成excel,将isShowTableColumn设为false,临时将不需要展示的列从dom中删除),打印前将isShowTableColumn设为false,等dom更新后(Vue.nextTick方法)再调用XLSX的方法,导出excel,同时把isShowTableColumn再次设为默认值true。

src/mixins/tableMixin.js

import XLSX from 'xlsx'

export default {
  data() {
    return {
      // 操作栏是否展示
      isShowTableColumn: true
    }
  },
  methods: {
    // 导出当前页为excel
    exportExcel() {
      // 隐藏操作栏
      this.isShowTableColumn = false
      let title = this.$route.meta.title
      // DOM 更新了
      this.$nextTick(() => {
        // 导出excel
        const workSheet = XLSX.utils.table_to_sheet(this.$refs.table.$el, {raw: true})
        const workBook = XLSX.utils.book_new()
        XLSX.utils.book_append_sheet(workBook, workSheet, title)
        XLSX.writeFile(workBook, `${title}.xlsx`)
        // 显示操作栏
        this.isShowTableColumn = true
      })
    },
  },

}

三、页面引用

table设置属性ref="table",不需要打印的列设置属性v-if="isShowTableColumn"。

src/views/deliver/ShipOrder/index.vue

<template>
  <div class="shipOrder">
    <mytable>
      
      <!-- 工具栏左侧按钮 -->
      <div slot="left-buttons">

        <el-button type="primary" size="mini" @click="exportExcel">导出excel</el-button>

      </div>

      <!-- 表格 -->
      <div slot="tables">
        <el-table ref="table" :data="tableData" @sort-change="sortChange" @selection-change="selectionChange" border :height="getTableHeight" style="width: 100%">
          <el-table-column
            type="selection"
            width="55">
          </el-table-column>
          <el-table-column
            prop="warehouseCode"
            label="所属仓库"
            width="120"
            sortable>
          </el-table-column>
            ...
          <el-table-column
            v-if="isShowTableColumn"
            label="操作"
            fixed="right"
            :width="width">
            <template slot-scope="scope">
              <!-- 修改 -->
              <el-button type="text" icon="el-icon-edit" size="mini" @click="showEdit(scope.row)" :disabled="btnDisabled('edit')">修改</el-button>
              <!-- 取消 -->
              <el-button type="text" icon="el-icon-close" size="mini" @click="showCancel(scope.row)" :disabled="btnDisabled('cancel')">取消</el-button>
              <!-- 明细 -->
              <el-button type="text" icon="el-icon-document" size="mini" @click="showDetail(scope.row)" :disabled="btnDisabled('detail')">明细</el-button>
              <!-- 激活 -->
              <el-button type="text" size="mini" @click="showActive(scope.row)" :disabled="btnDisabled('active')">激活</el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </mytable>

  </div>
</template>

<script>
import Mytable from '@/components/Mytable'
import tableMixin from '@/mixins/tableMixin'

export default {
  mixins: [tableMixin],
  components: {
    Mytable
  },
  name: 'ShipOrder',
  data() {
    return {

    }
  },
  methods: {
     
  }
}
</script>

<style lang="scss" scoped>

</style>

四、

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现原生table导出excel表格,可以使用以下方法: 首先,在组件的methods中定义一个方法,比如exportExcel,该方法用于将table导出excel文件。在该方法中,可以使用第一个引用\[1\]中的代码作为参考,其中使用了XLSX和FileSaver库来实现导出功能。 接下来,需要定义导出excel的数据格式。可以参考第二个引用\[2\]中的代码,其中定义了tHeader(表头中文)、filterVal(表头key)、list(表格数据)和total_info(总计信息数据)等字段。 在exportExcel方法中,可以根据定义的数据格式,将table数据填充到相应的字段中。然后使用XLSX库的table_to_book方法将table转换为workbook对象。 接着,使用XLSX库的write方法将workbook对象转换为二进制字符串。然后使用FileSaver库的saveAs方法将二进制字符串保存为excel文件,可以指定文件名。 最后,返回导出excel文件内容。 总结起来,实现原生table导出excel表格的步骤如下: 1. 定义导出excel的数据格式,包括表头中文、表头key、表格数据和总计信息数据等字段。 2. 在exportExcel方法中,将table数据填充到相应的字段中。 3. 使用XLSX库的table_to_book方法将table转换为workbook对象。 4. 使用XLSX库的write方法将workbook对象转换为二进制字符串。 5. 使用FileSaver库的saveAs方法将二进制字符串保存为excel文件,可以指定文件名。 6. 返回导出excel文件内容。 希望以上解答对您有帮助! #### 引用[.reference_title] - *1* [原生table表格使用js导出excel表](https://blog.csdn.net/weixin_46408500/article/details/127865069)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [前端table导出excel表格方法汇总](https://blog.csdn.net/yufengaotian/article/details/121439968)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值