Today, Microsoft Excel has become an increasingly popular tool for storing and processing data. It is quite common for some Excel files to contain sensitive or confidential information. When sending these files to others over the internet, there is a risk of exposing the information to unauthorized individuals, which could result in data breaches, privacy violations, or other security incidents. Protecting these files with passwords is a simple yet effective solution to this problem. In addition to password protection, Microsoft Excel also offers users many other ways to protect Excel files. This article will introduce 8 ways to protect Excel files using Java.

We will discuss the following topics:

Add Dependencies

To implement protection on Excel files, this article uses Spire.XLS for Java library. Depending on the type of your project, there are two methods to include Spire.XLS for Java:

Method 1: If you are using maven, you can easily import the JAR file of Spire.XLS for Java into your application by adding the following code to your project's pom.xml file.

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>13.4.1</version>
    </dependency>
</dependencies>

Method 2: If you are not using maven, you can get Spire.XLS for Java from its official website, extract the zip file, then import the Spire.Xls.jar file under the lib folder into your project as a dependency.

Protect an Excel Workbook with a Document-Open Password in Java

Protecting an Excel file with a document-open password can effectively prevent unauthorized users from viewing the information in the file. Whenever someone attempts to open the file, Excel will request a password beforehand.

The following steps demonstrate how to protect an Excel workbook with a password:

import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;

public class ProtectWorkbookWithOpenPassword {
    public static void main(String[] args) {
        //Initialize an instance of the Workbook class
        Workbook workbook = new Workbook();
        //Load an Excel workbook
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Website budget.xlsx");

        //Protect the workbook with a document-open password
        workbook.protect("123456");

        //Save the workbook to another Excel file
        workbook.saveToFile("ProtectWorkbook.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

Protect Excel Files in Java

Protect an Excel workbook with a Document-Modify Password in Java

You can enable users to view an Excel file but only grant permissions to specific people to modify the file by protecting it with a document-modify password. When someone opens the protected file, Excel will require a password for write access. If he doesn’t have a password, he can open it as read-only.

The following steps demonstrate how to protect an Excel workbook with a document-modify password:

import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;

public class ProtectWorkbookWithModifyPassword {
    public static void main(String[] args) {
        //Initialize an instance of the Workbook class
        Workbook workbook = new Workbook();
        //Load an Excel workbook
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Website budget.xlsx");

        //Protect the workbook with a document-modify password
        workbook.setWriteProtectionPassword("123456");

        //Save the workbook to another Excel file
        workbook.saveToFile("ProtectWorkbookWithModifyPassword.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

Protect Excel Files in Java

Protect an Excel Worksheet in Java

If you just want other users to view the data in an Excel worksheet without being able to change them, you can protect the worksheet with a password to make it non-editable.

The following steps demonstrate how to protect an Excel worksheet with a password:

import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class ProtectWorksheet {
    public static void main(String[] args) {
        //Initialize an instance of the Workbook class
        Workbook workbook = new Workbook();
        //Load an Excel workbook
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Website budget.xlsx");

        //Get a specific worksheet by its index
        Worksheet worksheet = workbook.getWorksheets().get(0);

        //Protect the worksheet with a password
        worksheet.protect("123456");

        //Save the workbook to another Excel file
        workbook.saveToFile("ProtectWorksheet.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

Protect Excel Files in Java

Protect an Excel Worksheet with Specific Permissions in Java

In addition to making worksheets non-editable, you can also control what types of changes people can make on protected worksheets. To achieve this feature, you need to specify the sheet protection type when protecting worksheets.

The following steps demonstrate how to protect an Excel worksheet with specific protection type(s):

import com.spire.xls.*;

import java.util.EnumSet;

public class ProtectWorksheetWithSpecificPermissions {
    public static void main(String[] args) {
        //Initialize an instance of the Workbook class
        Workbook workbook = new Workbook();
        //Load an Excel workbook
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Website budget.xlsx");

        //Get a specific worksheet by its index
        Worksheet worksheet = workbook.getWorksheets().get(0);

        //Protect the worksheet with specific protection types (select locked and unlocked cells)
        worksheet.protect("123456", EnumSet.of(SheetProtectionType.LockedCells, SheetProtectionType.UnLockedCells));

        //Save the workbook to another Excel file
        workbook.saveToFile("ProtectWorksheetWithProtectionType.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

Protect Excel Files in Java

Protect a Worksheet while Allowing Certain Cell Ranges to be Edited in Java

If you wish to allow editing in certain cell ranges in an Excel worksheet while keeping the rest of the cells non-editable, you can specify the editable cell ranges before protecting the worksheet.

The following steps demonstrate how to protect a worksheet while allowing certain cell ranges to be edited:

import com.spire.xls.ExcelVersion;
import com.spire.xls.SheetProtectionType;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

import java.util.EnumSet;

public class ProtectWorksheetWhileAllowEditingRanges {
    public static void main(String[] args) {
        //Initialize an instance of the Workbook class
        Workbook workbook = new Workbook();
        //Load an Excel workbook
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Website budget.xlsx");

        //Get a specific worksheet by its index
        Worksheet worksheet = workbook.getWorksheets().get(0);

        //Specify the editable cell range
        worksheet.addAllowEditRange("Editable Range", worksheet.getCellRange("B6:C8"));

        //Protect the worksheet with a password
        worksheet.protect("123456", EnumSet.of(SheetProtectionType.All));

        //Save the workbook to another Excel file
        workbook.saveToFile("AllowEditingRanges.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

Protect Excel Files in Java

Lock Specific Cells in an Excel Worksheet in Java

Cell locking is helpful in situations where you need to prevent changes to critical data in certain cells while still allowing users to input or edit information in the rest of the cells in a worksheet.

The following steps demonstrate how to lock specific cells in a worksheet:

import com.spire.xls.*;

import java.util.EnumSet;

public class LockCells {
    public static void main(String[] args) {
        //Initialize an instance of the Workbook class
        Workbook workbook = new Workbook();
        //Load an Excel workbook
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Website budget.xlsx");

        //Get a specific worksheet by its index
        Worksheet worksheet = workbook.getWorksheets().get(0);

        //Unlock all cells in the used range of the worksheet
        CellRange usedRange = worksheet.getRange();
        usedRange.getStyle().setLocked(false);

        //Lock specific cells
        CellRange cells = worksheet.getCellRange("B6:C8");
        cells.getStyle().setLocked(true);

        //Protect the worksheet with a password
        worksheet.protect("123456", EnumSet.of(SheetProtectionType.All));

        //Save the workbook to another Excel file
        workbook.saveToFile("LockCells.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

Protect Excel Files in Java

Lock Specific Rows and Columns in an Excel Worksheet in Java

In addition to locking certain cells, you are also able to lock specific rows and columns.

The following steps demonstrate how to lock a specific row and column:

import com.spire.xls.*;

import java.util.EnumSet;

public class LockRowsAndColumns {
    public static void main(String[] args) {
        //Initialize an instance of the Workbook class
        Workbook workbook = new Workbook();
        //Load an Excel workbook
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Website budget.xlsx");

        //Get a specific worksheet by its index
        Worksheet worksheet = workbook.getWorksheets().get(0);

        //Unlock all cells in the used range of the worksheet
        CellRange usedRange = worksheet.getRange();
        usedRange.getStyle().setLocked(false);

        //Lock the second row and column
        worksheet.getRows()[1].getStyle().setLocked(true);
        worksheet.getColumns()[1].getStyle().setLocked(true);

        //Protect the worksheet with a password
        worksheet.protect("123456", EnumSet.of(SheetProtectionType.All));

        //Save the workbook to another Excel file
        workbook.saveToFile("LockRowsAndColumns.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

Protect Excel Files in Java

Protect an Excel Workbook with Digital Signature in Java

Adding a digital signature is an effective way to ensure the authenticity and integrity of an Excel file.

The following steps demonstrate how to add a digital signature to an Excel file:

import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.digital.CertificateAndPrivateKey;

import java.util.Date;

public class AddDigitalSignature {
    public static void main(String[] args) throws Exception {
        //Initialize an instance of the Workbook class
        Workbook workbook = new Workbook();
        //Load an Excel workbook
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Website budget.xlsx");

        //Add a digital signature to the file
        CertificateAndPrivateKey cap = new CertificateAndPrivateKey("test.pfx","psd");
        workbook.addDigitalSignature(cap, "psd",new Date());

        //Save the workbook to another Excel file
        workbook.saveToFile("LockCells.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

Protect Excel Files in Java