安装依赖

1 npm install xlsx --save

使用版本

封装js

  1. /* 导出excel文件 */
  2.  
  3. /**
  4. * 导出excel文件实现思路分析
  5. *
  6. * 1.通过XLSX插件的 XLSX.utils.book_new()方法,创建excel工作蒲对象wb。
  7. * 2.按需插入第一行数据,通过数组的unshift()方法。
  8. * 3.通过XLSX.utils.json_to_sheet(),创建excel表格对象ws。
  9. * 4.通过json_to_array(key,data),结合自定义的字段名key,和数据记录data,生成新数组。
  10. * 5.通过auto_width(),对ws和新生成的数组,自动计算各列col宽。
  11. * 6.通过XLSX.utils.book_append_sheet(),生成实际excel工作蒲,并使用XLSX.writeFile()生成excel文件。
  12. */
  13.  
  14. // 不能用!!!!!!真的坑,我是服了
  15. // import XLSX from 'xlsx'
  16.  
  17. import * as XLSX from 'xlsx'
  18.  
  19. // 自动计算col列宽
  20. function auto_width (ws, data) {
  21. /*set worksheet max width per col*/
  22. const colWidth = data.map(row => row.map(val => {
  23. /*if null/undefined*/
  24. if (val == null) {
  25. return { 'wch': 10 }
  26. }
  27. /*if chinese*/
  28. else if (val.toString().charCodeAt(0) > 255) {
  29. return { 'wch': val.toString().length * 2 }
  30. } else {
  31. return { 'wch': val.toString().length }
  32. }
  33. }))
  34. /*start in the first row*/
  35. let result = colWidth[0]
  36. for (let i = 1; i < colWidth.length; i++) {
  37. for (let j = 0; j < colWidth[i].length; j++) {
  38. if (result[j]['wch'] < colWidth[i][j]['wch']) {
  39. result[j]['wch'] = colWidth[i][j]['wch']
  40. }
  41. }
  42. }
  43. ws['!cols'] = result
  44. }
  45.  
  46. // 将json数据转换成数组
  47. function json_to_array (key, jsonData) {
  48. return jsonData.map(v => key.map(j => {
  49. return v[j]
  50. }))
  51. }
  52.  
  53. /**
  54. * @param header Object,表头
  55. * @param data Array,表体数据
  56. * @param key Array,字段名
  57. * @param title String,标题(会居中显示),即excel表格第一行
  58. * @param filename String,文件名
  59. * @param autoWidth Boolean,是否自动根据key自定义列宽度
  60. */
  61. export const exportJsonToExcel = ({
  62. header,
  63. data,
  64. key,
  65. title,
  66. filename,
  67. autoWidth
  68. }) => {
  69. const wb = XLSX.utils.book_new()
  70. if (header) {
  71. data.unshift(header)
  72. }
  73. if (title) {
  74. data.unshift(title)
  75. }
  76. const ws = XLSX.utils.json_to_sheet(data, {
  77. header: key,
  78. skipHeader: true
  79. })
  80. if (autoWidth) {
  81. const arr = json_to_array(key, data)
  82. auto_width(ws, arr)
  83. }
  84. XLSX.utils.book_append_sheet(wb, ws, filename)
  85. XLSX.writeFile(wb, filename + '.xlsx')
  86. }
  87. export default {
  88. exportJsonToExcel
  89. }

  template使用

  1. import { exportJsonToExcel } from "@/util/exportExcel.js";
  2.  
  3. const exExcel = () => {
  4. const tableField = [
  5. "userCode",
  6. "userName",
  7. "department",
  8. "major",
  9. "position",
  10. ],
  11. tableHeader = {
  12. userCode: "工号",
  13. userName: "姓名",
  14. department: "部门",
  15. major: "专业",
  16. position: "职位/职称",
  17. },
  18. tableTitle = "导出表格",
  19. templateData = [
  20. {
  21. userCode: "N1001",
  22. userName: "张三",
  23. department: "综合管理部",
  24. major: "计算机科学与技术",
  25. position: "项目经理",
  26. },
  27. ],
  28. obj = {
  29. header: tableHeader,
  30. data: templateData,
  31. key: tableField,
  32. title: "",
  33. filename: "团队成员导入模板",
  34. autoWidth: true,
  35. };
  36. exportJsonToExcel(obj);
  37. };

  

vite + vue3 + js + xlsx 导出excel的更多相关文章

  1. 【转】js 中导出excel 较长数字串会变为科学计数法

    [转]js 中导出excel 较长数字串会变成科学计数法 在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串 ...

  2. js前端导出excel:json形式的导出

    第一中形式的导出:主要是表头对应主体数据,json形式的导出 js库文件名称 : table2excel.js这个js库文件是网上找的,并且自己根据自己业务需求把内容改了一下复制到 table2exc ...

  3. React ant table 用 XLSX 导出excel文件

    近期做了一个react ant design 的table转换成excel 的功能 总结下 首先我们会自己定义下 antdesign 的table的columns其中有可能有多语言或者是render方 ...

  4. js前端导出excel

    此例子是利用html特性,纯前端导出excel,样式不好看,兼容主流浏览器. var tableid = jQuery(this).closest("div.tab-label-wrap&q ...

  5. js原生导出excel和csv

    ​ 严格意义来说并不是真正的excel文件,只是可以用excel打开查看而已,实际上的格式是逗号分隔文件即csv文件. 这里有几个坑要说一下: 不加Unicode的utf8头部标识excel打开文件会 ...

  6. js一键导出Excel

    HTML: 1 <div class="container"> 2 <table id="backViewTable" class=" ...

  7. js导入导出excel

    导入: <html xmlns="http://www.w3.org/1999/xhtml" > <head>      <title>Unti ...

  8. js 中导出excel 较长数字串会变成科学计数法

    在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串转换成 科学计数法.现在网上找到解决方案之一: (在数字串 ...

  9. js 中导出excel 较长数字串会变成科学计数法(转载)

    在做项目中,碰到如题的问题.比如要将居民的信息导出到excel中,居民的身份证号码因为长度过长(大于10位),excel会自动的将过长的数字串转换成 科学计数法.现在网上找到解决方案之一: (在数字串 ...

  10. js前端导出Excel表格后数字自动变成科学计数法问题

    一般的文件导出都是后端进行导出,最近一个项目遇到导出接口挂掉了,前端实现导出的情况. 背景是vue框架,iView组件.可以直接使用exportCsv方法进行导出. 导出时进行一下行和列的切割就可以了 ...

随机推荐

  1. Nginx 05 动静分离

    1 动静分离简介 为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源,如图片.js.css等文件,可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时, ...

  2. 树莓派裁剪通过Win32读出的img文件

    PiShrink 是 Github 上开源的树莓派压缩工具,通过裁剪上面用 Win32DiskImager 或者 dd 命令全卡备份的镜像,去掉没有内容的分区,从而减小备份镜像的大小. 先将全卡备份的 ...

  3. 硬件协议之i2c

    https://blog.csdn.net/ctyqy2015301200079/article/details/83830326  (此文章可能有误) 从目前来看,所有读写操作(包括ACK的读写)都 ...

  4. ctfhubweb-web前置技能-http协议

    HTTP协议 请求方式 看了一下嘤语提示,原来是要使用CTFHUB请求方式 burp抓包,修改一下就好 302 跳转 brup抓包,发送到repeater中,send一下就出来了 cookie 提示需 ...

  5. brew基本操作指南

    brew安装: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)&q ...

  6. [ARC107D] Number of Multisets

    \(\text{Solution}\) 学习到了一些 \(dp\) 的 \(trick\) 设 \(f_{i,j}\) 表示用了 \(i\) 的元素,当前和为 \(j\) 的方案数 \(dp\) 有两 ...

  7. 有理数四则运算 PTA1034

    题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805287624491008 本题要求编写程序,计算 2 个有理数的 ...

  8. 钓鱼攻击之:WEB 钓鱼

    郑重声明: 本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关.倡导维护网络安全人人有责,共同维护网络文明和谐. 钓鱼 ...

  9. 安装torch_scatter,torch-sparse,torch-cluster,torch-spline-conv,torch-geometric

    1. 查询torch版本号 进入https://pytorch-geometric.com/whl/ 找到对应的torch版本>>点击进入 2. 找到匹配的包 点击下载即可 3. 使用pi ...

  10. windows的lib与dll

    mingw编译出来的动态库的导入库可以直接在vc中直接使用 静态库 lib .a 动态库 dll动态库导入库 lib .dll.a 静态链接库a) 静态链接库的类和函数不需要导出,就能够被其他库调用. ...