Как предотвратить введение/удаление столбцов Excel в C#C#

Место общения программистов C#
Ответить
Anonymous
 Как предотвратить введение/удаление столбцов Excel в C#

Сообщение Anonymous »

Я управляю надстройкой excel vsto, которая работает в конкретных файлах и не поддерживает вставки /удаление столбцов.

Я хотел бы помешать пользователю сделать это, чтобы защитить данные в файлах. do < /li>
[*] Я попытался использовать Appevents и более конкретно Sheetchange, но не нашел способ отменить изменения. Я полагаю, что нет ничего, но дайте мне знать, если я ошибаюсь < /li>
Я знаю, что пакет отмены где -то существует, но не смотрел, работает ли он с событиями, потому что:
  • Я бы предпочел избегать внешних пакетов < /li> В моей ситуации будет запустить цепь Sheetchange , который, очевидно, не работает без добавления дополнительной сложности

Есть ли способ предотвратить вставку/делецию в Excel, специфически, не зафиксируя что-либо еще и, если это возможно, просто? /> thanks.
edit - update < /strong>

Я до сих пор настраивал импровизированное решение, которым я поделюсь здесь: < /p>

Код: Выделить всё

AppEvents_SheetChangeEventHandler EventSheetChangeHwnd;

private void ThisAddin_Startup(object sender, EventArgs e)
{
Application.SheetChange -= EventSheetChangeHwnd;
EventSheetChangeHwnd = new AppEvents_SheetChangeEventHandler(SheetChange_Event);
Application.SheetChange += EventSheetChangeHwnd;
}

private void SheetChange_Event(Object Sh, Range Target)
{
if(!Target.Address.Equals(Target.EntireColumn.Address)) // Can use Target.Row != 1 too to check faster and remove unwanted occurences
return;

Application.EnableEvents = false; // Prevents event from re-firing after undo
Application.Undo();               // Native undo method
Application.EnableEvents = true;

}
< /code>
Теперь это не является правильным решением, потому что: < /p>
[list]
[*] Событие запускает каждый раз, когда значение меняется в листе, если вы пишете ячейку данных по ячейке, он будет стрелять каждый раз и может попасть в точку, где вы видите падение скорости обработки < /li>
. Вставка/делеция
[*] Необходимость использования Application.enableEvents 
может иметь побочные эффекты и фактически требует большего кода для правильной обработки
[/list]

Подробнее здесь: https://stackoverflow.com/questions/794 ... in-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»