Microsoft Excel 是一种流行的软件,用于管理组织中的数据。这主要是由于其先进的数据处理和表示功能。在这个技术时代,文件是虚拟共享的,而不是打印副本。这些文件可能包含复杂和敏感的数据。因此,要维护此类文件的完整性,您可能需要保护它们不被修改。 Excel 的保护功能为此目的派上用场。在本文中,您将学习如何使用 C++ 以编程方式保护和取消保护 Excel 文件。
- 用于保护和取消保护 Excel 文件的 C++ API
- 使用 C++ 保护 Excel 文件
- 使用 C++ 取消保护 Excel 工作簿
- 使用 C++ 保护 Excel 工作表
- 使用 C++ 取消保护 Excel 工作表
- 获得免费许可证
用于保护和取消保护 Excel 文件的 C++ API - 免费下载
Aspose.Cells for C++ 是一个原生 C++ 库,允许您操作 Excel 文件,而无需安装 Microsoft Excel。因此,它用于自动化许多 Excel 工作流程。该 API 提供了许多有用的功能,包括保护和取消保护 Excel 文件。您可以通过 NuGet 安装 API,也可以直接从 下载 部分下载。
PM> Install-Package Aspose.Cells.Cpp
使用 C++ 保护 Excel 文件
Aspose.Cells for C++ 提供以下保护类型来保护 Excel 文件。
- 全部:保护整个数据,使用户无法修改任何内容。
- 内容:保护工作表的内容。
- 对象:保护工作表中的对象,使用户无法修改绘图对象。
- 场景:保护工作表中的场景。
- 结构:保护工作簿的结构。
- Windows:保护保存的窗口不被修改。
- 无:未应用保护。
以下是使用 C++ 保护 Excel 文件的步骤。
- 使用 IWorkbook 类加载 Excel 文件。
- 使用 IWorkbook->Protect(Aspose::Cells::ProtectionType protectionType, intrusiveptr) 保护文件Aspose::Cells::Systems::String密码) 方法。
- 使用 IWorkbook->Save(intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下代码示例展示了如何使用 C++ 保护 Excel 文件。
// 源目录路径。
StringPtr srcDir = new String("SourceDirectory\\");
// 输出目录路径。
StringPtr outDir = new String("OutputDirectory\\");
// 加载 Excel 文件
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("sampleExcelFile.xlsx")));
// 通过指定保护类型来保护工作簿
workbook->Protect(ProtectionType::ProtectionType_All, new String("12345"));
// 保存 Excel 文件
workbook->Save(outDir->StringAppend(new String("sampleExcelFile_protected_out.xlsx")));
使用 C++ 取消保护 Excel 工作簿
以下是取消保护 Excel 文件的步骤。
- 使用 IWorkbook 类加载 Excel 文件。
- 使用 IWorkbook->Unprotect(intrusiveptrAspose::Cells::Systems::String密码) 方法。
- 使用 IWorkbook->GetISettings()->SetPassword(intrusiveptr) 将密码设置为 NULLAspose::Cells::Systems::String值) 方法。
- 使用 IWorkbook->Save(intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下代码示例显示了如何取消保护 Excel 文件。
// 源目录路径。
StringPtr srcDir = new String("SourceDirectory\\");
// 输出目录路径。
StringPtr outDir = new String("OutputDirectory\\");
// 加载 Excel 文件
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("sampleExcelFileProtected.xlsx")));
// 取消保护工作簿
workbook->Unprotect(new String("12345"));
// 将密码设置为空
workbook->GetISettings()->SetPassword(NULL);
// 保存 Excel 文件
workbook->Save(outDir->StringAppend(new String("sampleExcelFileUnprotected_out.xlsx")));
使用 C++ 保护 Excel 工作表
除了保护 Excel 文件,您还可以保护单个工作表。请使用以下步骤来保护 Excel 工作表。
- 首先,使用 IWorkbook 类加载 Excel 文件。
- 使用 IWorkbook->GetIWorksheets()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index) 方法从工作表集合中获取要保护的工作表。
- 使用 IWorksheet->GetIProtection() 方法获取工作表的保护。
- 设置保护选项如SetAllowEditingContent(bool value)。
- 使用 IPProtection->SetPassword (intrusiveptrAspose::Cells::Systems::String值) 方法。
- 最后,使用 IWorkbook->Save(intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下代码示例显示了如何保护 Excel 工作表。
// 源目录路径。
StringPtr srcDir = new String("SourceDirectory\\");
// 输出目录路径。
StringPtr outDir = new String("OutputDirectory\\");
// 加载 Excel 文件
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("sampleExcelFile.xlsx")));
// 访问 Excel 文件中的第一个工作表
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// 访问工作表的保护
intrusive_ptr<IProtection> protection = worksheet->GetIProtection();
// 以下 3 种方法仅适用于 Excel 2000 及更早的格式
protection->SetAllowEditingContent(false);
protection->SetAllowEditingObject(false);
protection->SetAllowEditingScenario(false);
// 使用密码“12345”保护第一个工作表
protection->SetPassword(new String("12345"));
// 保存 Excel 文件
workbook->Save(outDir->StringAppend(new String("sampleExcelFile_protectedWorksheet_out.xlsx")));
使用 C++ 取消保护 Excel 工作表
以下是取消保护 Excel 工作表的步骤。
- 使用 IWorkbook 类加载 Excel 文件。
- 使用 IWorkbook->GetIWorksheets()->GetObjectByIndex(Aspose::Cells::Systems::Int32 index) 方法访问受保护的工作表。
- 使用 IWorksheet->Unprotect(intrusiveptrAspose::Cells::Systems::String密码) 方法。
- 最后,使用 IWorkbook->Save(intrusiveptrAspose::Cells::Systems::String文件名) 方法。
以下代码示例显示如何使用 C++ 取消保护 Excel 工作表。
// 源目录路径。
StringPtr srcDir = new String("SourceDirectory\\");
// 输出目录路径。
StringPtr outDir = new String("OutputDirectory\\");
// 加载 Excel 文件
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(srcDir->StringAppend(new String("sampleExcelFileProtectedWorksheet.xlsx")));
// 访问 Excel 文件中的第一个工作表
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);
// 取消保护工作表
worksheet->Unprotect(new String("12345"));
// 保存 Excel 文件
workbook->Save(outDir->StringAppend(new String("sampleExcelFileUnprotectedWorksheet_out.xlsx")));
获得免费许可证
您可以通过请求 免费的临时许可证 来试用该 API,而不受评估限制。
结论
在本文中,您学习了如何使用 C++ 保护和取消保护 Excel 文件。除此之外,您还学习了如何防止工作表被修改。 Aspose.Cells for C++ 是一个庞大的 Excel 操作 API,用于自动执行任务,例如替换单元格中的文本或处理以图形和图表表示的复杂数据。您可以使用 官方文档 详细探索 API。