Home > Web Front-end > Front-end Q&A > How to export the tree table as is in Vue

How to export the tree table as is in Vue

PHPz
Release: 2023-04-13 10:53:45
Original
1154 people have browsed it

Tree tables are a common display method in projects, and Vue is currently one of the most commonly used frameworks on the front end. So, how to export the tree table as is in Vue? Below I will introduce one way to achieve this.

Method

First, we need to install the xlsx library, which can export data into an Excel table. Enter the following command on the command line to install:

npm install xlsx --save
Copy after login

Next, we need to encapsulate a function to generate an Excel file:

import XLSX from 'xlsx'

export function exportTreeExcel(dataList, columns, fileName) {
  const ws = XLSX.utils.json_to_sheet(getExportData(dataList, columns)) // 将数据转换成excel需要的一个二维数组形式
  const wb = XLSX.utils.book_new()
  XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
  XLSX.writeFile(wb, `${fileName}.xlsx`)
}

// 数据整理,将树型数据扁平化,去掉树形结构,同时处理成需要导出的字段
function getExportData(dataList, columns) {
  const res = []
  dataList.forEach(item => {
    const tmp = {}
    columns.forEach(col => {
      tmp[col.label] = item[col.prop]
    })
    res.push(tmp)
    if (item.children && item.children.length) { // 如果有子节点,则递归处理
      res.push(...getExportData(item.children, columns))
    }
  })
  return res
}
Copy after login

In this code, we encapsulate a function exportTreeExcel, which accepts three parameters, namely the data to be exported, column information and the name of the export file. In this function, we first flatten the tree data by calling the getExportData function and extract the fields that need to be exported. Then, we use the XLSX library to convert the data into Excel format and write the data to the file through the writeFile method.

getExportData The function is used to flatten the tree data and extract the fields that need to be exported. In this function, we determine whether the current node has child nodes. If so, recursively process its child nodes and add the child node's data to the result array.

Finally, we can call the exportTreeExcel function where we need to export the tree table.

Example:

export default {
  data() {
    return {
      dataList: [
        {
          id: 1,
          name: 'A',
          children: [
            {
              id: 2,
              name: 'A-1',
              children: [
                {
                  id: 3,
                  name: 'A-1-1',
                  children: []
                }
              ]
            }
          ]
        },
        {
          id: 4,
          name: 'B',
          children: []
        }
      ],
      columns: [
        {
          label: '编号',
          prop: 'id'
        },
        {
          label: '名称',
          prop: 'name'
        }
      ]
    }
  },
  methods: {
    exportExcel() {
      exportTreeExcel(this.dataList, this.columns, 'tree-table')
    }
  }
}
Copy after login

In the above example, we export the tree table data to an Excel file by calling the exportTreeExcel function. You can encapsulate this function into a tool library as in the example so that it can be easily called in other components.

Summary

The above is how to export the tree table as it is in Vue. Through this method, we can export the tree table data to an Excel file to facilitate other users to view and process. If you have other implementation methods, please share them with us in the comment area.

The above is the detailed content of How to export the tree table as is in Vue. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template