There may be times when you want to lock your Excel worksheet so that end users cannot edit or manipulate the data in a worksheet. You can implement worksheet protection using ExcelWriter by calling the method Worksheet.Protect().
Worksheet protection is meant to lock data for the purpose of presentation only. Worksheet protection should not be confused with encryption, and it should not be used to hide or protect sensitive data. When worksheet protection is activated, users can see the worksheet and all the data within it, but will be prevented from altering the content or formatting the cells.
Encryption can be performed on the workbook level, as shown below:
//--- To encrypt a workbook, use the Workbook.EncryptPassword property: ExcelApplication xlw = new ExcelApplication(); Workbook wb = xlw.Create(); wb.EncryptPassword = "myPassword"; xlw.Save(wb, outPath);
Using ExcelWriter, there are two ways to write-protect worksheets in your workbook:
Create a workbook in Microsoft Excel, click the Review tab, and select Protect sheet. Next, select the password you want to protect with and the properties you would like to set and click OK. Then, open the spreadsheet with ExcelWriter script, using either ExcelTemplate or ExcelApplication.Open. ExcelWriter will preserve all existing spreadsheet settings, including worksheet protection.
Use the method Worksheet.Protect to active worksheet protection. Pass the method a password for unlocking the worksheet in Excel. Pass "" or nullto protect the worksheet without a password.
ExcelApplication xla = new ExcelApplication(); Workbook wb = xla.Create(); Worksheet ws = wb.Worksheet; ws.Protect("MyPassword");
To remove worksheet protection in Microsoft Excel,
To remove worksheet protection with ExcelWriter, call Worksheet.Unprotect:
When you activate worksheet protection, all of the cells in the worksheet will be locked by default. However, you can unlock cells within a protected worksheet, allowing the user to fill in or modify some fields.
To unlock cells in Microsoft Excel:
With ExcelWriter, you can unlock cells by setting Style.CellLocked to false and applying the style to an individual cell. The following example protects all cells except for A1 and B1:
ExcelApplication xla = new ExcelApplication(); Workbook wb = xla.Create(); Worksheet ws = wb.Worksheet; //--- Turn on worksheet protection. ws.Protect("MyPassword"); //--- Create an "unlocked" style. Style unlockedStyle = wb.CreateStyle(); unlockedStyle.CellLocked = false; //--- Apply the style. ws.Cells["A1"].Style = unlockedStyle; ws.Cells["B1"].Style = unlockedStyle;