phpoffice/common
PHPOffice Common provides shared utility classes for PHPOffice projects, including XML helpers, drawing and font handling, file utilities, and compatibility code. It supports libraries such as PhpSpreadsheet and PHPWord.
phpoffice/common is the low-level foundation that PhpSpreadsheet and PHPWord sit on (OLE compound-document reading, XML writer/reader helpers, drawing primitives). It is almost never a direct dependency decision — it's a decision you inherit when you approve PhpSpreadsheet/PHPWord. Treat it as part of the "document processing" line item, not a separate vendor evaluation.OLEWrite. Until now the package could only read OLE2 compound documents (the container format behind legacy .xls, .doc, .ppt, .msg, .msi). 1.1.0 adds the write counterpart. This is the first genuinely product-relevant change in the 1.0.x → 1.1.0 line and opens up workflows that previously required a commercial library or hand-rolled binary assembly: generating legacy-format containers, embedding/attaching streams into OLE documents, templating .xls/.msg-style files. Scope it as an experiment, not a committed roadmap item — it is brand new in this release with no track record..msg generation, or embedded-object support, OLEWrite is now a plausible low-cost path worth a spike (1-2 dev days) before you price out Aspose or similar.vendor/ or if you ship a fork. It is a credibility data point when justifying "keep using the OSS stack" over a commercial license.composer update; 1.1.0 is additive with no breaking changes, no deprecations, and no version-constraint changes..msg/.msi-like files, or assembling a binary Office container yourself.OLEWrite specifically when a legacy-format export requirement exists and you want to avoid a commercial license. Set an explicit evaluation gate: does it round-trip against real files, does it handle your target consumer (Excel 2003, Outlook, a third-party parser), and what is the fallback if the maintainers change direction? Newly landed code in a low-velocity library deserves that scrutiny..xlsx, .docx, .pptx, CSV, PDF) — this library is not the entry point; use PhpSpreadsheet/PHPWord directly.OLEWrite has no maturity history yet; benchmark before committing.For executives (one paragraph): The PHPOffice stack is the free, open-source engine we use to read and write Office documents. Its foundational library, phpoffice/common, just shipped 1.1.0 — a small, non-breaking release that (a) adds the ability to write legacy Microsoft compound-document files, not just read them, and (b) confirms the stack runs on PHP 8.5, the next PHP version we'll be upgrading to. Two consequences: we have a low-cost option for legacy .xls/.msg-style export requests that we'd otherwise license commercially, and the PHP 8.5 upgrade has one less blocker. No migration work, no licensing cost, no action required beyond a routine dependency update. Risk is low; the write feature is new, so we'd validate it with a short spike before promising it to customers.
For engineering (short version): phpoffice/common 1.1.0 is additive — PHP 8.5 added to CI, PHPStan bumped to level 7 and allowed at 2.x, and a new OLEWrite class as the counterpart to OLERead. No breaking changes, no deprecations, no constraint changes. Safe to bump. If you touch OLEWrite, note it's fresh code with a single contributor and no test history beyond this release — wrap it behind an interface and keep OLERead-only paths untouched.
How can I help you explore Laravel packages today?