Редактировать внешние данные в таблице Excel
Как разработать плагин для Excel для редактирования внешних данных в таблице данных Excel?
Excel может устанавливать соединения с внешними источниками данных, но, насколько я понимаю, они представляют собой однонаправленные таблицы данных только для чтения. Я пытаюсь сделать что-то вроде плагина TFS для Excel. Я уверен, что есть еще много таких.
Для тех, кто не знает этот плагин: после установки плагин TFS Excel становится новым меню в Excel. Через это меню вы можете открыть соединение с сервером TFS и перенести свои записи (рабочих элементов) в Excel в виде таблицы Excel. Вы можете добавлять новые строки или редактировать данные в таблице. К некоторым ячейкам прикреплены выпадающие списки, но в списке отображаются только допустимые параметры, которые отличаются для каждой записи. Вы можете редактировать строки в таблице, и вы можете массово отправить эти записи обратно на сервер.
Я не знаю, имеет ли это значение, но операции подключения и обновления в моем источнике данных будут осуществляться через веб-сервисы.
Я предполагаю, что это потребовало бы некоторого серьезного развития, но я потерян между веб-страницами о внешних диапазонах данных (которые только для чтения). Может кто-нибудь, пожалуйста, направьте меня к дальнейшему чтению на эту тему?
2 ответа
Я не думаю, что это хорошее решение, поскольку оно очень нестабильно, но посмотрите эту статью: http://www.toadworld.com/platforms/sql-server/w/wiki/10392.editing-an-sql-server-table-in-excel
Диапазоны внешних данных вам не помогут, поэтому вы можете перестать читать о них веб-страницы. Вы правы, что они только для чтения. Вы могли бы использовать их для части чтения вашей операции, но вы будете делать так много кода вокруг части записи, что вы могли бы просто контролировать все. Вы просто не получите достаточных преимуществ от диапазонов внешних данных, чтобы вообще гарантировать их использование в подобных ситуациях. На мой взгляд, конечно.
Если бы вы читали и писали в базу данных, вы, скорее всего, использовали бы объекты данных ActiveX (ADO). Вы должны читать набор записей, отслеживать его изменения, а затем записывать обратно в базу данных, используя при необходимости операторы UPDATE, DELETE и INSERT.
Если вы будете взаимодействовать с базой данных через API, как вы, вероятно, указываете, вы, вероятно, будете использовать библиотеку Microsoft XML, в частности объект MSXML2.XMLHTTP. Вы можете использовать GET, POST, PUT, DELETE и все, что вы можете сделать через HTTP.
Если вы никогда раньше не использовали XMLHTTP, вам придется немного научиться делать. Но это не особенно сложно, и есть тонна информации. Сложной частью, на мой взгляд, является отслеживание изменений, внесенных в лист Excel. Если вы разрешите пользователю использовать собственные функции редактирования Excel, может быть сложно отслеживать сделанные изменения. Если вы переходите к ситуации полной блокировки, когда пользователь должен, скажем, использовать ваш пункт меню для удаления записи, то вам нужно спросить, почему вы используете Excel (могут быть веские причины, но знакомство с интерфейсом Excel выиграло не будь одним из них, потому что ты заменишь его своим).
Может быть, у вас уже есть стратегия для этого. Но если нет, то поищите "обнаружить удаленную строку с событием смены листа", чтобы понять, с какими проблемами вы столкнетесь. Если у вас есть путь вперед, прочитайте XMLHTTP, и все будет готово.