Мне нужно сделать простой слияние почты в OpenOffice, используя C++, VBScript, VB.Net или C# через OLE или собственный API. Есть ли хорошие примеры?Как сделать простой слияние почты в OpenOffice
ответ
Я не придумал решение, я очень доволен, но вот некоторые примечания:
Q. Что такое OO API для слияния почты?
А. http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html
группы Q. Какая поддержка?
А. http://user.services.openoffice.org/en/forum/viewforum.php?f=20
Q. Пример код?
А. http://user.services.openoffice.org/en/forum/viewtopic.php?f=20&t=946&p=3778&hilit=mail+merge#p3778
Q. Любые другие примеры?
A. Файл: /// C: /Program%20Files/OpenOffice.org_2.4_SDK/examples/examples.html (поставляется с SDK)
Q. Как построить примеры?
A. например, для WriterDemo (C: \ Program Files \ OpenOffice.org_2.4_SDK \ Примеры \ CLI \ VB.NET \ WriterDemo)
- Добавить ссылки на все здесь: C: \ Program Files \ OpenOffice.org 2.4 \ программа \ сборка
- это cli_basetypes, cli_cppuhelper, cli_types, cli_ure
Q. есть ли использовать один и тот же OO отдельные данные/файл документа для слияния почты?
A. Это позволяет для различных источников данных, включая файлы CSV
Q. ли OO позволяет объединить все различные тип (факс, электронную почту, новый документ принтер)?
A. Вы можете объединить в новый документ, печать и электронной почте
Q. Вы можете добавить пользовательские поля?
A. Да
Q. Как создать новый документ в VB.Net?
А.
Dim xContext As XComponentContext xContext = Bootstrap.bootstrap() Dim xFactory As XMultiServiceFactory xFactory = DirectCast(xContext.getServiceManager(), _ XMultiServiceFactory) 'Create the Desktop Dim xDesktop As unoidl.com.sun.star.frame.XDesktop xDesktop = DirectCast(xFactory.createInstance("com.sun.star.frame.Desktop"), _ unoidl.com.sun.star.frame.XDesktop) 'Open a new empty writer document Dim xComponentLoader As unoidl.com.sun.star.frame.XComponentLoader xComponentLoader = DirectCast(xDesktop, unoidl.com.sun.star.frame.XComponentLoader) Dim arProps() As unoidl.com.sun.star.beans.PropertyValue = _ New unoidl.com.sun.star.beans.PropertyValue() {} Dim xComponent As unoidl.com.sun.star.lang.XComponent xComponent = xComponentLoader.loadComponentFromURL(_ "private:factory/swriter", "_blank", 0, arProps) Dim xTextDocument As unoidl.com.sun.star.text.XTextDocument xTextDocument = DirectCast(xComponent, unoidl.com.sun.star.text.XTextDocument)
Q. Как сохранить документ?
А.
Dim storer As unoidl.com.sun.star.frame.XStorable = DirectCast(xTextDocument, unoidl.com.sun.star.frame.XStorable) arProps = New unoidl.com.sun.star.beans.PropertyValue() {} storer.storeToURL("file:///C:/Users/me/Desktop/OpenOffice Investigation/saved doc.odt", arProps)
Q. Как открыть документ?
А.
Dim xComponent As unoidl.com.sun.star.lang.XComponent xComponent = xComponentLoader.loadComponentFromURL(_ "file:///C:/Users/me/Desktop/OpenOffice Investigation/saved doc.odt", "_blank", 0, arProps)
Q. Как вы инициировать слияние почты в VB.Net?
А.
Не знаю. Эта функциональность находится в ссылке API, но отсутствует в IDL. Мы можем быть слегка привинчены. Предполагая, что API работает, похоже, что слияние довольно просто.
В VBScript:
Set objServiceManager = WScript.CreateObject ("com.sun.star.ServiceManager")
«Теперь создать новый MailMerge, используя настройки, извлеченные из этого документ Set oMailMerge = objServiceManager.createInstance ("com.sun.star.text.MailMerge")
oMailMerge.DocumentURL = "файл: /// C:/Users/мне/Desktop/OpenOffice Исследование/почта merged.odt" oMailMerge .DataSourceName = "добавляет" oMailMerge.CommandType = 0 'http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html#CommandType oMailMerge.Command = "добавляет" oMailMerge.OutputType = 2' http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html#OutputType oMailMerge.execute (Array())
В VB.Net (Option Strict Off)
Dim t_OOo As Type t_OOo = Type.GetTypeFromProgID("com.sun.star.ServiceManager") Dim objServiceManager As Object objServiceManager = System.Activator.CreateInstance(t_OOo) Dim oMailMerge As Object oMailMerge = t_OOo.InvokeMember("createInstance", _ BindingFlags.InvokeMethod, Nothing, _ objServiceManager, New [Object]() {"com.sun.star.text.MailMerge"}) 'Now set up a new MailMerge using the settings extracted from that doc oMailMerge.DocumentURL = "file:///C:/Users/me/Desktop/OpenOffice Investigation/mail merged.odt" oMailMerge.DataSourceName = "adds" oMailMerge.CommandType = 0 ' http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html#CommandType oMailMerge.Command = "adds" oMailMerge.OutputType = 2 ' http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html#OutputType oMailMerge.execute(New [Object]() {})
То же самое, но с Option Strict On (не работает)
Dim t_OOo As Type t_OOo = Type.GetTypeFromProgID("com.sun.star.ServiceManager") Dim objServiceManager As Object objServiceManager = System.Activator.CreateInstance(t_OOo) Dim oMailMerge As Object oMailMerge = t_OOo.InvokeMember("createInstance", _ BindingFlags.InvokeMethod, Nothing, _ objServiceManager, New [Object]() {"com.sun.star.text.MailMerge"}) 'Now set up a new MailMerge using the settings extracted from that doc oMailMerge.GetType().InvokeMember("DocumentURL", BindingFlags.SetProperty, Nothing, oMailMerge, New [Object]() {"file:///C:/Users/me/Desktop/OpenOffice Investigation/mail merged.odt"}) oMailMerge.GetType().InvokeMember("DataSourceName", BindingFlags.SetProperty, Nothing, oMailMerge, New [Object]() {"adds"}) oMailMerge.GetType().InvokeMember("CommandType", BindingFlags.SetProperty, Nothing, oMailMerge, New [Object]() {0}) oMailMerge.GetType().InvokeMember("Command", BindingFlags.SetProperty, Nothing, oMailMerge, New [Object]() {"adds"}) oMailMerge.GetType().InvokeMember("OutputType", BindingFlags.SetProperty, Nothing, oMailMerge, New [Object]() {2}) oMailMerge.GetType().InvokeMember("Execute", BindingFlags.InvokeMethod Or BindingFlags.IgnoreReturn, Nothing, oMailMerge, New [Object]() {}) ' this line fails with a type mismatch error
Вы должны взглянуть на Apache OpenOffice API. Проект создания API для Open Office. Несколько языков, на которые они сказали, поддерживают: C++, Java, Python, CLI, StarBasic, JavaScript и OLE.
- 1. Простой слияние почты для формы Google
- 2. Слияние документов с OpenOffice из flex (air)
- 3. Как сделать уравнение в OpenOffice
- 4. Самый простой способ сделать это слияние массива
- 5. PHP: Как следует слить почту с openoffice?
- 6. Слияние почты из набора данных в C# ASP.NET
- 7. Слияние почты с Java
- 8. Слияние почты с Open Office с C# .NET
- 9. Слияние почты в C# с n копиями
- 10. VBA - слияние почты через доступ
- 11. Как сделать GitHub "слияние ветки"?
- 12. фильтра в OpenOffice Calc
- 13. Как сделать текст сосредоточенным в ячейке в электронной таблице openoffice?
- 14. Слияние почты в PDF, а не Печать
- 15. Как сделать непрерывное слияние в Git
- 16. Простой почты отправителя
- 17. Слияние почты с использованием Open XML SDK
- 18. Log4j2 в OpenOffice Extension
- 19. сценариев Openoffice в Linux
- 20. OpenOffice Плагин Eclipse не распознает OpenOffice SDK
- 21. Слияние почты с несколькими текстовыми полями Word
- 22. Как начать расширение OpenOffice?
- 23. Подсветка синтаксиса OpenOffice
- 24. Простой базовый код OpenOffice для создания и установки поля переменной
- 25. Слияние почты: невозможно добавить изображения из шаблона
- 26. Как сделать сложный слияние репозитория Git?
- 27. начинающий вопрос: как сделать простое слияние?
- 28. Как сделать подрывную слияние черешни без конфликтов
- 29. Как я могу сделать сложное слияние осьминогов?
- 30. SMTP - простой протокол передачи почты
Не используйте отражение в .NET для создания экземпляра MailMerge. Я тоже делал это на основе этого ответа, и, хотя он работал для слияния с файлом, попытка слияния с принтером путем установки свойства PrintOptions завершилась неудачей с исключением варианта преобразования варианта преобразования. Правильный способ, похоже, заключается в возврате getServiceManager() в контексте XMultiComponentFactory, а затем вызывает createInstanceWithContext («com.sun.star.text.MailMerge», контекст) для создания объекта MailMerge. Передайте это как XPropertySet и установите свойства MailMerge с помощью методов XPropertySet. – rgonet 2015-12-16 01:33:45