Защита и снятие защиты с файлов Excel

Microsoft Excel — популярное программное обеспечение для управления данными в организациях. В основном это связано с его расширенными функциями обработки и представления данных. В наш технологический век документы распространяются виртуально, а не в печатных копиях. Эти файлы могут содержать сложные и конфиденциальные данные. Таким образом, чтобы сохранить целостность таких файлов, вам может потребоваться защитить их от модификации. Для этой цели пригодятся функции защиты Excel. В этой статье вы узнаете, как программно защищать и снимать защиту с файлов Excel с помощью C++.

C++ API для защиты и снятия защиты с файлов Excel — скачать бесплатно

Aspose.Cells for C++ — это собственная библиотека C++, которая позволяет вам управлять файлами Excel, не требуя установки Microsoft Excel. Поэтому он используется для автоматизации многих рабочих процессов Excel. API предоставляет множество полезных функций, включая защиту и снятие защиты с файлов Excel. Вы можете либо установить API через NuGet, либо загрузить его напрямую из раздела Загрузки.

PM> Install-Package Aspose.Cells.Cpp

Защита файлов Excel с помощью C++

Aspose.Cells for C++ предоставляет следующие типы защиты для файлов Excel.

  • Все: Защитите все данные, чтобы пользователь не мог ничего изменить.
  • Содержание: Защитите содержимое рабочего листа.
  • Объекты: Защитите объекты на рабочем листе, чтобы пользователь не мог изменять объекты чертежа.
  • Сценарии: защитите сценарии на листе.
  • Структура. Защитите структуру книги.
  • Windows: Защитите сохраненные окна от модификации.
  • Нет: защита не применяется.

Ниже приведены шаги для защиты файлов Excel с помощью C++.

В следующем примере кода показано, как защитить файлы Excel с помощью C++.

// Путь к исходному каталогу.
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")));

Снять защиту книги Excel с помощью C++

Ниже приведены шаги, чтобы снять защиту с файла Excel.

В следующем примере кода показано, как снять защиту с файлов 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")));

Защитить лист Excel с помощью C++

Помимо защиты файлов Excel, вы также можете защитить отдельные рабочие листы. Пожалуйста, используйте следующие шаги для защиты листов Excel.

В следующем примере кода показано, как защитить лист 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")));

Снять защиту листа Excel с помощью C++

Ниже приведены шаги для снятия защиты с листов Excel.

В следующем примере кода показано, как снять защиту листа Excel с помощью C++.

// Путь к исходному каталогу.
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 без ограничений по ознакомительной версии, запросив бесплатную временную лицензию.

Вывод

В этой статье вы узнали, как защищать и снимать защиту с файлов Excel с помощью C++. В дополнение к этому вы также узнали, как защитить рабочие листы от изменений. Aspose.Cells for C++ — это обширный API для работы с Excel, предназначенный для автоматизации таких задач, как замена текста в ячейках или обработка сложных данных, представленных в виде графиков и диаграмм. Вы можете подробно изучить API, используя официальную документацию.

Смотрите также