How to Automate Office Tasks with OfficeCLI: Programmatic Control Over Word, Excel, and PowerPoint

OfficeCLI is a self-contained, cross-platform command-line tool that provides full programmatic control over Microsoft Word, Excel, and PowerPoint files without requiring Office installation or external dependencies.

OfficeCLI, developed by iOfficeAI, is an open-source automation framework designed to help developers and AI agents programmatically manipulate Office documents. Whether you need to generate reports, batch-edit spreadsheets, or create presentations, this single-binary solution enables you to automate office tasks through a consistent command-line interface that returns deterministic JSON output.

Three-Layer Architecture for Office Automation

OfficeCLI exposes functionality through three distinct layers, each implemented in specific CommandBuilder classes within the src/officecli/ directory.

L1 Read Layer: Semantic Document Views

The L1 Read layer provides high-level, read-only access to document content. Implemented in CommandBuilder.View.cs and CommandBuilder.GetQuery.cs, this layer supports commands like view html and view outline that convert documents into formats AI agents can process. For example, officecli view report.docx html generates semantic HTML output, while the built-in rendering pipeline converts documents to PNG screenshots for visual verification.

L2 DOM Layer: Structured Element Operations

The L2 DOM layer treats Office documents as manipulable object models. Files like CommandBuilder.Add.cs, CommandBuilder.Set.cs, and CommandBuilder.Remove.cs implement CRUD operations via XPath-like paths. You can add slides to PowerPoint, set cell values in Excel, or remove paragraphs from Word using commands such as officecli add deck.pptx / --type slide --prop title="Q4 Report".

L3 Raw XML Layer: Direct XML Manipulation

For edge cases requiring precise control, the L3 Raw XML layer in CommandBuilder.Raw.cs allows direct XPath manipulation of the underlying Open XML. This enables operations like officecli raw-set report.docx document --xpath "//w:p[1]" --action append --xml "<w:r><w:t>Note</w:t></w:r>" for low-level document surgery.

Key Features That Enable Automation

Single-Binary Distribution

Unlike traditional Office automation solutions, OfficeCLI bundles the .NET runtime inside its compiled executable. As defined in officecli.csproj, this design eliminates dependencies on installed Office suites or separate runtime installations, making deployment trivial on CI/CD pipelines and containerized environments.

Built-in Rendering Engine

The CommandBuilder.View.cs implementation includes an internal HTML-to-PNG pipeline that renders .docx, .xlsx, and .pptx files. This allows AI agents to "see" document output programmatically, enabling visual validation steps in automated workflows.

MCP Server Integration

File CommandBuilder.Mcp.cs implements a Model Context Protocol (MCP) server that exposes every OfficeCLI command as JSON-RPC endpoints. This allows AI agents to invoke document operations without shell access, facilitating secure integration with agent frameworks.

Language SDKs

Thin bindings in sdk/python/officecli.py and sdk/node/index.js communicate with the resident binary via named pipes. These wrappers provide idiomatic Python and JavaScript APIs while maintaining the full command set available in the CLI.

Automating Office Tasks: Practical Examples

Creating PowerPoint Presentations Programmatically

Generate complete presentations from templates or scratch:


# Create a new deck

officecli create deck.pptx

# Add a titled slide

officecli add deck.pptx / --type slide --prop title="Q4 Report"

# Insert a formatted shape with metrics

officecli add deck.pptx '/slide[1]' --type shape \
  --prop text="Revenue ↑ 25%" --prop x=2cm --prop y=5cm \
  --prop font=Arial --prop size=24 --prop color=#00FF00

# Generate HTML preview for AI verification

officecli view deck.pptx html -o /tmp/deck.html

Batch Editing Excel Workbooks

Process multiple cell updates atomically using the batch command defined in CommandBuilder.Batch.cs:

cat > updates.json <<EOF
[
  {"command":"set","path":"/Sheet1/A2","props":{"value":12345}},
  {"command":"set","path":"/Sheet1/B2","props":{"value":"=A2*0.1"}}
]
EOF

officecli batch budget.xlsx --input updates.json --json

Python SDK Implementation

The sdk/python/officecli.py wrapper provides context-manager-based document handling:

from officecli import Doc

with Doc("deck.pptx") as d:
    d.add("/", type="slide", title="Q4 Report")
    d.add("/slide[1]", type="shape", text="Revenue ↑ 25%", 
          x="2cm", y="5cm", font="Arial", size=24, color="#00FF00")
    print(d.get("/slide[1]/shape[1]"))

Node.js SDK Implementation

For JavaScript environments, sdk/node/index.js offers async/await patterns:

import { Doc } from "@officecli/sdk";

await using d = await Doc.open("deck.pptx");
await d.add("/", { type: "slide", title: "Q4 Report" });
await d.add("/slide[1]", {
  type: "shape",
  text: "Revenue ↑ 25%",
  x: "2cm",
  y: "5cm",
  font: "Arial",
  size: 24,
  color: "#00FF00"
});
console.log(await d.get("/slide[1]/shape[1]"));

Summary

  • OfficeCLI is a cross-platform, single-binary tool for automating Word, Excel, and PowerPoint without Office installation.
  • The three-layer architecture (L1 Read, L2 DOM, L3 Raw XML) provides flexibility from high-level semantic views to low-level XML manipulation.
  • CommandBuilder classes (CommandBuilder.Add.cs, CommandBuilder.Set.cs, CommandBuilder.Raw.cs, etc.) implement specific automation domains.
  • Batch processing via CommandBuilder.Batch.cs enables atomic multi-operation updates with JSON output.
  • MCP server support (CommandBuilder.Mcp.cs) allows AI agents to integrate via JSON-RPC.
  • Language SDKs for Python and Node.js provide idiomatic interfaces while leveraging the core binary.

Frequently Asked Questions

Can OfficeCLI automate office tasks without Microsoft Office installed?

Yes. OfficeCLI is a self-contained binary that bundles the .NET runtime internally, as configured in officecli.csproj. It operates directly on Open XML files without requiring any Microsoft Office installation or COM interop, making it ideal for serverless environments and containers.

How does OfficeCLI handle complex batch operations?

The officecli batch command, implemented in CommandBuilder.Batch.cs, accepts JSON files containing multiple commands and executes them atomically. This allows you to update hundreds of cells, add multiple slides, or modify document structures in a single transaction with deterministic JSON output for error handling.

What programming languages can I use with OfficeCLI?

While the core tool is a CLI binary, official SDKs are available for Python (sdk/python/officecli.py) and Node.js (sdk/node/index.js). These communicate via named pipes to the resident binary, exposing the full command set through idiomatic APIs. Any language capable of shell execution can also invoke the CLI directly and parse the --json results.

Is OfficeCLI suitable for AI agent integration?

Absolutely. OfficeCLI was designed specifically for AI automation, featuring an MCP server (CommandBuilder.Mcp.cs) that exposes commands as JSON-RPC endpoints, HTML rendering for visual feedback, and deterministic JSON output (--json flag) that agents can parse to verify operations and implement retry logic.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →