Мне нужно написать простое приложение для Lock, < em>Разблокировать и Проверить (если заблокировано/разблокировано) листы Excel.
Я использую этот код для блокировки:
Код: Выделить всё
using (SpreadsheetDocument document = SpreadsheetDocument.Open(report, true))
{
foreach (var part in document.WorkbookPart.WorksheetParts)
{
SheetProtection protection = new SheetProtection()
{
Sheet = true,
Objects = true,
Scenarios = true,
Password = hexKey
};
part.Worksheet.InsertAfter(protection, part.Worksheet.Descendants().LastOrDefault());
part.Worksheet.Save();
}
}
Код: Выделить всё
using (SpreadsheetDocument document = SpreadsheetDocument.Open(report, true))
{
foreach (var part in document.WorkbookPart.WorksheetParts)
{
part.Worksheet.RemoveAllChildren();
part.Worksheet.Save();
}
}
Код: Выделить всё
try
{
using (SpreadsheetDocument document = SpreadsheetDocument.Open(report, false))
{
foreach (var part in document.WorkbookPart.WorksheetParts)
{
var protections = part.Worksheet.Elements();
if (protections.Any())
return Protection.Locked;
}
}
}
catch (System.IO.FileFormatException)
{
return Protection.Crypted;
}
return Protection.Unlocked;
Я создал файл Excel с помощью внешнего приложения, которое имеет аналогичную функцию для блокировки файла (NI LabView / NI Report Toolkit для Microsoft Office ).
Если я проверю файл, я найду его заблокированным, а если я попытаюсь его разблокировать, функция сработает успешно, и последующие проверки вернут его как разблокированный.
Но если я попытаюсь открыть файл с помощью Excel, мне придется спрашивать пароль.
Я также пытался распаковать Excel. em> после его разблокировки, и ни один из подфайлов не содержит тег SheetProtection, который должен отвечать за функцию защиты листа, отображаемую в Excel.
Итак... чего мне не хватает?
Ссылка на файл Excel (пароль Excel).
Вот полный репозиторий кода.< /п>
Подробнее здесь: https://stackoverflow.com/questions/790 ... on-removal
Мобильная версия