You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi开发中如何使用Microsoft Open XML Word SDK?

在Delphi中调用Microsoft Open XML SDK API的方法

Microsoft Open XML SDK是.NET平台下的类库,Delphi作为原生Windows开发环境,主要通过以下几种方式调用其API:

1. 封装.NET类为COM组件

这是最常用的兼容方案,适用于所有Delphi版本:

  • 先安装Microsoft Open XML SDK(推荐2.8.1及以上版本)和Visual Studio。
  • 创建一个.NET类库项目,添加对DocumentFormat.OpenXml和WindowsBase程序集的引用。
  • 编写包装类,将Open XML SDK的核心功能(比如创建Word文档、读取Excel内容)封装为COM可见的方法——需在类和方法上标记[ComVisible(true)],为类指定唯一GUID,建议让类继承MarshalByRefObject或定义COM接口。
  • 编译项目后,以管理员身份运行regasm.exe注册生成的DLL,命令示例:
    regasm.exe YourOpenXmlWrapper.dll /codebase
    
  • 在Delphi中导入该COM组件:通过Component > Import Component > Import a Type Library,找到已注册的组件并导入,生成对应的.pas单元。
  • 调用示例(以创建Word文档为例):
    uses
      YourOpenXmlWrapperUnit;
    
    procedure TMainForm.btnCreateDocClick(Sender: TObject);
    var
      DocWrapper: IWordDocumentWrapper;
    begin
      DocWrapper := CoWordDocumentWrapper.Create;
      DocWrapper.CreateBlankDocument('D:\Sample.docx', 'Hello from Delphi');
    end;
    

2. 直接使用Delphi .NET版本调用

如果你使用的是支持.NET的Delphi变体(如Delphi Prism),可以直接引用SDK程序集:

  • 在项目中添加对DocumentFormat.OpenXml.dll和WindowsBase.dll的引用。
  • 直接编写代码调用SDK原生API,示例:
    uses
      DocumentFormat.OpenXml.Packaging, DocumentFormat.OpenXml.Wordprocessing;
    
    procedure CreateSampleWordDoc(const FilePath: string);
    var
      WordDoc: WordprocessingDocument;
      MainPart: MainDocumentPart;
      Doc: Document;
      DocBody: Body;
      Para: Paragraph;
      TextRun: Run;
      DocText: Text;
    begin
      // 创建新的Word文档
      WordDoc := WordprocessingDocument.Create(FilePath, WordprocessingDocumentType.Document);
      try
        MainPart := WordDoc.AddMainDocumentPart;
        MainPart.Document := Document.Create();
        DocBody := Body.Create();
        MainPart.Document.AppendChild(DocBody);
    
        // 添加段落和文本
        Para := Paragraph.Create();
        DocBody.AppendChild(Para);
        TextRun := Run.Create();
        Para.AppendChild(TextRun);
        DocText := Text.Create('Hello from Delphi .NET with Open XML SDK');
        TextRun.AppendChild(DocText);
      finally
        WordDoc.Close();
      end;
    end;
    

3. 使用Delphi原生替代库

若不想依赖.NET环境,可以选择Delphi原生的Open XML处理库,比如Aspose.Words for Delphi、TXTextControl,或者开源的OpenXMLDelphi项目,这些库无需.NET支持,直接在Delphi中调用即可实现类似功能。

内容的提问来源于stack exchange,提问作者hikari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:35:23