当前位置: 首页 > news >正文

【SheetJS】【js-xlsx】【xlsx】js表格处理

目录

    • 安装引用
    • 导出文件
    • 设置列宽和行高
    • 设置单元格

中文教程:https://github.com/rockboom/SheetJS-docs-zh-CN/
英文详解:https://www.npmjs.com/package/xlsx

安装引用

npm install xlsx
import * as XLSX from "xlsx";

导出文件

  let title ="结果.xlsx"; //标题let aoa = [["序号", "工号", "姓名", "排序", "结果"]]; //表头// 每行数据tableData.forEach((item, index) => {aoa.push([index + 1,item.id,item.name,item.rank * 1,item.level,]);});let worksheet = XLSX.utils.aoa_to_sheet(aoa); // 工作表对象let workbook = XLSX.utils.book_new(); // 文件对象XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");XLSX.writeFile(workbook, title); // 导出文件

设置列宽和行高

设置列宽,可将数字算为1个字符宽,中文算为2字符宽,导出结果较为美观

worksheet["!cols"] = [{ wch: 10 }, { wch: 20 },...];

列属性,wpx、width、wch任选一个设置列宽即可

  • hidden ?: boolean ; // 如果为真,则隐藏列
  • wpx ?: number ; // 屏幕像素
  • width ?: number ; // Excel 的“最大数字宽度”中的宽度,width*256 是整数
  • wch ?: number ; // 字符宽度
  • level ?: number ; // 0 索引大纲/组级别
  • MDW ?: number ; // Excel 的“最大数字宽度”单位,总是整数

设置行

worksheet["!rows"] = [{...},...]

行属性 ,hpx、hpt任选一

  • hidden ?: boolean ; // 如果为真,则隐藏行
  • hpx ?: number ; // 屏幕像素高度
  • hpt ?: number ; // 高度
  • level ?: number ; // 0 索引大纲/组级别

设置单元格

单元格属性

  • v 原始值
  • w 格式化文本
  • t 类型: b布尔值, e错误, n数字, d日期, s文本, z存根
  • f 单元格公式
  • F 如果公式是数组公式,则封闭数组的范围
  • D 如果为真,则数组公式是动态的
  • r 富文本编码
  • h 富文本的 HTML 呈现(
  • c 与单元格相关的评论
  • z 与单元格关联的数字格式字符串
  • l 单元格超链接对象 ( .Target持有链接, .Tooltip是工具提示)
  • s 单元格的样式/主题。 ps: 从文件读取时默认不提取行和列属性,写入文件时默认不保留。 选项 cellStyles: true 必须传递给相关的读取或写入函数。

单个单元格——设置注释
直接获取:worksheet[“A1”]

	  worksheet["A1"].c = [{ a: "SheetJS", t: "注释内容" }];worksheet["A1"].c.hidden = true; // 隐藏注释

单元格范围——设置数字类型
通过行号列号获取:worksheet[XLSX.utils.encode_cell({ r: R, c: C })]

  // D2到E6范围let range = {s: { c: 3, r: 1 }, e: { c: 4, r: 5 },};for (let R = 0; R <= range.e.r; ++R) {for (let C = 0; C <= range.e.c; ++C) {let cell = worksheet[XLSX.utils.encode_cell({ r: R, c: C })];cell.t = "n";}}

相关文章:

  • Day10—SQL那些事(特殊场景的查询)
  • YOLO V1中关于bounding boxs的部分要点
  • Azure 机器学习 - 有关为 Azure 机器学习配置 Kubernetes 群集的参考
  • 云计算运维面试
  • 拍摄视频的时候相机断电导致视频文件损坏,怎么修复
  • 一文了解芯片测试项目和检测方法 -纳米软件
  • 图像二值化阈值调整——Triangle算法,Maxentropy方法
  • 粤嵌实训医疗项目--day06(Vue + SpringBoot)
  • 2023年云计算的发展趋势
  • 取暖器/暖风机上架 亚马逊美国站UL1278测试标准要求
  • activiti命令模式与责任链模式
  • DDoS攻击剧增,深入解析抗DDoS防护方案
  • 设计模式之模版方法(TemplateMethod)
  • Spring Boot 整合xxl-job实现分布式定时任务
  • STM32GPIO——上拉、下拉电阻
  • 78. Subsets
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • hadoop集群管理系统搭建规划说明
  • iOS编译提示和导航提示
  • jQuery(一)
  • Leetcode 27 Remove Element
  • Material Design
  • MySQL数据库运维之数据恢复
  • Mysql优化
  • PAT A1092
  • sublime配置文件
  • Unix命令
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • vue--为什么data属性必须是一个函数
  • WebSocket使用
  • 不上全站https的网站你们就等着被恶心死吧
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 算法之不定期更新(一)(2018-04-12)
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 系统认识JavaScript正则表达式
  • zabbix3.2监控linux磁盘IO
  • (2022 CVPR) Unbiased Teacher v2
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (LeetCode 49)Anagrams
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (动态规划)5. 最长回文子串 java解决
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)VC++中ondraw在什么时候调用的
  • (转)可以带来幸福的一本书
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • /etc/sudoer文件配置简析
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [Android Studio 权威教程]断点调试和高级调试
  • [BUG]vscode插件live server无法自动打开浏览器