добавлять изображения в Excel листы, используя DDE - PullRequest
2 голосов
/ 17 февраля 2012

Я работаю над проектом Delphi, где мне нужно экспортировать значения в таблицы Excel.Мой проект поддерживает два способа сделать это: 1) использование dll-компонента thied party, управляющего созданием листа; 2) использование встроенного dde и выполнение команд над этим.

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

Мой вопрос: как я могу добавить изображения в таблицу Excel, используя команду DDE?Также приветствуется полный список всех поддерживаемых команд dde.Я пришел к этому , но это, похоже, не решает мою проблему ....

Ответы [ 3 ]

4 голосов
/ 17 февраля 2012

Определение правильного синтаксиса для связи OLE с Excel может быть настоящей болью или невозможным. Я никогда не нашел полную документацию о том, как сделать это из Delphi. Я обычно заканчиваю большим количеством проб и ошибок, добавляя и удаляя скобки и квадратные скобки, и т. Д. Это не помогает, что сообщения об ошибках в Excel для неправильно сформированного синтаксиса бесполезны.

Я бы посоветовал вам рассмотреть гибридный подход, в котором вы используете Delphi для запуска макросов в Excel, предварительно вставляя аргументы в скрытый (xlVeryHidden) рабочий лист, если это необходимо. Затем вы можете делать все в VBA, что открывает мир примеров кода и поддержки (например, форумы MrExcel.com являются отличным источником помощи.)

Вам известен сайт Деборы Пэйт, нет: http://www.djpate.freeserve.co.uk/AutoExcl.htm

0 голосов
/ 25 мая 2016

В моем случае это работало с помощью следующей команды:

EXCEL -> SYSTEM -> [INSERT.PICTURE("C:\temp\picture.jpg")]

0 голосов
/ 18 февраля 2012

Вы не можете сделать это только с DDE.

Я считаю, что правильный подход - не DDE, а OLE-автоматизация (интерфейс COM IDispatch). DDE полезен только для связи вашего приложения с другим приложением с помощью трех основных команд чтения / записи / выполнения, поэтому его возможности более ограничены, чем OLE Automation. Вы можете быть клиентом DDE, и вы можете подключиться к Excel. Excel может быть сервером DDE или клиентом DDE. В этом случае вы можете использовать Excel и легко писать текст, используя DDE.

Я не верю, что вы можете помещать информацию растрового изображения в запись DDE, но вы можете писать текст, числа и формулы. Я интенсивно использовал DDE с Excel и Delphi и никогда не видел признаков того, что это возможно. DDE имеет три основные операции:

  • заглядывать (читать)

  • тыкай (пиши)

  • выполнить (вызвать функцию)

Если бы вы спросили, как это сделать с OLE Automation, это было бы другим делом, и это было бы относительно просто, с Delphi, поскольку Delphi свободно поддерживает COM и OLE Automation.

Ответ Роберта Фрэнка тоже кажется хорошим. Вы могли бы использовать макросы VBA и вызывать их из DDE Execute, но я не могу предложить, как это сделать.

...