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
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 }
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') } } }
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!