在具有多个工作表的 cfspreadsheet 中应用密码

apply password in cfspreadsheet with multiples sheets

如何保护两个sheet?目前代码只保护第一个 sheet.

var plan = spreadsheetNew("TEST", true);
SpreadsheetCreateSheet(plan , "TEST2" );
cfspreadsheet(
  action="write", fileName="temp.xslx", name="plan", 
  overwrite=true, sheetname="TEST", password="123"
);

我还测试了在 cfspreadsheet

中省略 sheet 名称
cfspreadsheet(action="write", fileName="temp.xslx", name="plan", overwrite=true, password="123");

更新(基于评论)

如果您希望能够更改所选 sheet,我会恢复到您的代码,然后使用内部 Java 库来设置密码。

plan = spreadsheetNew("TEST", true);
SpreadsheetCreateSheet(plan , "TEST2" );
workbookJavaObj = plan.getWorkBook();
workbookJavaObj.getSheetAt(0).protectSheet('123');
workbookJavaObj.getSheetAt(1).protectSheet('123');
spreadsheetSetActiveSheet(plan, "TEST2");
cfspreadsheet(
  action="write", fileName="temp.xlsx", name="plan", overwrite=true
);

冷熔解决方案

我认为应该这样做。创建一个新的 spreadsheet 对象并利用 action="update" 将 sheet 添加到之前写入的文件中。

plan = spreadsheetNew("TEST", true);
cfspreadsheet(action="write", fileName="temp.xlsx", name="plan", overwrite=true, sheetname="TEST", password="123");
plan2 = spreadsheetNew("TEST2", true);
cfspreadsheet(action="update", fileName="temp.xlsx", name="plan2", sheetname="TEST2", password="123");