在与他人共享您的电子表格时,您可能不希望接收者更改内容,或者希望他们仅更改特定内容而保留其余内容不变。为了保护您的工作表不被其他人编辑,Excel 为您提供了文档保护功能。在本文中,您将学习如何使用 Spire.XLS for Java 以编程方式保护和取消保护工作簿或工作表。
安装 Spire.XLS for Java
首先,您需要在 Java 程序中添加 Spire.Xls.jar 文件作为一个依赖项。您可以从这个链接下载 JAR 文件。如果您使用 Maven,则可以通过在 pom.xml 文件中添加以下代码轻松导入该 JAR 文件。
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>15.10.5</version>
    </dependency>
</dependencies>
使用密码保护整个工作簿
通过使用密码加密 Excel 文档,可以确保只有您和授权的个人才能阅读或编辑该文档。以下是通过 Spire.XLS for Java 使用密码保护工作簿的详细步骤。
- 创建 Workbook 对象。
- 使用 Workbook.loadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.protect() 方法使用密码保护工作簿。
- 使用 Workbook.saveToFile() 方法将工作簿保存到另一个 Excel 文件。
- Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
public class PasswordProtectWorkbook {
    public static void main(String[] args) {
        //创建Workbook对象
        Workbook workbook = new Workbook();
        //加载 Excel 文件
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\示例文档.xlsx");
        //使用密码保护工作簿
        workbook.protect("psd-123");
        //将工作簿保存到另一个 Excel 文件
        workbook.saveToFile("Encrypted.xlsx", ExcelVersion.Version2016);
    }
}
使用特定保护类型保护工作表
如果您希望授予他人阅读 Excel 文档的权限,但限制他们可以对工作表进行的修改类型,则可以使用特定的保护类型保护工作表。下表列出了 SheetProtectionType 枚举下的各种预定义保护类型。
| 保护类型 | 允许用户 | 
| Content | 修改或插入文本内容。 | 
| DeletingColumns | 删除列。 | 
| DeletingRows | 删除行。 | 
| Filtering | 设置过滤器。 | 
| FormattingCells | 格式化单元格。 | 
| FormattingColumns | 格式化列。 | 
| FormattingRows | 格式化行。 | 
| InsertingColumns | 插入列。 | 
| InsertingRows | 插入行。 | 
| InsertingHyperlinks | 插入超链接。 | 
| LockedCells | 选择锁定的单元格。 | 
| UnlockedCells | 选择解锁的单元格。 | 
| Objects | 修改绘图对象。 | 
| Scenarios | 修改保存的场景。 | 
| Sorting | 排序数据。 | 
| UsingPivotTables | 使用数据透视表和数据透视表。 | 
| All | 在受保护的工作表上执行以上列出的任何操作。 | 
| None | 对受保护的工作表不执行任何操作。 | 
以下是使用 Spire.XLS for Java 保护具有特定保护类型的工作表的步骤。
- 创建 Workbook 对象。
- 使用 Workbook.loadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.getWorksheets().get(index) 方法获取特定工作表。
- 使用 Worksheet.protect(String password, EnumSet.of <SheetProtectionType> options) 方法保护具有保护类型的工作表。
- 使用 Workbook.saveToFile() 方法将工作簿保存到另一个 Excel 文件。
- Java
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 ProtectWorksheet {
    public static void main(String[] args) {
        //创建Workbook对象
        Workbook workbook = new Workbook();
        //加载 Excel 文件
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\示例文档.xlsx");
        //获取特定工作表
        Worksheet worksheet = workbook.getWorksheets().get(0);
        //使用权限密码和特定保护类型保护工作表
        worksheet.protect("psd-permission", EnumSet.of(SheetProtectionType.None));
        //将工作簿保存到另一个 Excel 文件
        workbook.saveToFile("ProtectWorksheet.xlsx", ExcelVersion.Version2016);
    }
}
允许用户编辑受保护工作表中的范围
在某些情况下,您可能需要允许用户能够编辑受保护工作表中的选定范围。以下步骤演示了如何操作。
- 创建 Workbook 对象。
- 使用 Workbook.loadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.getWorksheets().get(index) 方法获取特定工作表。
- 使用 Worksheet.addAllowEditRange() 方法指定可编辑的单元格范围。
- 使用 Worksheet.protect(String password, EnumSet.of <SheetProtectionType> options) 方法保护具有保护类型的工作表。
- 使用 Workbook.saveToFile() 方法保存结果文件。
- Java
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 AllowEditRanges {
    public static void main(String[] args) {
        //创建Workbook对象
        Workbook workbook = new Workbook();
        //加载 Excel 文件
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\示例文档.xlsx");
        //获取特定工作表
        Worksheet sheet = workbook.getWorksheets().get(0);
        //添加允许编辑的范围
        sheet.addAllowEditRange("Range One", sheet.getRange().get("A5:A7"));
        sheet.addAllowEditRange("Range Two", sheet.getRange().get("A8:C11"));
        //使用密码和保护类型保护工作表
        sheet.protect("psd-permission", EnumSet.of(SheetProtectionType.All));
        //保存结果文件
        workbook.saveToFile("AllowEditRange.xlsx", ExcelVersion.Version2016);
    }
}
取消保护加密工作表
要取消对加密工作表的文档保护,可以调用 Worksheet.unprotect() 方法并将原始密码作为参数传递。详细步骤如下。
- 创建 Workbook 对象。
- 使用 Workbook.loadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.getWorksheets().get(index) 方法获取特定工作表。
- 使用 Worksheet.unprotect(String password) 方法移除文档保护。
- 使用 Workbook.saveToFile() 方法保存结果文件。
- Java
import com.spire.xls.ExcelVersion;
        import com.spire.xls.Workbook;
        import com.spire.xls.Worksheet;
public class UnprotectWorksheet {
    public static void main(String[] args) {
        //创建Workbook对象
        Workbook workbook = new Workbook();
        //加载Excel 文件
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\示例文档.xlsx");
        //获取特定工作表
        Worksheet sheet = workbook.getWorksheets().get(0);
        //使用指定的密码取消保护工作表
        sheet.unprotect("psd-permission");
        //保存结果文件
        workbook.saveToFile("UnprotectWorksheet.xlsx", ExcelVersion.Version2016);
    }删除或重置加密工作簿的密码
要删除或重置加密工作簿的密码,您可以分别使用 Workbook.unprotect() 方法和 Workbook.protect() 方法。以下步骤将向您展示如何加载加密 Excel 文档以及如何删除或重置文档密码。
- 创建 Workbook 对象。
- 使用 Workbook.setOpenPassword() 方法设置开启密码。
- 使用 Workbook.loadFromFile() 方法加载加密 Excel 文件。
- 使用 Workbook.unprotect() 方法删除加密。或者使用 Workbook.protect() 方法更改密码。
- 使用 Workbook.saveToFile() 方法保存结果文件。
- Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
public class RemoveOrResetPassword {
    public static void main(String[] args) {
        //创建Workbook对象
        Workbook workbook = new Workbook();
        //设置开启密码
        workbook.setOpenPassword("psd-123");
        //加载加密Excel文件
        workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\加密文件.xlsx");
        //取消保护工作簿
        workbook.unProtect();
        //重置密码
        //workbook.protect("newpassword");
        //保存结果文件
        workbook.saveToFile("Unprotect.xlsx", ExcelVersion.Version2016);
    }
}申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
 



 
					



