문제

OLE 또는 기본 API를 통해 C++, VBScript, VB.Net 또는 C#을 사용하여 OpenOffice에서 간단한 메일 병합을 수행해야 합니다.좋은 사례가 있나요?

도움이 되었습니까?

해결책

저는 정말 만족스러운 해결책을 찾지 못했지만 다음은 몇 가지 참고 사항입니다.

  • 큐.메일 병합을 위한 OO API는 무엇입니까?

    ㅏ. http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html

  • 큐.어떤 지원 그룹이 있나요?

    ㅏ. http://user.services.openoffice.org/en/forum/viewforum.php?f=20

  • 큐.샘플 코드?

    ㅏ. http://user.services.openoffice.org/en/forum/viewtopic.php?f=20&t=946&p=3778&hilit=mail+merge#p3778

    http://user.services.openoffice.org/en/forum/viewtopic.php?f=20&t=8088&p=38017&hilit=mail+merge#p38017

  • 큐.더 많은 예가 있나요?

    ㅏ.file:///C:/Program%20Files/OpenOffice.org_2.4_SDK/examples/examples.html (SDK와 함께 제공)

    http://www.oooforum.org/forum/viewtopic.phtml?p=94970

  • 큐.예제를 어떻게 구축하나요?

    ㅏ.예: WriterDemo의 경우(C:\Program Files\OpenOffice.org_2.4_SDK\examples\CLI\VB.NET\WriterDemo)

    1. 여기에 있는 모든 항목에 대한 참조를 추가하세요.C:\Program Files\OpenOffice.org 2.4\프로그램\어셈블리
    2. cli_basetypes, cli_cppuhelper, cli_types, cli_ure입니다.
  • 큐.OO는 편지 병합을 위해 동일한 별도의 데이터/문서 파일을 사용합니까?

    ㅏ.csv 파일을 포함한 다양한 데이터 소스를 허용합니다.

  • 큐.OO를 사용하면 다양한 유형(팩스, 이메일, 새 문서 프린터)을 모두 병합할 수 있나요?

    ㅏ.새 문서로 병합하고 인쇄하고 이메일로 보낼 수 있습니다.

  • 큐.사용자 정의 필드를 추가할 수 있나요?

    ㅏ.예

  • 큐.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)
    
  • 큐.문서를 어떻게 저장하나요?

    ㅏ.

            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)
    
  • 큐.문서를 어떻게 열나요?

    ㅏ.

            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)
    
  • 큐.VB.Net에서 메일 병합을 어떻게 시작합니까?

    ㅏ.

    1. 모르겠어요.이 기능은 API 참조에 있지만 IDL에는 없습니다.우리는 약간 망가질 수 있습니다.API가 작동한다고 가정하면 병합 실행이 매우 간단해 보입니다.

    2. VBScript에서:

      objServiceManager = WScript.CreateObject("com.sun.star.ServiceManager") 설정

      '이제 해당 문서에서 추출한 설정을 사용하여 새 MailMerge를 설정하십시오.

      omailmerge.documenturl = "file : /// c :/users/me/goodtop/openOffice 조사/메일 merged.odt"omailmerge.datasourcename = "추가"omailmerge.commandtype = 0 " http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html#CommandTypeOmailmerge.command = "추가"Omailmerge.outputtype = 2 " http://api.openoffice.org/docs/common/ref/com/sun/star/text/MailMerge.html#OutputTypeoMailMerge.execute(Array())

    3. 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]() {})
      
    4. 동일하지만 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
      

다른 팁

당신은 살펴 봐야합니다 아파치 오픈오피스 API.Open Office용 API를 만들기 위한 프로젝트입니다.그들이 지원한다고 말한 몇 가지 언어는 다음과 같습니다.C++, 자바, Python, CLI, StarBasic, JavaScript 및 OLE.

OpenOffice의 메일 병합에 대한 Java 예.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top