Получить данные из пользовательского приложения в EXcel - PullRequest
1 голос
/ 12 мая 2009

Я хотел бы иметь возможность связать некоторые данные из пользовательского приложения с ячейкой в ​​Excel.

Какие технологии вы бы использовали для этого? Я в первую очередь Unix-разработчик, и я не очень хорошо разбираюсь в технологиях win32. Но, насколько я понимаю, DDE будет самым простым, хотя это очень старая технология.

Возможность использовать его с другими офисными пакетами, такими как OpenOffice, будет большим бонусом.

Ответы [ 8 ]

2 голосов
/ 13 мая 2009

Что означает «связать данные из пользовательского приложения с ячейкой в ​​Excel»?

Хотите ли вы, чтобы на листе Excel отображались данные, сгенерированные каким-либо внешним приложением?

Если это так, есть несколько вариантов. Поставщик данных Excel - один из способов. Это работает, если у вас есть много данных, которые вы хотите загрузить. Только для одной клетки это может быть излишним.

Если внешние данные доступны через сетевой интерфейс (скажем, HTTP), то вы можете написать некоторый макрос-код Excel для его использования. Вы можете использовать объект ServerXmlHttp, чтобы использовать его из Excel. Некоторые указания на это ЗДЕСЬ.

Еще один способ сделать это - представить данные через пользовательский COM-объект, конструкцию многократного использования, которая очень удобна для Excel. Вы должны написать код, чтобы сделать это, но это не слишком сложно. Вы можете написать это на .NET, C ++, Javascript, VBScript, PerlScript, ...

1 голос
/ 13 мая 2009

Все решения, которые я видел здесь, имеют подход, чтобы подтолкнуть данные к совершенству. Почему бы не взять на себя ответственность за передачу этих данных в сам Excel? Excel имеет возможность добавлять данные через oleDB и ODBC. (по крайней мере, из версии, которую я знаю) Я могу только проверить, что в Office2007, единственной версии, которую я имею на моих машинах.

Все, что вам нужно сделать, это добавить эту опцию в электронную таблицу с вкладкой данных. Довольно просто Таким образом, вы также освобождаетесь от необходимости поддерживать код в своем приложении, открывать Excel, запускать некоторый код для вставки кода в ячейки и т. Д. Возможно, вы могли бы записать макрос для этого и запустить его, когда лист Excel открыт.

1 голос
/ 12 мая 2009

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

1 голос
/ 12 мая 2009

В .NET я бы использовал библиотеки COM для Excel. Вы можете использовать объекты Workbook, Worksheet и Range для адресации определенных ячеек в определенных рабочих листах и ​​рабочих книгах. Они хорошо работают из .NET (особенно VB.NET).

0 голосов
/ 13 мая 2009

Просто чтобы уточнить: DDE работает с открытым офисом. Я являюсь пользователем Bloomberg, и я открыл электронную таблицу office 2003 в открытом офисе, в которой содержались ссылки Bloomberg на цены акций, обновленные через DDE, и это работает как шарм.

0 голосов
/ 12 мая 2009

Йонатан,

Если исходное приложение хранит данные в базе данных или текстовом файле, можно будет использовать встроенные в данные функции Excels для их извлечения. В противном случае я бы согласился с Dayton на интеграцию с VS2008. Вы можете использовать VS2005, однако для этого потребуется установить VSTO.

Относительно DDE - помимо того, что он почти устарел, существуют проблемы при использовании разных версий Excel и разных языков, что потребует от вас использовать разные ключевые слова для одной и той же операции

0 голосов
/ 12 мая 2009

Я бы рекомендовал использовать Java / JVM и его библиотеку Apache POI.

Он может читать и писать файлы Excel, и это чисто кроссплатформенный Java. Это довольно надежно на практике.

http://poi.apache.org/

0 голосов
/ 12 мая 2009

Самый простой способ связать значение ячейки - через поставщиков данных .net в Visual Studio 2008. Ниже приведена ссылка на некоторые из наиболее распространенных методов. Ссылка

Будет сложно попытаться сделать это доступным для открытия офиса, поскольку поставщики данных не совпадают.

...