You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

ExcelJS教程:如何设置Excel文件默认激活第一个工作表

解决ExcelJS默认激活第一个工作表的问题

嘿,我懂你遇到的麻烦了——用ExcelJS生成多工作表的Excel文件时,打开总是默认跳到最后一个工作表,而你想让第一个工作表(Farmer)成为默认激活的那个。

看你的代码,问题就出在workbook.views的配置里:你把activeTab设成了1,但ExcelJS里工作表的索引是从0开始计数的,第一个工作表(Farmer)对应的索引是0,第二个工作表(Family)才是1。

修改后的代码片段

activeTab的值改成0就能解决这个问题,我还顺便补全了你代码里漏掉的闭合括号:

let workbook = new Excel.Workbook();
workbook.creator = 'PT. ABCDE';
workbook.lastModifiedBy = 'PT. ABCDE';
workbook.created = new Date();
workbook.modified = new Date();
workbook.lastPrinted = new Date();
workbook.properties.date1904 = true;

let worksheetFarmer = workbook.addWorksheet('Farmer');
dataFarmer.forEach(function(item, index) { worksheetFarmer.addRow(item); });
let worksheetFamily = workbook.addWorksheet('Family');
dataFamily.forEach(function(item, index) { worksheetFamily.addRow(item); });

workbook.views = [
  { 
    x: 0, 
    y: 0, 
    width: 10000, 
    height: 20000, 
    firstSheet: 0, // 控制标签栏显示的第一个工作表,你的设置是对的
    activeTab: 0, // 修改为0,激活第一个工作表
    visibility: 'visible' 
  }
];

const PathFilename = config.get('palmWritePath')+ExcelName+'.xlsx';
workbook.xlsx.writeFile(PathFilename).then(function() {
  const returnJson = { success: true, message: "Excel exported", filename: ExcelName+'.xlsx' };
  res.json(returnJson);
  res.end();
  console.log('File write done');
});

小知识点补充

  • firstSheet:控制Excel底部标签栏显示的起始位置,不会改变激活状态
  • activeTab:决定打开文件时默认激活的工作表,索引严格对应你添加工作表的顺序(第一个addWorksheet的表是索引0,第二个是1,以此类推)

内容的提问来源于stack exchange,提问作者Nikolius Lau

火山引擎 最新活动