У меня есть программа, которая создает новый рабочий лист в существующем файле электронной таблицы и применяет защиту к этому рабочему листу, чтобы защитить некоторые заголовки и метаданные от изменений, в то же время позволяя редактировать ячейки «данных».
Все ячейки на листе все еще должны иметь возможность форматирования (уже достигнуто). Кроме того, должны быть удалены только строки данных (строка 7 и далее). Был испробован следующий код:
worksheet.Protection.IsProtected = true;
// this works
worksheet.AllowFormatColumns = true;
worksheet.AllowFormatCells = true;
// this doesn't allow any rows to be deleted.
worksheet.AllowDeleteRows = true;
worksheet.AllowDeleteColumns = true;
int row = 7;
while (spreadsheetCellRangeHasData(worksheet.Cells[row,1])
{
// this is a data row, so unlock it
// it works, can edit text in cells in row 7 and beyond which have data in them. Still, cannot delete them.
worksheet.Cells[row,1].Style.Locked = false;
row++;
}
Код разрешения на удаление был также помещен после while
l oop, но безрезультатно. В идеале, это должно позволять удалять только строки, начинающиеся с 7, если первый столбец не нулевой.