Direct Office

Direct Office

Delphi Open XML library for processing .docx, .pptx and .xlsx documents.
  • create or modify Word Document .docx files
  • create or modify PowerPoint Presentation .pptx files
  • create or modify Excel Workbook .xlsx files
  • Microsoft Office installation is not required
  • uses Microsoft Open XML SDK 2.12.1
  • support Windows 32 and Windows 64
  • available for Delphi 7 - 10.4
  • royalty free distribution in applications

Download and order

Order Direct Office library $120,- USD (license for one developer)
Order Direct Office multilicense $360,- USD (license for all developers in company)
Order Direct Office year upgrades $60,- USD (registered users only)
Order Direct Office year upgrades multilicense $180,- USD (registered multilicense users only)


How can I convert example written in C# language?
We can offer you custom software development service to convert or develop code for Direct Office. Our hourly rate is $80,- USD.

How can I set document properties?
Spreadsheet.PackageProperties_.Title := 'MyTitle';
How can I create custom document property?
CustomProperty: _CustomDocumentProperty;
CustomProperties: _CustomFilePropertiesPart;

CustomProperty := CoCustomDocumentProperty.Create;
CustomProperty.FormatId := CoStringValueClass.Create.Value('{D5CDD505-2E9C-101B-9397-08002B2CF9AE}');
CustomProperty.Name := CoStringValueClass.Create.Value('MyName');
CustomProperty.VTInt32 := CoVTInt32.Create;
CustomProperty.VTInt32.Text := '123';
CustomProperty.PropertyId := CoInt32ValueClass.Create.Value(2);
CustomProperties := Spreadsheet.AddCustomFilePropertiesPart;
CustomProperties.Properties := CoDocumentFormat_OpenXml_CustomProperties_Properties.Create;
CustomProperties.Properties.AppendChild(CustomProperty as _OpenXmlElement);
How can I solve "Class not registered." error message?
  • Create manifest file yourapplicationname.exe.manifest (change yourapplicationname accordingly to the name of your application):
  • <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity version="" processorArchitecture="*" name="yourapplicationname" type="*"/>
          <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version=""
            publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
          <assemblyIdentity name="Winsoft.DirectOffice" version="" publicKeyToken="8fb06cb64d019a17" processorArchitecture="msil"/>
  • Embed yourapplicationname.exe.manifest file to your application: Select Delphi menu Project/Options.../Application. Change Manifest File combobox to Custom and select yourapplicationname.exe.manifest file in Custom manifest edit box.
  • Instead of embedding yourapplicationname.exe.manifest file to your application, you can comment "{$R *.res}" line in yourapplicationname.dpr file and use external yourapplicationname.exe.manifest file:
  • // {$R *.res}

Related links