前端如何实现Echarts或者Table数据CSV文件导出? 使用papaparse就可以

利用React-papaparse实现纯前端CSV导出

今天遇到了一个需求是将页面中图表的信息导出成 CSV类似这样: 当然Table的数据也可以导出CSV,图表也好,Table也好,其本质都是数据驱动,我们只要把数据处理成CSV导出的格式就好了。

在 github 逛了一下,发现 papaParse 这个库比较适合做,于是我们便使用 react-papaparse 来实现一个 CSV 导出吧,这个库已经封装的很好了,使用是比较简单的。

react-papaparse :react-papaparse.js.org/

具体效果你也可以访问这里查看:stackblitz.com/edit/vitejs...

我们主要使用其中的 CSVDownloader,都是 hooks 写法,一个 use 即可,代码如下:

这里我们就使用了一份模拟数据,你只需要根据你的数据把其转换成对应的数据结构就可以了。

  1. 首先,我们准备一份数据,是一个对象数组, key 就是表头,value 就是值
  2. 然后我们使用 useCSVDownloader 导出CSVDownloader 和 Type
  3. CSVDownloader作为父组件,为 data 属性传入数据,设置 Type.Link 链接模式,不然是一个 Button,这样我们才可以自定义按钮的样式;然后还要设置 bom={true} config={{delimiter: ',' }}
  4. 子元素就是你要的样式啦,注意点击事件不是在 Button 上的,而是在CSVDownloader 上,所以不用为 Button 设置点击事件哈。
ini 复制代码
import { Button, Tooltip } from 'antd';
import { useCSVDownloader } from 'react-papaparse';
import { DownloadOutlined } from '@ant-design/icons';
import MyCard from '../common/Card';

export default function DemoCSVDownload() {
  const fileTitle = 'CSV导出文件';
  const { CSVDownloader, Type } = useCSVDownloader();
  const transData = [
    {
      'Column 1': '1-1',
      'Column 2': '1-2',
      'Column 3': '1-3',
      'Column 4': '1-4',
    },
    {
      'Column 1': '2-1',
      'Column 2': '2-2',
      'Column 3': '2-3',
      'Column 4': '2-4',
    },
    {
      'Column 1': '3-1',
      'Column 2': '3-2',
      'Column 3': '3-3',
      'Column 4': '3-4',
    },
    {
      'Column 1': 4,
      'Column 2': 5,
      'Column 3': 6,
      'Column 4': 7,
    },
  ];
  return (
    <MyCard>
      <CSVDownloader
        type={Type.Link}
        filename={fileTitle}
        bom={true}
        config={{
          delimiter: ',',
        }}
        data={transData}
      >
        <Tooltip title="导出CSV">
          <Button
            size="large"
            shape="circle"
            icon={<DownloadOutlined />}
            style={{ border: 'none' }}
          >
            导出
          </Button>
        </Tooltip>
      </CSVDownloader>
    </MyCard>
  );
}

Papaparse

这是在浏览器内最快的 CSV(或分隔文本)解析器。根据 RFC 4180,可靠且正确的。包括许多功能,例如直接解析 CSV 文件(本地或通过网络)、流式传输大文件(甚至通过 HTTP)、反向解析(将 JSON 转换为 CSV)等等。它在 GitHub 上有超过 10.8k 颗星。

GitHub:github.com/mholt/PapaP...

DEMO:www.papaparse.com/demo

相关推荐
2501_920931704 小时前
React Native鸿蒙跨平台采用ScrollView的horizontal属性实现横向滚动实现特色游戏轮播和分类导航
javascript·react native·react.js·游戏·ecmascript·harmonyos
0思必得06 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
摘星编程6 小时前
React Native鸿蒙版:Drawer抽屉导航实现
react native·react.js·harmonyos
东东5166 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino6 小时前
图片、文件的预览
前端·javascript
2501_920931708 小时前
React Native鸿蒙跨平台实现推箱子游戏,完成玩家移动与箱子推动,当所有箱子都被推到目标位置时,玩家获胜
javascript·react native·react.js·游戏·ecmascript·harmonyos
layman05288 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔8 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李8 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN8 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化