工作簿

工作表

工作表名称区分大小写。

按 Tab 键顺序列出工作表名称

  1. var wsnames = workbook.SheetNames;

工作簿对象的 SheetNames 属性是 “选项卡顺序” 中工作表名称的列表。API 函数将查看该数组。

按名称访问工作表

  1. var worksheet = workbook.Sheets[sheet_name];

工作簿对象的 Sheets 属性是一个对象,其键是工作表名称,其值是工作表对象。

访问第一个工作表

  1. var first_ws = workbook.Sheets[workbook.SheetNames[0]];

结合前面的示例,workbook.Sheets[workbook.SheetNames[0]] 是第一个工作表(如果工作簿中存在)。

就地替换工作表

  1. workbook.Sheets[sheet_name] = new_worksheet;

工作簿对象的 Sheets 属性是一个以名称为键、以工作表对象为值的对象。通过重新分配给 Sheets 对象的属性,可以更改工作表对象,而不会破坏工作表结构的其余部分。

将工作表附加到工作簿

  1. XLSX.utils.book_append_sheet(workbook, worksheet, sheet_name);

book_append_sheet 实用程序函数将工作表附加到工作簿。

将工作表附加到工作簿并找到唯一的名称

  1. var new_name = XLSX.utils.book_append_sheet(workbook, worksheet, name, true);

如果第四个参数是 true,该函数将尝试查找新的工作表名称,以防发生冲突。

示例

  1. var ws_name = "SheetJS";/* Create worksheet */var ws_data = [ [ "S", "h", "e", "e", "t", "J", "S" ], [ 1 , 2 , 3 , 4 , 5 ]];var ws = XLSX.utils.aoa_to_sheet(ws_data);/* Create workbook */var wb = XLSX.utils.book_new();/* Add the worksheet to the workbook */XLSX.utils.book_append_sheet(wb, ws, ws_name);/* Write to file */XLSX.writeFile(wb, "SheetJS.xlsx");

其他属性

添加定义的名称

  1. if(!workbook.Workbook) workbook.Workbook = {};if(!workbook.Workbook.Names) workbook.Workbook.Names = [];workbook.Workbook.Names.push({ Name: "SourceData", Ref: "Sheet1!$A$1:$D$12"});

这在 “定义名称” 中有更详细的描述。

设置工作簿属性

  1. if(!wb.Props) wb.Props = {};wb.Props["Company"] = "SheetJS LLC";

完整的属性名称集及其到 Excel UI 的映射包含在 “文件属性”

工作表

单元格

修改工作表中的单个单元格值

  1. XLSX.utils.sheet_add_aoa(worksheet, [[new_value]], { origin: address });

修改工作表中的多个单元格值

  1. XLSX.utils.sheet_add_aoa(worksheet, aoa, opts);

sheet_add_aoa 实用函数修改工作表中的单元格值。第一个参数是工作表对象。第二个参数是值数组的数组。第三个参数的 origin 键控制单元格的写入位置。以下代码片段设置 B3=1E5="abc"

  1. XLSX.utils.sheet_add_aoa(worksheet, [ [1], // <-- Write 1 to cell B3 , // <-- Do nothing in row 4 [/*B5*/, /*C5*/, /*D5*/, "abc"] // <-- Write "abc" to cell E5], { origin: "B3" });

“数组的数组输入” 更详细地描述了该函数和可选的 opts 参数。

示例

特殊原始值 -1 指示 sheet_add_aoa 从范围内最后一行之后的行的 A 列开始,附加数据:

  1. XLSX.utils.sheet_add_aoa(worksheet, [ ["first row after data", 1], ["second row after data", 2]], { origin: -1 });

其他属性

合并一组单元格

  1. if(!worksheet["!merges"]) worksheet["!merges"] = [];
  2. worksheet["!merges"].push(XLSX.utils.decode_range("A1:E1"));

工作表对象的 !merges 属性是 单元格范围 的列表。单元格的数据将从左上角的单元格中获取。

可以使用 decode_range 创建范围或手动指定范围:

  1. worksheet["!merges"].push({
  2. s: { r: 2, c: 1 }, // s ("start"): c = 1 r = 2 -> "B3"
  3. e: { r: 3, c: 4 } // e ("end"): c = 4 r = 3 -> "E4"
  4. });

此方法不验证两个合并范围是否相交。