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

目录

中文教程:https://github.com/rockboom/SheetJS-docs-zh-CN/

英文详解:https://www.npmjs.com/package/xlsx

安装引用

bash 复制代码
npm install xlsx
javascript 复制代码
import * as XLSX from "xlsx";

导出文件

javascript 复制代码
  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字符宽,导出结果较为美观

javascript 复制代码
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 的"最大数字宽度"单位,总是整数

设置行

javascript 复制代码
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"]

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

单元格范围------设置数字类型

通过行号列号获取:worksheet[XLSX.utils.encode_cell({ r: R, c: C })]

javascript 复制代码
  // 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";
    }
  }
相关推荐
灵感__idea2 小时前
Hello 算法:贪心的世界
前端·javascript·算法
killerbasd5 小时前
牧苏苏传 我不装了 4/7
前端·javascript·vue.js
橘子编程6 小时前
JavaScript与TypeScript终极指南
javascript·ubuntu·typescript
叫我一声阿雷吧7 小时前
JS 入门通关手册(45):浏览器渲染原理与重绘重排(性能优化核心,面试必考
javascript·前端面试·前端性能优化·浏览器渲染·浏览器渲染原理,重排重绘·reflow·repaint
大家的林语冰7 小时前
《前端周刊》尤大开源 Vite+ 全家桶,前端工业革命启动;尤大爆料 Void 云服务新产品,Vite 进军全栈开发;ECMA 源码映射规范......
前端·javascript·vue.js
jiayong237 小时前
第 8 课:开始引入组合式函数
前端·javascript·学习
天若有情6738 小时前
【C++原创开源】formort.h:一行头文件,实现比JS模板字符串更爽的链式拼接+响应式变量
开发语言·javascript·c++·git·github·开源项目·模版字符串
yuki_uix9 小时前
重排、重绘与合成——浏览器渲染性能的底层逻辑
前端·javascript·面试
止观止9 小时前
拥抱 ESNext:从 TC39 提案到生产环境中的现代 JS
开发语言·javascript·ecmascript·esnext
时寒的笔记9 小时前
js逆向7_案例惠nong网
android·开发语言·javascript