• react项目导出数据doc格式及其他格式方法


    目录

    1.场景

    2.思路

    3.实现 

            第一步,准备数据,隐藏标签,绑定ref 

            第二步,通过模板字符串生成数据


    1.场景

    如下图所示,项目要求对页面中的数据下载到本地,并以某种类型展示,如Word、doc、html等。在这个项目中要求下载为doc文件和HTML文件,其实下载功能还是很简单的,关键的地方就是下载后的格式问题,比如doc其实就是表格或者文档的格式。

     

     

     


    2.思路

    我的思路是这样的,我会根据需求将需要导出的数据,在项目中找个地方以table、th表格标签的形式写,然后设置display:none,目的是不让多出来的结构影响到原本的页面,然后绑定ref,然后再通过模板字符串的形式,渲染出来。下面我是代码实例。


    3.实现 

    第一步,准备数据,隐藏标签,绑定ref 

    1. // 1.准备数据,要下载的数据,以表格的形式书写。
    2. <table style={{display: "none"}} className='table11_7 resultTable'>
    3. <tr>
    4. <th>序号th>
    5. <th>名称th>
    6. <th>是否存在漏洞th>
    7. {/* <th>开放情况th> */}
    8. tr>
    9. {list.map((ele, idx) => (
    10. <tr className='tr'>
    11. <td className='td td1'>{idx + 1}td>
    12. <td className='td td2'>{ele.data.Id}td>
    13. <td className='td td3'>{ele.data.status} td>
    14. {/* <td className='td td4'> td> */}
    15. tr>
    16. ))}
    17. table>

  •  

     第二步,通过模板字符串生成数据

    需要注意的是,如果不以table标签书写,下载后的doc文件很乱,html则没事,所以还是尽量用table标签去写。

    代码中的最后几行是下载功能,个人感觉是挺万金油的,可以根据需要下载为任意类型的文件

     以下代码实例为,点击按钮下载。

    1. <Button
    2. onClick={(e) => {
    3. let resHtml = `
    4. Document
    5. ${listRef.current.innerHTML}
  • ${listRef3.current.innerHTML}
  • `
  • var datastr = "data:text/html;charset=utf-8," + encodeURIComponent(resHtml)
  • var downloadAnchorNode = document.createElement("a")
  • downloadAnchorNode.setAttribute("href", datastr)
  • downloadAnchorNode.setAttribute(
  • "download",
  • `${localStorage.getItem("verboseNameRaw")}-${localStorage.getItem("isStart")}.html`
  • )
  • downloadAnchorNode.click()
  • downloadAnchorNode.remove()
  • }}
  • >
  • .HTML
  • Button>
  • 相关阅读:
    MySQL夺命连环15问,你能坚持到第几问?
    解决onebot提示当前QQ版本过低,请升级到最新版在登录!
    数据分析入门导读
    Java+SpringBoot+Vue+MySQL:农业管理新篇章
    9、Docker 安装 Redis
    SAP ABAP Gateway Client 里 OData 测试的 PUT, PATCH, MERGE 请求有什么区别
    2022/9/13总结
    成都精灵云复试完结篇
    单片机遥控开关系统设计(结构原理、电路、程序)
    内网资料传外网速度太慢怎么办,一招教你解决
  • 原文地址:https://blog.csdn.net/wanghaoyingand/article/details/126335876