Я никогда раньше не использовал эту DLL.
Я использую другие инструменты для шифрования.
Итак, потратил некоторое время на это сегодня, и пример ниже работает.Пик через DLL с помощью ---
dotPeek Free .NET Decompiler от JetBrains https://www.jetbrains.com/decompiler/download
--- чтобы увидеть, с чем я работал.После этого создал образец и сделал следующее ...
Динамически ---
- Создайте новый xlsx
- Сканируйте папку на наличие типов файлов и добавьте, чтов файл
- Зашифровать файл
- Сохранить файл
При открытии файла в Excel появится запрос пароля.Сценарий ... Использование Add-Type или Import-Module с использованием пути к .DLL оба сработало.
Add-Type -AssemblyName System.Drawing
Add-Type -Path 'D:\Downloads\epplus.4.5.3.1\lib\net40\EPPlus.dll'
# Import-Module 'D:\Downloads\epplus.4.5.3.1\lib\net40\EPPlus.dll'
$pkg = New-Object OfficeOpenXml.ExcelPackage('E:\temp\output.xlsx')
Get-ChildItem "E:\Temp\*.png" |
ForEach-Object {
$name = $_.BaseName
$ws = $pkg.Workbook.Worksheets.Add($name)
$image = [System.Drawing.Image]::FromFile($_.FullName)
$picture = $ws.Drawings.AddPicture($name, $image)
$picture.From.Column = 1
$picture.From.Row = 1
$image.Dispose()
}
# Encryption
$pkg.Encryption.Algorithm = [OfficeOpenXml.EncryptionAlgorithm]::AES256
$pkg.Encryption.IsEncrypted = $true
$pkg.Encryption.Password = 'Excel'
$pkg.Save()
$pkg.Dispose()
Start-Process -FilePath 'Excel.exe' -ArgumentList 'E:\temp\output.xlsx'
Так что, на самом деле, мало чем отличается от того, что вы делаете.