Skip to content

Encrypt and Protect your workbook

Mats Alm edited this page Jan 30, 2024 · 13 revisions

EPPlus supports both setting protection and reading and writing encrypted packages.

Protection

Protection can be set both on the workbook and the worksheet level.
This example locks the window and the structure and sets a password.

package.workbook.Protection.LockWindows = true;
package.workbook.Protection.LockStructure = true;

//Set a password for the workbook protection
package.workbook.Protection.SetPassword("EPPlus");

Note that these settings don't encrypt the workbook. To do that you can set the IsEncrypted property:

    //Encrypts the package with the default password. The package will be encrypted but can be opened by Excel without a password.
    //The file can be opened by EPPlus by providing an empty string as password ("")
    package.Encryption.IsEncrypted = true;

Worksheets can also be protected by using the worksheets Protection property.
Here is an example of how you can lock cells in a worksheet:

sheet.Protection.AllowSelectLockedCells = false;
sheet.Protection.SetPassword("EPPlus");

sheet.Cells["A:XFD"].Style.Locked = true;          //Set Locked to true on all cells (this is the default state, so this is not needed on a newly add worksheet).
sheet.Cells["B3,C7,C9,C11"].Style.Locked = false;  //Unlock these cells

Encryption

To encrypt a workbook simply save the workbook with your password using the Save or SaveAs methods:

// Using the SaveAs method
using (ExcelPackage package = new ExcelPackage())
{
   var ws = package.Workbook.Worksheets.Add("MyWorksheet");
   ws.Cells["A1"].Value = "Secret Value";

   package.SaveAs(@"c:\MyEncryptedFile.xlsx", "MyP@ssw0rd!");
}
// Using the Save method
using (ExcelPackage package = new ExcelPackage(@"c:\MyEncryptedFile.xlsx"))
{
   var ws = package.Workbook.Worksheets.Add("MyWorksheet");
   ws.Cells["A1"].Value = "Secret Value";
   package.Save("MyP@ssw0rd!");
}

To read an encrypted package you should supply the password in the constructor:

using (ExcelPackage package = new ExcelPackage(@"c:\MyEncryptedFile.xlsx", "MyP@ssw0rd!"))
{
    Console.WriteLine(package.Workbook.Worksheets["MyWorksheet"].Cells["A1"]);
}

See also

Encryption and protection of your workbook is shown in Sample 8.1-C# or Sample 8.1-VB

EPPlus wiki

Versions

Worksheet & Ranges

Styling

Import/Export data

Formulas and filters

Charts & Drawing objects

Tables & Pivot Tables

VBA & Protection

Clone this wiki locally