码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • react中预览excel表格


    查了很多资料,很多插件,有很多也用不了,最后试了xlsx这个插件,可以使用。

    话不多少了,直接放代码吧:

    1.代码实现

    1. fetch(API).then((res: any) => {
    2. res?.blob().then((r: any) => {
    3. const reader = new FileReader();
    4. //通过readAsArrayBuffer将blob转换为ArrayBuffer对
    5. reader.readAsArrayBuffer(r) // 这里的res.data是blob文件流
    6. reader.onload = (event: any) => {
    7. // 读取ArrayBuffer数据变成Uint8Array
    8. let data = new Uint8Array(event.target.result);
    9. // 这里的data里面的类型和后面的type类型要对应
    10. let workbook = XLSX.read(data, { type: "array" });
    11. set_work_book(workbook);
    12. let sheetNames = workbook.SheetNames; // 工作表名称
    13. set_sheet_names(sheetNames);
    14. set_select_sheet(sheetNames[0]);
    15. let worksheet = workbook.Sheets[sheetNames[0]];
    16. // var excelData = XLSX.utils.sheet_to_json(worksheet); //JSON
    17. let html = XLSX.utils.sheet_to_html(worksheet);
    18. document.getElementsByClassName('xlsxClass')[0].innerHTML = html
    19. };
    20. })
    21. })

    简单说一下,我的excel文件是后台返回的,拿到res之后,先转为blob格式,然后经过一系列的转义,最终拿到Unit8Array格式数据,通过插件XLSX的read方法,读出excel的数据,worksheet就是excel文件中具体每一行的数据:

     workbook.Sheets[sheetNames[0]]是用来访问工作簿中名为sheetNames[0](指的第一个)的工作表,XLSX.utils.sheet_to_html(worksheet)这个函数则是将工作表(worksheet)转换成HTML表格的形式,生成HTML代码,然后使用innerHTML将数据写到页面上即可。

    2,优化

    这种方法预览的数据没有边框,我们自己写一下样式即可:

    1. .xlsxClass {
    2. table {
    3. border: 1px solid #c9c9c9c9;
    4. td {
    5. border-left: 1px solid #c9c9c9c9;
    6. border-bottom: 1px solid #c9c9c9c9;
    7. padding: 10px;
    8. min-width: 120px;
    9. }
    10. }
    11. }

     然后还有一个问题,如果是多个表的话,需要将workbook存下来,首先把拿到的工作簿列表进行页面显示,然后点击的时候切换时再次执行:获取当前点击的工作簿以及转为html并显示的操作,替换掉名字就行了。

  • 相关阅读:
    取得高等学校教师资格证应当具备什么学历要求
    redis基本数据类型
    基于Opencv c++图像三维空间旋转(使用二维旋转、缩放进行代替的方式---思路转换)
    【云原生之Docker实战】Docker管理的ctop资源监控工具
    mac m1上安装centos8时遇到的docker 镜像问题 - 系统架构和docker镜像的关系
    电脑入门:电脑键位中英文对照表、电脑开始菜单运行里常用的命令
    Hadoop如何启动HttpFS服务?
    剑指 Offer II 042. 最近请求次数-队列法
    【Linux】(小白向)详解VirtualBox网络配置-配置Linux网络
    FastDFS基础学习(二)之安装FastDFS
  • 原文地址:https://blog.csdn.net/q553866469/article/details/133686461
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号