У меня есть программа, экспортирующая электронную таблицу, содержащую заголовки и некоторые данные. Мне нужно защитить заголовки, но оставить ячейки данных редактируемыми.
Проблема заключается в том, что после установки рабочего листа как защищенного все ячейки становятся доступными только для чтения.
Итак, подход, который я использую, состоит в том, чтобы проверить каждую из ячеек под заголовком, чтобы убедиться, что они не пусты, и разблокировать их, если это так.
public void formatSpreadsheet(OfficeOpenXml.ExcelWorksheet ws)
{
// autofit columns
for (int i = 1; i <= ws.Dimension.End.Column; i++)
{
ws.Column(i).AutoFit();
}
// protect headers/metadata
ws.Protection.IsProtected = true;
int row = HEADER_ROW_OFFSET;
int col = 1;
while (ws.Cells[row,col].Value != null)
{
while (ws.Cells[row,col].Value != null)
{
ws.Cells[row, col].Style.Locked = false;
col++;
}
row++;
}
}
Проверка на нулевые значениявот так:
if (ws.Cells[row,col].Value != null) ws.Cells[row,col].Style.Locked = false;
не работает.
Я также пробовал ToString () для значений ячеек, и это не помогает.
Любые идеи