操作excel的js工具库 - XLSX的使用方法

github地址:https://github.com/SheetJS/sh...

1. 引入

使用完整版,里面包含了所有模块
操作excel的js工具库 - XLSX的使用方法_第1张图片
我是将文件下载到本地,在项目中直接引用,也可以CND引用。

2. XLSX的常用功能

2.1 输入

//读取(本地或网络)文件,并创建一个工作薄
const workbook = XLSX.read(data, opts);
//创建一个新的工作簿
const workbook = XLSX.utils.book_new();

//将Array生成为sheet,其中包含基于对象键自动生成的“标题”。
//header 标题使用指定的字段顺序(默认 Object.keys)
//skipHeader 如果为true,则不会在输出中包含标题行
const worksheet = XLSX.utils.json_to_sheet(Array, {header, skipHeader: false});
//将Array生成为sheet
const worksheet = XLSX.utils.aoa_to_sheet(Array);
//接受一个表 DOM 元素并返回一个类似于输入表的工作表。
const worksheet = XLSX.utils.table_to_sheet(DOM)

//更新sheet,在对应位置进行覆盖
XLSX.utils.sheet_add_json(worksheet, Array, {header,skipHeader: true, origin: "A2"});
XLSX.utils.sheet_add_aoa(worksheet, Array, { origin: "A1" });
XLSX.utils.sheet_add_dom(worksheet, DOM, { origin: -1 });

//将sheet工作表添加到该工作薄中
XLSX.utils.book_append_sheet(workbook, worksheet, "sheet名称");
 
 

2.2 输出

//将sheet生成对应格式的数据
let svg = XLSX.utils.sheet_to_csv(worksheet)
let html = XLSX.utils.sheet_to_html(worksheet)
let json = XLSX.utils.sheet_to_json(worksheet)


//输出对应的数据编码,进行下载或上传
//workbook.SheetNames,workbook.Sheets 必传
let data = XLSX.write(workbook, opts);

3. 表格格式

3.1 workbook对象

操作excel的js工具库 - XLSX的使用方法_第2张图片

workbook.SheetNames 是工作表名称的有序列表
workbook.Sheets 是一个对象,其键是工作表名称,其值是工作表对象

3.2 worksheet工作表对象

操作excel的js工具库 - XLSX的使用方法_第3张图片

  • worksheet['!ref']:表示工作表范围的基于 A-1 的范围。 使用工作表的函数应使用此参数来确定范围。 分配在范围之外的单元格不会被处理。 特别是在手写工作表时,不包括范围之外的单元格。
  • worksheet['!merges']:对应于工作表中合并单元格的范围对象数组。 纯文本格式不支持合并单元格。 CSV 导出将写入合并范围内的所有单元格(如果存在),因此请确保仅设置范围内的第一个单元格(左上角)。
  • 单元格范围对象存储为 {s:S, e:E} 其中 S 是第一个单元格,E 是范围中的最后一个单元格。 单元格地址对象存储为 {c:C, r:R} 其中 C 和 R 分别是列号和行号,索引从0开始。 例如,单元格地址 A1 由对象 {c:0, r:0} 表示,范围 A3:B7 由对象 {s:{c:0, r:2}, e:{c:1, r:6}} 表示。
  • worksheet['!cols']:列属性对象的数组。 列宽实际上以标准化方式存储在文件中,以“最大数字宽度”(渲染数字 0-9 的最大宽度,以像素为单位)来衡量。 解析时,列对象将像素宽度存储在 wpx 字段中,将字符宽度存储在 wch 字段中,将最大数字宽度存储在 MDW 字段中。
  • 单元格对象 是以类似A1的形式展示的,排除包含!的。
  • worksheet['!rows']:行属性对象的数组,如文档后面所述。 每个行对象都对包括行高和可见性在内的属性进行编码。
//列属性
type  ColInfo  =  { 
  /* 可见性 */ 
  hidden ?: boolean ;  // 如果为真,则隐藏列 

  /* 列宽以下列方式之一指定: */ 
  wpx ?: number ;   // 屏幕像素 
  width ?: number ;   // Excel 的“最大数字宽度”中的宽度,width*256 是整数 
  wch ?: number ;   // 字符宽度 

  /* 用于保留文件特征的其他字段 */ 
  level ?: number ;   // 0 索引大纲/组级别 
  MDW ?: number ;   // Excel 的“最大数字宽度”单位,总是整数 
} ; 

//行属性 
type  RowInfo  =  { 
  /* 可见性 */ 
  hidden ?: boolean ;  // 如果为真,则隐藏行 

  /* 行高通过以下方式之一指定: */ 
  hpx ?: number ;   // 屏幕像素高度 
  hpt ?: number ;   // 高度(以点为 

  level ?: number ;   // 0 索引大纲/组级别 
} ; 

3.3 单元格对象

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

4. 参数

4.1 read和 readFile函数接受的选项参数

选项名称 默认 描述
type 输入数据编码(参见下面的输入类型)
raw false 如果为 true,纯文本解析将不会解析值 **
codepage 如果指定,请在适当时使用代码页 **
cellFormula true 将公式保存到 .f 字段
cellHTML true 解析富文本并将 HTML 保存到 .h场地
cellNF false 将数字格式字符串保存到 .z场地
cellStyles false 将样式/主题信息保存到 .s场地
cellText true 生成的格式化文本到 .w场地
cellDates false 将日期存储为类型 d(默认为 n)
dateNF 如果指定,请使用字符串作为日期代码 14 **
sheetStubs false 创建类型的单元格对象 z对于存根细胞
sheetRows 0 如果>0,则读取第一个 sheetRows行**
bookDeps false 如果为真,则解析计算链
bookFiles false 如果为 true,则将原始文件添加到 book 对象**
bookProps false 如果为真,则仅解析足以获取图书元数据**
bookSheets false 如果为真,则仅解析足以获取工作表名称
bookVBA false 如果为真,则将 VBA blob 复制到 vbaraw场地 **
password “” 如果已定义且文件已加密,请使用密码 **
WTF false 如果为真,则在意外的文件功能上抛出错误**
sheets 如果指定,则仅解析指定的工作表**
PRN false 如果为真,则允许解析 PRN 文件 **
xlfn false 如果属实,请保留 _xlfn.公式中的前缀**
FS DSV 字段分隔符覆盖

4.2 write和 writeFile函数接受的选项参数:

选项名称 默认 描述
type 输出数据编码(见下面的输出类型)
cellDates false 将日期存储为类型 d(默认为 n)
bookSST false 生成共享字符串表**
bookType "xlsx" 工作簿类型(有关支持的格式,请参见下文)
sheet "" 单张格式的工作表名称**
compression false 对基于 ZIP 的格式使用 ZIP 压缩**
Props 写入时覆盖工作簿属性**
themeXLSX 编写 XLSX/XLSB/XLSM 时覆盖主题 XML **
ignoreEC true 抑制“数字作为文本”错误**
numbers NUMBERS 导出的有效负载**

4.3 输入/输出类型

type 预期
"base64" string:文件的Base64编码
"binary" 字符串:二进制字符串(字节 n是 data.charCodeAt(n))
"string" string:JS字符串(字符解释为UTF8)
"buffer" 节点缓冲区
"array" 数组:8位无符号整数数组(字节 n是 data[n])
"file" 字符串:将被读取的文件路径(仅限 nodejs)

4.4 sheet_add_* 中的origin参数

origin 描述
(cell object) 使用指定单元格(单元格对象)
(string) 使用指定单元格(A1 样式单元格)
(number >= 0) 从指定行的第一列开始(0-indexed)
-1 从第一列开始附加到工作表的底部
(default) 从单元格 A1 开始

4.5 sheet_to_json函数的第二个参数对象

选项名称 默认 描述
raw true 使用原始值 (true) 或格式化字符串 (false)
range 来自 WS 覆盖范围(见下表)
header 控制输出格式(见下表)
dateNF FMT 14 在字符串输出中使用指定的日期格式
defval 使用指定值代替 null 或 undefined
blankrows ** 在输出中包含空行**
range 描述
(number) 使用工作表范围,但将起始行设置为值
(string) 使用指定范围(A1 样式的有界范围字符串)
(default) 使用工作表范围 ( worksheet['!ref'])
默认情况下, sheet_to_json 扫描第一行并将值用作标题。 使用 header: 1 选项,该函数导出一个值数组的数组。
header 描述
1 生成数组数组(“二维数组”)
"A" 行对象键是文字列标签
array of strings 使用指定的字符串作为行对象中的键
(default) 将第一行作为键读取并消除歧义

你可能感兴趣的:(前端javascript)