npm.io
0.10.7 • Published 19h agoCLI

office-open

Licence
MIT
Version
0.10.7
Deps
7
Size
125 kB
Vulns
0
Weekly
528
Stars
4

office-open

npm version npm downloads npm license

Umbrella package for Office Open XML — all packages, CLI, AI SDK tools, and Zod schemas in one install.

Features

  • Unified Re-exports — Import from office-open/docx, office-open/pptx, office-open/xlsx
  • CLI — Generate files from JSON via npx office-open
  • AI SDK Tools — Vercel AI SDK compatible tools for generate-docx, generate-pptx, generate-xlsx
  • Zod Schemas — Input validation for all document types
  • Generate Function — Type-agnostic generate() for dynamic document creation

Installation

# pnpm
pnpm add office-open

# npm
npm install office-open

# yarn
yarn add office-open

# bun
bun add office-open

Quick Start

Generate from JSON
import { generate, generateToFile } from "office-open/generate";

const buffer = await generate({
  type: "docx",
  options: {
    sections: [
      {
        children: [{ paragraph: "Hello World" }],
      },
    ],
  },
  outputType: "nodebuffer",
});
CLI
# Generate from a JSON file
npx office-open docx document.json "output.docx"
npx office-open pptx slides.json "output.pptx"
npx office-open xlsx spreadsheet.json "output.xlsx"
AI SDK Tools
import { officeOpenTools } from "office-open/ai";

// Use with Vercel AI SDK
const result = await generateText({
  model,
  tools: officeOpenTools,
  prompt: "Create a sales report as a .docx file",
});
Zod Schemas
import { validateDocumentInput } from "office-open/schemas";

try {
  const validated = validateDocumentInput("docx", userInput);
} catch (e) {
  // Structured validation error with path and message
}
Import from Sub-Packages
import { generateDocument, parseDocument, patchDocument } from "office-open/docx";
import { generatePresentation, parsePresentation, patchPresentation } from "office-open/pptx";
import { generateWorkbook, parseWorkbook, patchWorkbook } from "office-open/xlsx";
import { convertInchesToTwip } from "office-open/core";
import { xml2js, js2xml } from "office-open/xml";

Sub-Exports

Export Path Description
office-open Main entry (re-exports all sub-packages)
office-open/docx @office-open/docx
office-open/pptx @office-open/pptx
office-open/xlsx @office-open/xlsx
office-open/core @office-open/core
office-open/xml @office-open/xml
office-open/generate generate() function
office-open/ai Vercel AI SDK tools
office-open/schemas Zod validation schemas

JSON Document Structures

DOCX
{
  "sections": [{ "children": [{ "paragraph": "Hello World" }] }]
}
PPTX
{
  "title": "My Deck",
  "slides": [{ "children": [{ "shape": { "textBody": { "text": "Hello" } } }] }]
}
XLSX
{
  "worksheets": [{ "rows": [{ "cells": [{ "value": "Name" }, { "value": 95 }] }] }]
}

License

MIT

Keywords