React导出Excel的实现方式是什么,csv与Excel啥区别
Admin 2022-08-11 群英技术资讯 1087 次浏览
这篇文章主要介绍“React导出Excel的实现方式是什么,csv与Excel啥区别”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React导出Excel的实现方式是什么,csv与Excel啥区别”文章能帮助大家解决问题。a 标签,就可以下载文件,但不巧的是,正好遇到后端请假,而且项目比较着急,那么前端是否可以实现呢?经过一顿搜索后,发现有这么几个 npm 库
从名字上看一个是导出 csv,一个是导出 excel,那么这 2 者有什么区别呢?
Excel 是一个电子表格,将文件保存为自己的专有格式,即 xls 或 xlsx,它保存有关工作簿中所有工作表的信息
CSV 代表 Comma Separated Values ,这是一个纯文本格式,用逗号分隔一系列值,但不包含格式,公式,宏等,扩展名为.csv 的分隔文本文件的格式
总结来说,Excel 不仅可以存储数据,还可以对数据进行操作,CSV 文件只是一个文本文件,它存储数据,它也被称为平面文件,任何用于解析 Excel 数据的编程语言库通常都会更大,更慢,更复杂,任何编程语言来解析 CSV 数据是微不足道的,生成它是非常容易的。
实现代码
import React from 'react';
import { CSVLink } from 'react-csv';
const headers = [
{ label: 'First Name', key: 'firstname' },
{ label: 'Last Name', key: 'lastname' },
{ label: 'Email', key: 'email' },
];
const data = [
{ firstname: 'Ahmed', lastname: 'Tomi', email: 'ah@smthing.co.com' },
{ firstname: 'Raed', lastname: 'Labes', email: 'rl@smthing.co.com' },
{ firstname: 'Yezzi', lastname: 'Min l3b', email: 'ymin@cocococo.com' },
];
export default function App() {
return (
<CSVLink data={data} headers={headers}>
Download me
</CSVLink>
);
}
react-csv 使用非常简单,只需要 npm 安装后就可以使用,使用 headers 字段可以指定表头。

xlsx 官网有数据导入、数据导出、数据处理等功能,非常强大,这里我们只处理数据到功能。
<table id="TableToExport">
<script src="https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js"></script>
<button id="sheetjsexport"><b>导出 XLSX</b></button>
document.getElementById("sheetjsexport").addEventListener('click', function() {
/*根据页面上的表格创建工作表 */
var wb = XLSX.utils.table_to_book(document.getElementById("TableToExport"));
/* 导出文件下载 */
XLSX.writeFile(wb, "SheetJSTable.xlsx");
});
function Table2XLSX(props) {
const xport = async () => {
const table = document.getElementById("Table2XLSX");
const wb = XLSX.utils.table_to_book(table);
XLSX.writeFile(wb, "SheetJSTable.xlsx");
};
return (<>
<table id="Table2XLSX"><tbody>
<tr><td colSpan="3">SheetJS Table Export</td></tr>
<tr><td>Author</td><td>ID</td><td>Note</td></tr>
<tr><td>SheetJS</td><td>7262</td><td>Hi!</td></tr>
<tr><td colSpan="3">
<a href="//sheetjs.com" rel="external nofollow" >Powered by SheetJS</a>
</td></tr>
</tbody></table>
<button onClick={xport}><b>Export XLSX!</b></button>
</>);
}
以上方法是将页面上的表格转为 excel,那么能否跟 react-csv 一样json 转 excel 呢?
/**
* 导出 excel 文件
* @param array JSON 数组
* @param sheetName 第一张表名
* @param fileName 文件名
*/
export function exportExcelFile(array=[], sheetName = 'sheet表', fileName = 'example.xlsx') {
const jsonWorkSheet = xlsx.utils.json_to_sheet(array);
const workBook = {
SheetNames: [sheetName],
Sheets: {
[sheetName]: jsonWorkSheet,
}
};
return xlsx.writeFile(workBook, fileName);
}
xlsx.utils.json_to_sheet 可以将 JSON 数据存储到 sheet 中,然后使用 xlsx.writeFile 写入文件并且下载。
<button
disabled={dataSource.length === 0}
onClick={() => exportExcelFile(dataSource)}
>
导出 Excel
</button>
如果你有多个 Sheet 要导出成一个 excel,就只能使用 xlsx,其实对于我们的项目需求,只有个表要导出使用 xlsx 和 csv 都可以,如果导出的数据需要给其他程序处理,建议使用 csv 格式,数据会比较好处理。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
当我们使用vuex的时候,时不时能看到“更改Vuex中的store中的状态唯一办法就是提交mutations”,但是有没有试想过,我们不提交mutations其实也能修改state的值?答案是可以的,下面通过本文介绍下vuex修改state值的方法,感兴趣的朋友一起看看吧
axios怎样实现请求封装及使用?通常,如果我们是做大型的项目,那么就需要使用到很多接口,而为了使用的方便,将接口封装起来很一个不错的方法,因此下面小编就能给大家分享axios的简单封装,需要的朋友可以参考。
这篇文章主要介绍了JS中的Map对象用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
目录引言设计原则1. 明确不同角色的职责2. 发挥代码的威力,而不是限制3. 各个层面的可扩展性4. 专注而不是发散Sunmao 的工作原理响应最新的状态组件间交互布局与样式类型安全在组件间复用代码可扩展的可视化编辑器保持开放引言尽管现在越来越多的人开始对低代码开发感兴趣,但已有低代码方案的一些局限性仍然让大家有所保留
滑块组件就是一个允许用户在有限区间内通过移动滑块来选择值的组件。滑块组件的应用是比较常见的,例如商品价格区间筛选,音量设置,滑块验证等等。这篇文章就给大家介绍一下用原生JS实现滑块组件,下面是实现效果,功能分析以及代码。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008