ant design pro +react导出多级表头表格
时间: 2023-10-01 08:05:53 浏览: 163
Ant Design 5.0+react管理系统后台程序
Ant Design Pro + React 可以使用 `antd` 的 `Table` 组件来实现多级表头的表格导出。
首先,需要在表格组件的 `columns` 属性中定义多级表头的结构,例如:
```jsx
const columns = [
{
title: '姓名',
dataIndex: 'name',
width: 100,
fixed: 'left',
children: [
{
title: '年龄',
dataIndex: 'age',
width: 80,
sorter: (a, b) => a.age - b.age,
},
{
title: '地址',
dataIndex: 'address',
children: [
{
title: '街道',
dataIndex: 'street',
width: 120,
},
{
title: '城市',
dataIndex: 'city',
width: 80,
},
{
title: '邮编',
dataIndex: 'zip',
width: 80,
},
],
},
],
},
{
title: '公司',
dataIndex: 'company',
children: [
{
title: '职位',
dataIndex: 'position',
width: 120,
},
{
title: '部门',
dataIndex: 'department',
width: 120,
},
],
},
];
```
然后,在表格组件中添加一个按钮,用于触发导出操作。在导出操作中,需要使用 `xlsx` 库将表格数据转换为 Excel 文件并下载,例如:
```jsx
import React, { useState } from 'react';
import { Button, Table } from 'antd';
import XLSX from 'xlsx';
const data = [
{
key: '1',
name: 'John Brown',
age: 32,
street: 'New York No. 1 Lake Park',
city: 'New York',
zip: '10001',
company: 'ABC Company',
position: 'Manager',
department: 'Sales',
},
// ...
];
const columns = [
// ...
];
const ExportTable = () => {
const [loading, setLoading] = useState(false);
const handleExport = () => {
setLoading(true);
setTimeout(() => {
const worksheet = XLSX.utils.json_to_sheet(data);
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
XLSX.writeFile(workbook, 'table.xlsx');
setLoading(false);
}, 1000);
};
return (
<>
<Button onClick={handleExport} loading={loading}>
导出表格
</Button>
<Table columns={columns} dataSource={data} />
</>
);
};
export default ExportTable;
```
在上面的代码中,使用 `XLSX.utils.json_to_sheet` 将表格数据转换为 Excel 工作表,并使用 `XLSX.utils.book_new` 创建一个新的 Excel 工作簿。然后,使用 `XLSX.utils.book_append_sheet` 将工作表添加到工作簿中,并使用 `XLSX.writeFile` 将工作簿保存为 Excel 文件并下载。最后,使用 `loading` 状态来控制导出操作的加载状态。
阅读全文