Программное создание листов в надстройке Excel (C#)

Согласно MSDN, можно программно создавать и удалять листы Excel в Visual Studio (http://msdn.microsoft.com/en-us/library/6fczc37s.aspx). Код для этого выглядит следующим образом:

private void createNewAccount()
{            
    Excel.Worksheet newWorksheet;
    newWorksheet = Globals.ThisAddIn.Application.ThisWorkbook.Worksheets.Add();            
}

В одной из форм моего проекта есть кнопка с этим кодом. Предполагается, что пользователь может нажать на нее и создать новый рабочий лист, но это не работает. Поэтому я решил вместо этого сделать кнопку на вкладке ленты. Это тоже не сработало. Что мне не хватает?


person user3352070    schedule 17.03.2014    source источник
comment
попробуйте изменить ThisWorkbook на ActiveWorkbook   -  person Dmitry Pavliv    schedule 18.03.2014


Ответы (1)


Мой ответ не будет слишком длинным.

Если вам нужно пойти по пути Microsoft, сначала обязательно создайте книгу. Помните, что файлы Excel напоминают книгу, внутри которой вы можете создавать рабочие листы.

Если нет, взгляните на проект NPOI.

При обоих подходах вам нужно будет создать рабочую книгу, а затем рабочие листы внутри.

Подробнее по этой ссылке.

Что ж, если вы уверены, что у вас есть доступ к рабочей книге, я бы порекомендовал вам:

1.- Используйте параметры метод WorkSheets.Add

2.- Пожалуйста, взгляните на этот пример. .

3.- Сохраните книгу после добавления листа. Это позволит проверить, был ли он добавлен или нет.

И последнее, но не менее важное: отладка, отладка и отладка.

Надеюсь, это поможет,

person Ramon Araujo    schedule 17.03.2014
comment
Вероятно, мне следует уточнить: проект, над которым я работаю, является надстройкой для Excel. Предполагается, что пользователь может загрузить эту надстройку и применить ее к существующей книге. С точки зрения программирования, рабочая книга уже существует в пространстве имен Globals.ThisAddIn.Application. У меня нет проблем с доступом к его свойствам во время выполнения (я знаю это, потому что форма, о которой я упоминал ранее, имеет функцию, которая заполняет поле списка именами всех рабочих листов в книге при загрузке формы). - person user3352070; 18.03.2014
comment
@user3352070 user3352070 см. комментарий simoco под вашим исходным сообщением. Я думаю, что он ответил на это для вас - person ; 18.03.2014