Добавление строки в таблицу Excel

Я работаю над приложением книги Excel 2013/2015 VSTO. Из данных, введенных в форму Windows, я хотел бы создать новую запись в существующей таблице на одном из моих рабочих листов.

Как вставить новую строку таблицы в таблицу Excel (а не простой массив рабочих листов) с помощью С# и VSTO?


person jerry    schedule 27.11.2015    source источник
comment
Запишите макрос того, как вы делаете это вручную, переведите в методы взаимодействия, большинство из которых одинаковы.   -  person Alex K.    schedule 27.11.2015
comment
Я понял свою ошибку. Должна быть возможность получить метод ListObject.ListRows.Add в пространстве имен Microsoft.Office.Interop.Excel. Я запутался, потому что подобный тип существует в Microsoft.Office.Tools.Excel, но отсутствует метод Add. Работаю над этим. Сейчас я борюсь с получением дескриптора ListObject для таблицы.   -  person jerry    schedule 27.11.2015
comment
@pnuts Спасибо за исправление опечаток. Пришлось один разорвать, а в остальном все в порядке.   -  person jerry    schedule 27.11.2015
comment
Хорошо, английская орфография против правил форума. Не знаю, как решить. Я подчинюсь, если придется. :)   -  person jerry    schedule 27.11.2015
comment
@АлексК. Хорошо, проблема решена. Вы держали меня на правильном пути. Это сводится к тому, что IntelliSense не показывает доступных членов, и я путаю пространства имен. ListObject в Microsoft.Office.Tools.Excel действительно можно использовать. У него есть свойство ListRows из Interop, которое предоставляет необходимый метод Add(). Intellisense этого не показал. Решение было рядом, а я его не видел. Хотите написать свой комментарий в качестве ответа?   -  person jerry    schedule 27.11.2015
comment
Похоже, ваш собственный ответ будет более полезен для других, чем мой, вы можете ответить на свой вопрос, а затем принять его.   -  person Alex K.    schedule 27.11.2015
comment
Хорошо, просто хотел спросить, прежде чем присвоить себе заслуги.   -  person jerry    schedule 27.11.2015


Ответы (1)


Microsoft.Office.Tools.Excel.ListObject обеспечивает необходимую функциональность. На таблицу можно ссылаться и добавлять строки следующим образом:

Microsoft.Office.Tools.Excel.ListObject lo = Globals.Sheet1.MyTable;
lo.ListRows.Add();

При желании можно указать положение новой строки (https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.listrows.add.aspx). По умолчанию находится в конце таблицы.

В моем случае IntelliSense не показал функцию Add(), что вызвало путаницу. Просто введите его.

person jerry    schedule 27.11.2015
comment
Как странно. Кто-нибудь может объяснить, почему это не отображается в intellisense? Какая ужасная хрень. ПОЧЕМУ, МАЙКРОСОФТ? ЗАЧЕМ?! - person Lopsided; 12.11.2016