React导出Excel的实现方式是什么,csv与Excel啥区别
Admin 2022-08-11 群英技术资讯 396 次浏览
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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本篇文章给大家带来了关于javascript的相关知识,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler),下面一起来看一下JavaScript webpack5配置及使用基本介绍,希望对大家有帮助。
用原生JavaScript如何实现换肤效果?在前端开发中,换肤效果也是比较常遇到需求,例如一些导航网站就有网页换肤功能。而要实现js换肤的原理其实很简答,就是用JS切换到对应的CSS样式表文件就可以实现了。下面是用原生JS现实的简单换肤效果,供大家参考。
这篇文章给大家分享的是JS改变元素宽高的方法。这里使用到的是setAttribute() ,能用于添加指定的属性,并为其赋指定的值,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
这篇文章主要给大家介绍了关于Nest.js散列与加密的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
这篇文章主要介绍了JS解决 Array.fill()参数为对象指向同一个引用地址问题,解决方案使用map返回出不同的引用的地址,fill参数可随意填写(不为空),主要是map函数中返回的数据,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008