Vue前端导出Excel表格

一、Vue前端导出Excel表格方法

在Vue中,要实现前端导出Excel表格的功能,我们可以使用js-xlsx这个库。在安装好该库后,我们可以使用以下代码实现导出Excel表格:

excelExport () {
  import('@/vendor/Export2Excel').then(excel => {
    const tHeader = ['姓名', '年龄', '性别', '国籍']
    const filterVal = ['name', 'age', 'sex', 'nation']
    const list = [{name: '小明', age: 18, sex: '男', nation: '中国'}, {name: '小红', age: 19, sex: '女', nation: '中国'}]
    const data = this.formatJson(filterVal, list)
    excel.export_json_to_excel({
      header: tHeader,
      data,
      filename: '人员名单',
      autoWidth: true,
      bookType: 'xlsx'
    })
  })
},
formatJson (filterVal, jsonData) {
  return jsonData.map(v => filterVal.map(j => v[j]))
}

在上述代码中,我们使用了一个名为`formatJson`的函数将json数据转换成可以发送到后台接收的数据格式。这个函数的作用是把json数据中特定的字段提取出来形成一个二维数组。

二、Vue前端导出Excel表格小数点

当我们要导出的数据中有小数点时,我们可以通过修改`SheetJS/js-xlsx`库的源码实现对小数点的支持。在js-xlsx.js 文件中,在到处`write_num`时,加上如下代码:

IFmt._table[2] = '0.00';
numFmt[2] = '0.00'

这样就可以实现对导出数据中小数点的支持了。

三、Vue前端导出Excel表格可变表头

有时候我们需要导出的Excel表格的表头并不是固定的,而是根据前端用户输入的内容动态生成的。在Vue中,我们可以使用`element-ui`组件库中的“组件来实现这个功能。具体代码实现如下:

// 在template中
<el-table :data="tableData">
  <el-table-column v-for="column in columns" :key="column.name" :prop="column.name" :label="column.label"></el-table-column>
</el-table>

// 在script中
import XLSX from 'xlsx'

export default {
  data () {
    return {
      columns: [{name: 'name', label: '姓名'}, {name: 'age', label: '年龄'}, {name: 'sex', label: '性别'}, {name: 'nation', label: '国籍'}],
      tableData: [{name: '小明', age: 18, sex: '男', nation: '中国'}, {name: '小红', age: 19, sex: '女', nation: '中国'}]
    }
  },
  methods: {
    downloadExcel () {
      const tHeader = this.columns.map(col => col.label)
      const filterVal = this.columns.map(col => col.name)
      const data = this.formatJson(filterVal, this.tableData)
      const workbook = XLSX.utils.book_new()
      const sheet = XLSX.utils.aoa_to_sheet([tHeader].concat(data))
      XLSX.utils.book_append_sheet(workbook, sheet, 'Sheet1')
      XLSX.writeFile(workbook, '人员名单.xlsx')
    },
    formatJson (filterVal, jsonData) {
      return jsonData.map(v => filterVal.map(j => v[j]))
    }
  }
}

四、Vue怎么导出Excel表格

在Vue中,我们可以使用js-xlsx这个库来实现导出Excel表格的功能。具体代码实现可参考`Vue前端导出Excel表格方法`一节。使用该方法,我们可以将我们需要导出的数据转成相应的json文件,然后再转成Excel格式。

五、Vue表格导出Excel

要将Vue中的表格导出成Excel表格,我们可以在Vue中使用`element-ui`组件库中的“组件来实现,然后再使用`js-xlsx`库将表格数据转成Excel表格即可。具体代码实现可参考`Vue前端导出Excel表格可变表头`一节。

六、Vue导出Excel完整代码

以下是Vue中使用`js-xlsx`库实现导出Excel表格的完整代码:

<template>
  <div>
    <el-button type="primary" @click="downloadExcel">导出Excel文件</el-button>
  </div>
</template>

<script>
import XLSX from 'xlsx'

export default {
  methods: {
    downloadExcel () {
      const tHeader = ['姓名', '年龄', '性别', '国籍']
      const filterVal = ['name', 'age', 'sex', 'nation']
      const list = [{name: '小明', age: 18, sex: '男', nation: '中国'}, {name: '小红', age: 19, sex: '女', nation: '中国'}]
      const data = this.formatJson(filterVal, list)
      const workbook = XLSX.utils.book_new()
      const sheet = XLSX.utils.aoa_to_sheet([tHeader].concat(data))
      XLSX.utils.book_append_sheet(workbook, sheet, 'Sheet1')
      XLSX.writeFile(workbook, '人员名单.xlsx')
    },
    formatJson (filterVal, jsonData) {
      return jsonData.map(v => filterVal.map(j => v[j]))
    }
  }
}
</script>

七、Vue操作Excel文件

在Vue中,如果要实现操作Excel文件的功能,我们可以使用`SheetJS/js-xlsx`这个库,这个库支持读取、写入以及操作Excel文件。具体实现可参考以下代码:

// 读取Excel数据
readExcel (file) {
  const reader = new FileReader()
  reader.onload = e => {
    const data = e.target.result
    const workbook = XLSX.read(data, {type: 'binary'})
    const sheetName = workbook.SheetNames[0]
    const sheet = workbook.Sheets[sheetName]
    const jsonData = XLSX.utils.sheet_to_json(sheet)
  }
  reader.readAsBinaryString(file)
}

// 写入Excel数据
writeExcel (jsonData) {
  const tHeader = ['姓名', '年龄', '性别', '国籍']
  const filterVal = ['name', 'age', 'sex', 'nation']
  const data = this.formatJson(filterVal, jsonData)
  const workbook = XLSX.utils.book_new()
  const sheet = XLSX.utils.aoa_to_sheet([tHeader].concat(data))
  XLSX.utils.book_append_sheet(workbook, sheet, 'Sheet1')
  XLSX.writeFile(workbook, '人员名单.xlsx')
}

// 更新Excel数据
updateExcel (jsonData, index) {
  const tHeader = ['姓名', '年龄', '性别', '国籍']
  const filterVal = ['name', 'age', 'sex', 'nation']
  const data = this.formatJson(filterVal, jsonData)
  const workbook = XLSX.utils.book_new()
  const sheet = XLSX.utils.aoa_to_sheet([tHeader].concat(data))
  const wsname = workbook.SheetNames[0]
  const worksheet = workbook.Sheets[wsname]
  XLSX.utils.sheet_add_json(worksheet, jsonData[index], {skipHeader: true, origin: 'A2'})
  XLSX.writeFile(workbook, '人员名单.xlsx')
}

八、Vue导入Excel并预览

在Vue中,如果要实现导入Excel文件并预览的功能,我们可以使用`SheetJS/js-xlsx`这个库。具体实现可参考以下代码:

<template>
  <div>
    <el-upload :before-upload="beforeUploadExcel">
      <el-button slot="trigger">上传Excel文件</el-button>
    </el-upload>
    <el-table :data="personList">
      <el-table-column label="姓名" prop="name"></el-table-column>
      <el-table-column label="年龄" prop="age"></el-table-column>
      <el-table-column label="性别" prop="gender"></el-table-column>
      <el-table-column label="国籍" prop="nation"></el-table-column>
    </el-table>
  </div>
</template>

<script>
import XLSX from 'xlsx'

export default {
  data () {
    return {
      personList: []
    }
  },
  methods: {
    beforeUploadExcel (file) {
      return new Promise((resolve, reject) => {
        const reader = new FileReader()
        reader.onload = e => {
          const data = e.target.result
          const workbook = XLSX.read(data, {type: 'binary'})
          const sheetName = workbook.SheetNames[0]
          const sheet = workbook.Sheets[sheetName]
          const jsonData = XLSX.utils.sheet_to_json(sheet)
          this.personList = jsonData
        }
        reader.readAsBinaryString(file)
        resolve()
      })
    }
  }
}
</script>

九、Vue下载Excel模板

在Vue中,如果要实现下载Excel模板的功能,我们可以如下实现:

<template>
  <div>
    <a href="#" @click="downloadExcelTemp">下载Excel模板</a>
  </div>
</template>

<script>
import XLSX from 'xlsx'

export default {
  methods: {
    downloadExcelTemp () {
      const tHeader = ['姓名', '年龄', '性别', '国籍']
      const wb = XLSX.utils.book_new()
      const ws = XLSX.utils.aoa_to_sheet([tHeader])
      XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
      XLSX.writeFile(wb, '人员模板.xlsx')
    }
  }
}
</script>

十、Vue批量导入Excel

在Vue中,如果要实现批量导入Excel文件的功能,我们可以使用`SheetJS/js-xlsx`这个库。具体实现可参考以下代码:

<template>
  <div>
    <el-upload :before-upload="beforeUploadExcel">
      <el-button slot="trigger">上传Excel文件</el-button>
    </el-upload>
  </div>
</template>

<script>
import XLSX from 'xlsx'

export default {
  methods: {
    beforeUploadExcel (file) {
      return new Promise((resolve, reject) => {
        const reader = new FileReader()
        reader.onload = e => {
          const data = e.target.result
          const workbook = XLSX.read(data, {type: 'binary'})
          const sheetName = workbook.SheetNames[0]
          const sheet = workbook.Sheets[sheetName]
          const jsonData = XLSX.utils.sheet_to_json(sheet)
          // 批量导入Excel数据到服务器
          this.uploadBatchData(jsonData)
        }
        reader.readAsBinaryString(file)
        resolve()
      })
    },
    uploadBatchData (data) {
      // 实现批量导入Excel数据的代码
    }
  }
}
</script>

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/257845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-15 12:47
下一篇 2024-12-15 12:47

相关推荐

  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • 使用Treeview显示表格

    在web开发中,显示表格数据是一项很常见的需求。当我们需要在页面上显示大量数据时,除了使用传统的表格样式外,还可以使用Treeview这种可折叠的表格样式,以便更好地展示数据。本文…

    编程 2025-04-29
  • Python根据表格数据生成折线图

    本文将介绍如何使用Python根据表格数据生成折线图。折线图是一种常见的数据可视化图表形式,可以用来展示数据的趋势和变化。Python是一种流行的编程语言,其强大的数据分析和可视化…

    编程 2025-04-29
  • Python 图片转表格

    本文将详细介绍如何使用Python将图片转为表格。大家平时在处理一些资料的时候难免会遇到图片转表格的需求。比如从PDF文档中提取表格等场景。当然,这个功能也可以通过手动复制、粘贴,…

    编程 2025-04-29
  • Vue TS工程结构用法介绍

    在本篇文章中,我们将从多个方面对Vue TS工程结构进行详细的阐述,涵盖文件结构、路由配置、组件间通讯、状态管理等内容,并给出对应的代码示例。 一、文件结构 一个好的文件结构可以极…

    编程 2025-04-29
  • 为什么不能用Microsoft Excel进行Python编程?

    Microsoft Excel是一个广泛使用的数据分析工具,但是它不能直接用于Python编程。这是因为Microsoft Excel并不是一个编程工具,它的主要功能是进行数据处理…

    编程 2025-04-29
  • python爬取网页并生成表格

    本文将从以下几个方面详细介绍如何使用Python爬取网页数据并生成表格: 一、获取网页数据 获取网页数据的一般思路是通过HTTP请求获取网页内容,最常用的方式是使用Python库r…

    编程 2025-04-28
  • Python如何做表格为中心

    本文将从多个方面详细阐述Python如何做表格,包括表格的创建、数据的插入、表格的样式设置等内容。 一、创建表格 要在Python中创建表格,我们可以使用第三方库Pandas。具体…

    编程 2025-04-28
  • 基尼系数Excel计算模板

    这篇文章将介绍基尼系数Excel计算模板,为大家详细阐述如何使用Excel进行基尼系数的计算。 一、模板下载及导入 首先需要下载基尼系数的Excel计算模板,可以在Excel中通过…

    编程 2025-04-28
  • Vue3的vue-resource使用教程

    本文将从以下几个方面详细阐述Vue3如何使用vue-resource。 一、安装Vue3和vue-resource 在使用vue-resource前,我们需要先安装Vue3和vue…

    编程 2025-04-27

发表回复

登录后才能评论