NPOI установлен только для чтения, чтобы преуспеть

Есть ли способ создать книгу с использованием NPOI, которая не позволяет пользователю редактировать книгу, если не сохранить новую копию?

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

P/S: я не ищу password защиты.

var wb = new XSSFWorkbook();
var sheet = wb.CreateSheet("Sheet1");
sheet.CreateRow(0).CreateCell(0).SetCellValue("Hello World");

wb.SetReadOnly(true);//Something like this?

person CozyAzure    schedule 01.10.2018    source источник
comment
NPOI или EPPlus могут делать только то, что уже делает Excel, и использовать более или менее те же объекты и методы. Вы спрашиваете о защите клеток? Делать листы только для чтения? Какое меню/диалог/опцию вы бы использовали, чтобы делать то, что вы хотите в Excel? Объекты NPOI/EPPlus будут иметь аналогичные имена. Если вы не можете найти их таким образом, запишите макрос при установке защиты и проверьте сгенерированный код. Объекты/свойства также должны существовать в Epplus, NPOI.   -  person Panagiotis Kanavos    schedule 01.10.2018
comment
Кстати, если вы хотите, чтобы общий файл был доступен только для чтения, вам следует изменить права доступа к файлу/папке. Вы можете указать, что Everyone имеет право на чтение только один раз, а 1-2 учетные записи администратора/редактора имеют полный доступ.   -  person Panagiotis Kanavos    schedule 01.10.2018


Ответы (2)


Readonly — это атрибут файла

File.SetAttributes("workbook.xlsx", FileAttributes.ReadOnly);
person shingo    schedule 01.10.2018

Вам не нужно это с библиотекой NPOI

установить разрешение безопасности для всех файлов в каталоге

var directory = new DirectoryInfo(folderPath);
foreach (var file in di.GetFiles("*", SearchOption.AllDirectories))
{
 File.SetAttributes(folderPath, FileAttributes.ReadOnly);
}

или для конкретного файла

File.SetAttributes(folderPath, FileAttributes.ReadOnly);
person Idriss Benbassou    schedule 01.10.2018