美文网首页
SheetJS 笔记

SheetJS 笔记

作者: 欢欣的膜笛 | 来源:发表于2024-01-09 20:18 被阅读0次

用于前端操作Excel以及类似的二维表,js-xlsx是它的社区版本
文档地址:https://docs.sheetjs.com/https://github.com/rockboom/SheetJS-docs-zh-CN
安装
npm install xlsx --save

读取文件

read

  • XLSX.read(data, options)
  • 解析数据 data,options 为可选参数

readFile

  • XLSX.readFile(filename, options)
  • 读取指定的本地文件,仅适用于特定环境。它在浏览器中不起作用,options 为可选参数

写入文件

write

  • XLSX.write(wb, options)
  • 在基于浏览器的环境中,将尝试强制客户端下载
  • wb:工作簿对象
  • options:
    • type:输出数据编码
    • bookType: 导出文件的文件格式,若不传,则从文件扩展名推导出输出文件格式
    • sheet:单表格式的工作表名称
    • ......

writeFile

  • XLSX.writeFile(wb, filename, options)
  • 在基于浏览器的环境中,将尝试强制客户端下载

writeFileAsync

  • XLSX.writeFileAsync(filename, wb, options, cb)
  • 仅适用于 nodejs

writeFileSync

  • XLSX.writeFileSync(wb, filename, options)
  • 仅适用于 nodejs

utils Functions

Arrays of Data

aoa_to_sheet
  • 接受一个二维数组,并返回工作表,opts 为可选参数
  • const ws = XLSX.utils.aoa_to_sheet(aoe, opts)
sheet_add_aoa
  • 将数组中的数据添加到现有工作表
  • XLSX.utils.sheet_add_aoa(ws, aoa, opts)
/* Start from an empty worksheet */
const ws = XLSX.utils.aoa_to_sheet([[]]);
  
/* First row */
XLSX.utils.sheet_add_aoa(ws, [ "SheetJS".split("") ], {origin: "A1"});

/* Write data starting at A2 */
XLSX.utils.sheet_add_aoa(ws, [[1,2], [2,3], [3,4]], {origin: "A2"});

/* Write data starting at E2 */
// r: row; c: column
XLSX.utils.sheet_add_aoa(ws, [[5,6,7], [6,7,8], [7,8,9]], {origin:{r:1, c:4}});

/* Append row */
// 从第一列开始附加到工作表底部
XLSX.utils.sheet_add_aoa(ws, [[4,5,6,7,8,9,0]], {origin: -1});
json_to_sheet
  • 接受一个对象数组,并返回工作表,opts 为可选参数
  • const ws = XLSX.utils.json_to_sheet(aoo, opts)
  • opts
    • header:使用字段的顺序(默认 Object.keys)
    • skipHeader:默认 false,若为 true,则输出不含标题行
    • ......
const aoo = [
    { Name: "Bill Clinton", Index: 42 },
    { Name: "GeorgeW Bush", Index: 43 },
    { Name: "Barack Obama", Index: 44 },
    { Name: "Donald Trump", Index: 45 },
    { Name: "Joseph Biden", Index: 46 }
  ]
  const ws = XLSX.utils.json_to_sheet(aoo)
sheet_add_json
  • 将数组中的数据添加到现有工作表
  • XLSX.utils.sheet_add_json(ws, aoo, opts)
sheet_to_json
  • 输出对象数组
  • const arr = XLSX.utils.sheet_to_json(ws, opts)

HTML

sheet_to_html
  • 传入工作表,输出 HTML 表格
  • const html = XLSX.utils.sheet_to_html(ws, opts)
table_to_book、table_to_sheet
  • 从 TABLE 元素创建工作表或工作簿
const wb = XLSX.utils.table_to_book(document.getElementById('table'))
const ws = XLSX.utils.table_to_sheet(document.getElementById('table'))
sheet_add_dom
  • 将数据从 TABLE 元素添加到现有工作表
  • XLSX.utils.sheet_add_dom(ws, elt, opts)

CSV and Text

sheet_to_csv
  • 生成CSV文件
  • const csv = XLSX.utils.sheet_to_csv(ws, opts)
sheet_to_txt
  • 生成UTF16的格式化文本
  • const txt = XLSX.utils.sheet_to_txt(ws, opts)

Array of Formulae

sheet_to_formulae
  • 从工作表中提取所有公式
  • const fmla_arr = XLSX.utils.sheet_to_formulae(ws);

Workbook Helpers

book_new
  • 创建工作簿
  • const workbook = XLSX.utils.book_new()
book_append_sheet
  • 将工作表附加到工作簿
  • XLSX.utils.book_append_sheet(workbook, worksheet, sheet_name);

单元格操作

转换单元格地址

  • 单元格地址对象的存储格式为{c:C, r:R},其中C和R分别代表的是索引列和行号,均从 0 开始
const cell1 = XLSX.utils.encode_cell({c:0, r:0}) // 返回 A1
const cell2 = XLSX.utils.decode_cell('A1') // 返回 {c:0, r:0}

// 获取单元格对象
const cell = worksheet['A1'] // 含 数据类型、值、格式、公式、样式等等

转换行地址

  • encode_row / decode_row 在0索引行和1索引行之间转换
转换列地址
  • encode_col / decode_col 在0索引列和列名之间转换
const col1 = XLSX.utils.encode_col(3) // 返回 D
const col2 = XLSX.utils.decode_col('D') // 返回 索引 3

生成文本类型的单元格值

  • format_cell 生成文本类型的单元格值(使用数字格式)。
    转换单元格的范围
  • encode_range / decode_range

合并单元格

// s = start, r = row, c=col, e= end
worksheet.merge = [{ s: { r: 0, c: 0 }, e: { r: 0, c: c } }]

配置超链接

  • 超链接存储在单元格对象的l关键字内
worksheet['A3'].l = { Target:"http://sheetjs.com", Tooltip:"Find us @ SheetJS.com!" }
worksheet['A2'].l = { Target:"#E2" }; /* link to cell E2 */

单元格注释

  • 单元格注释存储在单元格对象的c数组内
if(!worksheet.A1.c) worksheet.A1.c = [];
worksheet.A1.c.push({a:"SheetJS", t:"This comment is visible"});

if(!worksheet.A2.c) worksheet.A2.c = [];
worksheet.A2.c.hidden = true;
worksheet.A2.c.push({a:"SheetJS", t:"This comment will be hidden"});

数据表对象

worksheet['!ref']

  • 表示数据表的范围。例如 "A1:D5"

worksheet['!margins']

  • 表示页面的边距

worksheet['!merges']

  • 设置的合并单元格配置,若未设置,则为 undefined

工作簿对象

workbook.SheetNames

  • 所有 sheet 的 name 的集合

workbook.Sheets[sheetname]

  • 返回一个表示工作表的对象

相关文章

网友评论

      本文标题:SheetJS 笔记

      本文链接:https://www.haomeiwen.com/subject/zseandtx.html