在与他人共享您的电子表格时,您可能不希望接收者更改内容,或者希望他们仅更改特定内容而保留其余内容不变。为了保护您的工作表不被其他人编辑,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>14.10.0</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 天的临时许可证。