antdesgin table 组件下载成excel

文章目录

  • 发现宝藏
  • 一、需求
  • 二、报错

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。

一、需求

原组件如下,需要添加下载功能

在这里插入图片描述

import React, { useState } from 'react';
import { Divider, Radio, Table } from 'antd';
import type { TableColumnsType } from 'antd';interface DataType {key: React.Key;name: string;age: number;address: string;
}const columns: TableColumnsType<DataType> = [{title: 'Name',dataIndex: 'name',render: (text: string) => <a>{text}</a>,},{title: 'Age',dataIndex: 'age',},{title: 'Address',dataIndex: 'address',},
];const data: DataType[] = [{key: '1',name: 'John Brown',age: 32,address: 'New York No. 1 Lake Park',},{key: '2',name: 'Jim Green',age: 42,address: 'London No. 1 Lake Park',},{key: '3',name: 'Joe Black',age: 32,address: 'Sydney No. 1 Lake Park',},{key: '4',name: 'Disabled User',age: 99,address: 'Sydney No. 1 Lake Park',},
];// rowSelection object indicates the need for row selection
const rowSelection = {onChange: (selectedRowKeys: React.Key[], selectedRows: DataType[]) => {console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);},getCheckboxProps: (record: DataType) => ({disabled: record.name === 'Disabled User', // Column configuration not to be checkedname: record.name,}),
};const App: React.FC = () => {const [selectionType, setSelectionType] = useState<'checkbox' | 'radio'>('checkbox');return (<div><Radio.GrouponChange={({ target: { value } }) => {setSelectionType(value);}}value={selectionType}><Radio value="checkbox">Checkbox</Radio><Radio value="radio">radio</Radio></Radio.Group><Divider /><TablerowSelection={{type: selectionType,...rowSelection,}}columns={columns}dataSource={data}/></div>);
};export default App;

要在React组件中添加一个下载按钮,并将Ant Design的Table组件中的数据下载为Excel文件,你可以使用exceljsxlsx这样的库来生成Excel文件,并通过JavaScript的Bloba标签来实现下载。
首先,安装exceljs库:

npm install exceljs

然后,在XiMuBiao组件中添加一个下载按钮,并实现将表格数据转换为Excel文件的功能:

// XiMuBiao.tsx
import React from 'react';
import { Table, TableColumnsType, TableProps } from 'antd';
import { saveAs } from 'file-saver';
import ExcelJS from 'exceljs';
interface DataType {key: React.Key;name: string;age: number;address: string;
}
const XiMuBiao: React.FC = () => {const columns: TableColumnsType<DataType> = [// ... (columns definition as before)];const data: DataType[] = [// ... (data array as before)];const onChange: TableProps<DataType>['onChange'] = (pagination, filters, sorter, extra) => {console.log('params', pagination, filters, sorter, extra);};const downloadExcel = async () => {const workbook = new ExcelJS.Workbook();const worksheet = workbook.addWorksheet('Sheet1');// Add column headersworksheet.columns = [{ header: 'Name', key: 'name', width: 30 },{ header: 'Age', key: 'age', width: 10 },{ header: 'Address', key: 'address', width: 40 },];// Add data rowsdata.forEach((row) => {worksheet.addRow({name: row.name,age: row.age,address: row.address,});});// Generate Excel fileconst buffer = await workbook.xlsx.writeBuffer();saveAs(new Blob([buffer], { type: 'application/octet-stream' }), '测试.xlsx');};return (<div><Table columns={columns} dataSource={data} onChange={onChange} /><button onClick={downloadExcel} style={{ position: 'absolute', right: 0, bottom: 0 }}>下载为Excel</button></div>);
};
export default XiMuBiao;

在这个例子中,我们添加了一个名为downloadExcel的函数,该函数使用exceljs库创建一个Excel工作簿,并添加数据。然后,我们使用saveAs函数(来自file-saver库,exceljs依赖于它)将生成的Excel文件保存到用户的设备上。

请注意,file-saver库是exceljs的依赖,所以你不需要单独安装它。

现在,当用户点击“下载为Excel”按钮时,表格数据将被下载为一个名为“测试.xlsx”的Excel文件到用户的默认下载位置,而不是直接到桌面。由于浏览器的安全限制,网页应用无法直接将文件保存到用户的桌面,但可以保存到默认的下载文件夹中。用户可以从那里手动将文件移动到桌面。

二、报错

[plugin:vite:import-analysis] Failed to resolve import "file-saver" from "src\utils\xiMuBiao.tsx". Does the file exist?
D:/Code/propo-assistant-app/src/utils/xiMuBiao.tsx:3:23
16 |  }
17 |  import { Table } from "antd";
18 |  import { saveAs } from "file-saver";|                          ^
19 |  import ExcelJS from "exceljs";
20 |  const XiMuBiao = () => {

错误信息显示,Vite无法解析file-saver模块的导入。是因为你没有正确地安装或导入file-saver库。

错误信息:

[plugin:vite:import-analysis] Failed to resolve import "file-saver" from "src\utils\xiMuBiao.tsx". Does the file exist?
D:/Code/propo-assistant-app/src/utils/xiMuBiao.tsx:3:23
16 |  }
17 |  import { Table } from "antd";
18 |  import { saveAs } from "file-saver";|                          ^
19 |  import ExcelJS from "exceljs";
20 |  const XiMuBiao = () => {

错误原因:

  1. file-saver库没有被正确安装。

  2. file-saver库的导入路径可能不正确。
    解决方案:

  3. 确保你已经安装了file-saver库。你可以使用以下命令来安装它:

    npm install file-saver
    
  4. 在你的代码中,确保file-saver库是以正确的方式导入的。file-saver库的默认导出是saveAs函数,你应该这样导入它:

    import { saveAs } from 'file-saver';
    
  5. 如果你在xiMuBiao.tsx文件中使用了saveAs函数,确保这个文件位于正确的路径下,并且导入语句正确。
    修改后的xiMuBiao.tsx文件应该看起来像这样:

import React from 'react';
import { Table, TableColumnsType, TableProps } from 'antd';
import { saveAs } from 'file-saver'; // 确保这样导入
import ExcelJS from 'exceljs';
// ... (其他代码)
const downloadExcel = async () => {// ... (下载Excel的逻辑)
};
// ... (其他代码)
return (<div><Table columns={columns} dataSource={data} onChange={onChange} /><button onClick={downloadExcel} style={{ position: 'absolute', right: 0, bottom: 0 }}>下载为Excel</button></div>
);

如果你已经安装了file-saver并且正确地导入了它,但是仍然遇到这个错误,那么可能需要重启你的开发服务器或者重新构建你的项目来使Vite重新解析模块。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/48800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot + Spring Cloud 入门

运行配置 java -jar spring-boot-config-0.0.1-SNAPSHOT.jar --spring.profiles.activetest --my1.age32 --debugtrue "D:\Program Files\Redis\redis-server.exe" D:\Program Files\Redis\redis.windows.conf "D:\Program Files\Redis\redis-cli.exe" &q…

Go语言 Import导入

本文主要介绍Go语言import导入使用时注意事项和功能实现示例。 目录 Import 创建功能文件夹 加法 减法 主函数 优化导入的包名 .引入方法 总结 Import 创建功能文件夹 做一个计算器来演示&#xff0c;首先创建test文件夹。 加法 在test文件夹中创建add文件夹&#xff…

《简历宝典》17 - 简历中“技术能力”,如何丰满且有层次,前端篇

这一节开始对技术能力模块做讲解&#xff0c;我们身边的这些互联网IT从业者们&#xff0c;前端开发、Java开发、软件测试又或者是其他职位的开发者们&#xff0c;技术能力这个模块是绕不过去的&#xff0c;从简历上看&#xff0c;这个模块体现了我们之前软件工作生涯中的技术功…

大厂面试-基本功

大厂面试第4季 服务可用性多少个9是什么意思遍历集合add或remove操作bughashcode冲突案例BigdecimalList去重复IDEA Debugger测试框架ThreaLocal父子线程数据同步 InheritableThreadLocal完美解决线程数据同步方案 TransmittableThreadLocal 服务可用性多少个9是什么意思 遍历集…

【C++高阶】哈希函数底层原理探索:从算法设计到实现优化

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;模拟实现 map与set &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀哈希 &#x1f4da;1. unord…

(ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类

文章目录 Robust deep alignment network with remote sensing knowledge graph for zero-shot and generalized zero-shot remote sensing image scene classification相关资料摘要引言遥感知识图谱的表示学习遥感知识图谱的构建实体和关系的语义表示学习创建遥感场景类别的语…

ts踩坑!vue3中ts文件用export导出公共方法的ts类型定义

当我们有一个ts文件&#xff0c;定义并export出该function&#xff0c;其中方法里边有定义的变量&#xff0c;方法、钩子函数等多种&#xff0c;并最终return出该变量、方法。 此时 ts规则校验会让我们返回该函数类型。如下 export default function () {const chart ref();c…

Java基础-序列化、泛型、1.8新特性、其他

目录 序列化 什么是序列化&#xff1f;什么是反序列化&#xff1f; Serializable 接口有什么用&#xff1f; serialVersionUID 又有什么用&#xff1f; Java 序列化不包含静态变量吗&#xff1f; 如果有些变量不想序列化&#xff0c;怎么办&#xff1f; 说说有几种序列化…

Yolo-World网络模型结构及原理分析(一)——YOLO检测器

文章目录 概要一、整体架构分析二、详细结构分析YOLO检测器1. Backbone2. Head3.各模块的过程和作用Conv卷积模块C2F模块BottleNeck模块SPPF模块Upsampling模块Concat模块 概要 尽管YOLO&#xff08;You Only Look Once&#xff09;系列的对象检测器在效率和实用性方面表现出色…

计网:物理层

写在开头&#xff1a;物理层就负责传送比特0和1&#xff0c; 本质上理解物理层就是理解传输介质哪个表示比特0和1&#xff0c;如&#xff1a;高电平表示1、低电平表示0等 物理层主要任务&#xff1a; 机械特性&#xff1a;指明接口所用接线器的形状和尺寸、引脚数目和排列、固…

【BUG】已解决:requests.exceptions.ProxyError: HTTPSConnectionPool

已解决&#xff1a;requests.exceptions.ProxyError: HTTPSConnectionPool 目录 已解决&#xff1a;requests.exceptions.ProxyError: HTTPSConnectionPool 【常见模块错误】 原因分析 解决方案 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&am…

Android Studio 输出信息出现乱码

现象 解决办法 一、第一步 二、第二步 添加如下代码&#xff1a; 直接复制进去即可 -Dfile.encodingUTF-8 注意 &#xff1a;最后&#xff0c;添加后重新编译工程&#xff0c;如果还是发现乱码&#xff0c;则需要关闭Android Studio重新启即可

Spring Security之安全异常处理

前言 在我们的安全框架中&#xff0c;不管是什么框架&#xff08;包括通过过滤器自定义&#xff09;都需要处理涉及安全相关的异常&#xff0c;例如&#xff1a;登录失败要跳转到登录页&#xff0c;访问权限不足要返回页面亦或是json。接下来&#xff0c;我们就看看Spring Sec…

Docker核心技术:容器技术要解决哪些问题

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Docker核心技术 系列文章&#xff1a;容器技术要解决哪些问题&#xff0c;其他文章快捷链接如下&#xff1a; 应用架构演进容器技术要解决哪些问题&#xff08;本文&#xff09;Docker的基本使用Docker是如何实…

【AI大模型】生成式AI的未来——CHAT还是AGENT?

【AI大模型】CHAt还是AGENt&#xff1f; 最近&#xff0c;许多人工智能公司或者部门都在针对Agent——人工智能体有所动作。 例如&#xff1a; 文心一言智能体 Gnomic智能体 英伟达视觉AI代理 那么人工智能概念中的智能体Agent到底是什么呢&#xff1f;它又为何会突然在人工智…

虚拟化环境中如何实现以业务为中心的网络隔离?Everoute 推出虚拟专有云网络(VPC)功能

目前&#xff0c;不少企业都利用云计算和虚拟化技术提升 IT 系统灵活性、敏捷性和成本效益。然而&#xff0c;云环境的“多租户”特性也为业务安全带来了新的挑战&#xff0c;如何保障不同业务主体或租户之间的数据安全和网络隔离&#xff0c;成为企业关注的焦点。 作为 Smart…

可控硅触发板选型指南

可控硅触发板(SCR Trigger Board)是一种用于触发和控制可控硅(SCR)导通的电子设备。在电力控制、电机驱动、变频调速等领域中&#xff0c;可控硅触发板发挥着至关重要的作用。它通过精确的触发信号&#xff0c;实现对可控硅的启动和控制&#xff0c;从而实现对电路的开关和电流…

【ROS2】高级:安全-理解安全密钥库

目标&#xff1a;探索位于 ROS 2 安全密钥库中的文件。 教程级别&#xff1a;高级 时间&#xff1a;15 分钟 内容 背景安全工件位置 公钥材料 私钥材料域治理政策 安全飞地 参加测验&#xff01; 背景 在继续之前&#xff0c;请确保您已完成设置安全教程。 sros2 包可以用来创…

昇思25天学习打卡营第25天 | RNN实现情感分类

学习心得&#xff1a;RNN实现情感分类 在自然语言处理&#xff08;NLP&#xff09;的领域中&#xff0c;情感分类是一个极具挑战性的任务&#xff0c;它要求模型能够准确地从文本中识别出情感倾向。通过使用MindSpore框架和RNN模型进行情感分类&#xff0c;我获得了许多有关构…

如何理解String的不可变性

一、缓存角度 在Java中对于字符串的处理&#xff0c;是利用字符串池去存储Java中的字符串&#xff0c;在字符串池中&#xff0c;俩个内容相同的字符串变量&#xff0c;可以从池中指向同一个对象&#xff0c;这样就节省了空间资源。 public class Main {public static void ma…