Library / SDK
EvotecIT/OfficeIMO avatar
EvotecIT/OfficeIMO

OfficeIMO: COM-free .NET document libraries, and where the boundary sits

MIT-licensed, COM-free .NET libraries for creating, reading, editing, converting, rendering, and extracting Office, PDF, email, OneNote, and text formats.

547 stars75 forksC#MIT

At a glance

What is it?
OfficeIMO is an MIT-licensed family of .NET packages that read, write and convert Office, PDF, email and text formats without installing Office or LibreOffice. The dependency table in its README is the most useful thing in it, because it tells you which formats are first-party engines and which lean on Open XML SDK, AngleSharp or Bouncy Castle.
Who is it for?
Adopt OfficeIMO when you need document generation or extraction in a container, a build agent or a service host where installing Office is not an option, and when you are willing to keep every OfficeIMO package on one coordinated version. Do not adopt it expecting a single facade over unrelated libraries, or expecting converters to preserve every construct from a source format.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C#, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem is Office automation without an Office install

The README opens with the constraint that shapes everything else: OfficeIMO runs in services, desktop applications, build agents, containers and automation hosts without Microsoft Office, Excel, PowerPoint, Visio or LibreOffice automation. Anyone who has tried to generate a DOCX or read a PST file on a Linux build agent knows why that matters. The usual answer is to install a headless office suite and drive it, which turns a library dependency into an operating-system dependency.

The audience is therefore .NET developers who produce or consume documents programmatically and cannot assume a desktop. Report generators, migration tooling, archive extraction pipelines and RAG ingestion jobs all fit. The project is explicitly not a thin wrapper around a set of unrelated libraries; the README states that OfficeIMO owns its OneNote, PDF, Markdown, RTF, OpenDocument, AsciiDoc, LaTeX, OPML, DocBook, CSV, EPUB, ZIP, drawing, Apple iWork, and legacy Word, Excel and PowerPoint implementations. That claim is the thing worth checking against the dependency table before you commit to it.

First-party engines versus borrowed ones, package by package

The dependency table splits the family into tiers, and the split is the most decision-relevant content in the repository. Drawing, OneNote, Markdown, RTF, OpenDocument, AsciiDoc, LaTeX, OPML, DocBook, CSV, EPUB and ZIP list no third-party document engine at all. Apple iWork source reading is also first-party, covering a bounded package format plus Snappy, IWA, protobuf envelopes, record preservation and Pages, Numbers and Keynote projection.

Word, Excel and PowerPoint sit on the Open XML SDK for package mechanics, with OfficeIMO supplying the fluent and editable object models, lifecycle, validation, conversions, managed image export and first-party support for the legacy .doc, .xls and .ppt formats. HTML depends on AngleSharp and AngleSharp.Css for DOM and CSS parsing, and the package adds resource policy, media filtering, a layout scene, and PNG, JPEG, TIFF, SVG and WebP output, with opt-in bridges for RTF, MHTML, email-image and PDF workflows. PDF is listed as having no third-party PDF or cryptographic dependency. Email, email stores and address books take only System.Text.Encoding.CodePages and cover EML/MIME, MSG/OFT, TNEF, mbox, PST/OST, OLM, EMLX, Outlook OAB, MAPI projection and protected-wrapper preservation.

The optional pieces are where the dependency surface widens. A security provider pulls in Bouncy Castle and System.Security.Cryptography.Xml for CMS, S/MIME, RFC 3161, X.509 and XML DSig orchestration, and the README says it is explicitly supplied to Word, PDF or Email rather than enabled by default. A ChartForgeX bridge is optional. Visio uses System.IO.Packaging. Reader.Yaml uses YamlDotNet. MarkdownRenderer.Wpf uses Microsoft WebView2, which is a rendering shell rather than a document engine. Document AI lives in OfficeIMO.AI with an IntelligenceX adapter, requires .NET 10, and is read-only. OCR providers are caller-supplied: an executable or an installed Tesseract CLI. Google Workspace packages use System.Text.Json plus platform HTTP and cryptography.

Converters compose object models and return diagnostics

The architecture described in the README is compositional rather than pipeline-based. Word, Excel and PowerPoint share the Open XML SDK for package mechanics, but the converters do not reimplement parsing per target. They compose the same first-party object models used by the native packages. When a target format cannot carry everything from the source, the converter returns diagnostics instead of silently dropping content.

That is a design choice with a cost. A converter that composes object models has to map every source construct onto a target construct, and some mappings do not exist. Diagnostics are the escape valve. The README describes result-bearing APIs that callers use when they need fidelity information, which means the failure mode is visible only if you read the result. Code that ignores the diagnostics will produce output that looks correct and is lossy in ways nobody notices until a downstream consumer complains about a missing table or a stripped style.

There is a second constraint in the same paragraph: applications should keep OfficeIMO packages on the same coordinated version. Because converters compose package-owned document models, mixing a newer converter with an older format package is the kind of mismatch the coordinated version rule exists to prevent. The release cadence visible in the repository is fast, with three releases in the first ten days of September 2026 alone, and the version strings encode a timestamp rather than a semantic version, so pinning is a deliberate act rather than a default.

Getting a document out of it

The README does not include a code sample, so the concrete starting points it does give are worth listing precisely. The primary distribution is NuGet under the OfficeIMO package family, and the README directs PowerShell users to PSWriteOffice rather than the C# packages. Applications upgrading an existing codebase are pointed at MIGRATION.md, which the README says covers package, API and behaviour changes across every format. Release history and downloadable artifacts are published through GitHub Releases.

For an optional feature, the path is a README inside the subdirectory: OfficeIMO.AI/README.md and OfficeIMO.AI.IntelligenceX/README.md. The AI path is constrained in ways the README states outright. It is read-only, it covers questions, summaries, field extraction and proposed structure with bounded source evidence, it requires .NET 10, and model execution is selected by the caller. If you are on an earlier target framework, that package is not available to you.

The security provider is also opt-in and explicitly supplied to Word, PDF or Email rather than being turned on by configuration. OCR follows the same pattern: the caller supplies an executable or has a Tesseract CLI installed. In both cases the README frames the boundary as a contract the caller owns, not a setting the library manages.

Where the dependency table bites

The honest limitation is not in the format list, which is unusually broad, but in what each package drags along. A project that only needs to write XLSX files is choosing the Open XML SDK as a transitive dependency, which is reasonable. A project that needs S/MIME signing is choosing Bouncy Castle, and the README is clear that this arrives only when a security provider is supplied. A project that needs YAML reading is choosing YamlDotNet. A project that needs the WPF markdown renderer is choosing WebView2, which is a browser runtime, not a document library.

The broader failure mode is scope. OfficeIMO covers Word, Excel, PowerPoint, Visio, OneNote, PDF, email stores, Apple iWork, HTML, Markdown, RTF, OpenDocument, AsciiDoc, LaTeX, OPML, DocBook, CSV, EPUB and ZIP. A library family that wide will have uneven depth. The README asserts first-party ownership of the OneNote, PDF, Markdown, RTF, OpenDocument, AsciiDoc, LaTeX, OPML, DocBook, CSV, EPUB and ZIP implementations, but it does not document per-format fidelity limits, and the diagnostics mechanism means those limits surface at conversion time rather than in a compatibility matrix. If your requirement is pixel-accurate reproduction of a complex Word document with embedded charts and tracked changes, the README gives you no basis to assume that works, and the presence of a ChartForgeX bridge for visual artifact conversion suggests the native path has boundaries.

The release cadence is a third consideration. Three releases in ten days, each stamped with a timestamp rather than a semantic version, means the project moves quickly and version-to-version behaviour changes are plausible. MIGRATION.md exists precisely because they happen.

Open XML SDK alone, and what changes

The obvious alternative for the Word, Excel and PowerPoint slice is the Open XML SDK by itself. OfficeIMO uses it for package mechanics, so the difference is not the file format layer. The difference is everything above it: fluent and editable object models, lifecycle handling, validation, conversion between formats, managed image export, and support for the legacy binary .doc, .xls and .ppt formats that the Open XML SDK does not address.

Choosing the Open XML SDK directly means writing your own object model, your own validation pass and your own image handling, and accepting that binary legacy formats are out of scope. That is a legitimate choice for a narrow generator that emits one document shape. It stops being legitimate the moment you need to read a .doc file, convert DOCX to PDF, or expose a stable API to application code that should not know about WordprocessingML element names.

The second alternative is the commercial document library category that the repository's own topics reference with an aspose-alternative tag. The README does not name a specific competitor or compare against one, so any claim about how OfficeIMO differs from a commercial suite beyond licensing would be speculation. What can be said from the material is that OfficeIMO is MIT-licensed, has no third-party PDF or cryptographic dependency in its PDF package, and publishes its dependency surface in a table. A commercial suite's dependency and licensing terms are a separate question you would need to answer from that vendor's own documentation.

Licence and the cost of keeping up

OfficeIMO is MIT-licensed. That covers the OfficeIMO code itself, and it permits commercial use, modification and redistribution under the usual MIT terms. It does not cover the third-party dependencies, which carry their own licences: Open XML SDK, AngleSharp and AngleSharp.Css, Bouncy Castle, YamlDotNet, WebView2, System.Text.Encoding.CodePages, System.IO.Packaging, System.Text.Json and YamlDotNet. If you enable the security provider, the Bouncy Castle licence is the one to read, and it differs from MIT. This is a description of the dependency surface, not legal advice; check each licence against your distribution model.

The maintenance cost has two components that the README makes visible. The first is the coordinated version rule. Because converters compose package-owned document models, you upgrade the whole OfficeIMO set together or not at all, which means a fix in one format package can require revalidating every other format you use. The second is MIGRATION.md. Its existence is a signal that package, API and behaviour changes across formats are a recurring event, not a one-time transition. Budget for reading it on each upgrade rather than treating it as a document you consult once.

Sponsorship is requested through GitHub Sponsors or PayPal, and the README notes that PowerShell users should start with PSWriteOffice. Neither affects the licence terms.

Editorial conclusion

Adopt OfficeIMO when you need document generation or extraction in a container, a build agent or a service host where installing Office is not an option, and when you are willing to keep every OfficeIMO package on one coordinated version. Do not adopt it expecting a single facade over unrelated libraries, or expecting converters to preserve every construct from a source format. Before committing, read the dependency table in the README and confirm that the package you need does not pull in Bouncy Castle, YamlDotNet or WebView2, then check MIGRATION.md for the API and behaviour changes that landed between your current version and the release you intend to pin.

Official sources

  1. EvotecIT/OfficeIMO on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community notes

Community notes