Home > Back-end >  apply password in cfspreadsheet with multiples sheets
apply password in cfspreadsheet with multiples sheets

Time:04-07

how to protect the two sheets? currently the code only protects the first sheet.

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

I also tested omitting the sheet name in cfspreadsheet

cfspreadsheet(action="write", fileName="temp.xslx", name="plan", overwrite=true, password="123");

CodePudding user response:

UPDATE(based on comments)

If you want to be able to change selected sheet I would revert back to your code and then use the internal Java libraries to set passwords.

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
);

Coldfusion solution

I think this is how it should be done. Create a new spreadsheet object and utilize the action="update" to add that sheet in to the file which was written earlier.

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");
  • Related