# How to Generate an HTML Preview of a Document with OfficeCLI: Complete Guide

> Learn to generate an HTML preview of your documents with OfficeCLI. Easily convert Word, Excel, and PowerPoint files to portable HTML for offline viewing.

- Repository: [OfficeAI/OfficeCLI](https://github.com/iofficeai/OfficeCLI)
- Tags: how-to-guide
- Published: 2026-07-09

---

**OfficeCLI's `view` sub-command renders PowerPoint, Word, and Excel files as self-contained HTML documents using the `html` mode, embedding all images as base-64 data URIs for portable offline viewing.**

The iOfficeAI/OfficeCLI repository provides a cross-platform command-line tool for converting Office documents into browser-ready HTML snapshots. By invoking the `view` sub-command with the `html` mode parameter, you can generate standalone previews of `.pptx`, `.docx`, and `.xlsx` files that require no external dependencies or internet connectivity to display.

## How the HTML Preview Architecture Works

When you execute `officecli view`, the command parsing logic in [`CommandBuilder.View.cs`](https://github.com/iOfficeAI/OfficeCLI/blob/main/CommandBuilder.View.cs) creates the view command and validates the `html` mode option. The `SetAction` block extracts arguments, instantiates a `DocumentHandler` via `DocumentHandlerFactory.Open`, and dispatches to format-specific handlers based on file extension.

Each document type implements a dedicated preview class:

- **PowerPoint** – `PowerPointHandler.ViewAsHtml` in [`PowerPointHandler.HtmlPreview.cs`](https://github.com/iOfficeAI/OfficeCLI/blob/main/PowerPointHandler.HtmlPreview.cs) builds absolutely-positioned slide divs with embedded resources
- **Word** – `WordHandler.HtmlPreview` in [`WordHandler.HtmlPreview.cs`](https://github.com/iOfficeAI/OfficeCLI/blob/main/WordHandler.HtmlPreview.cs) renders paragraphs, tables, and shapes
- **Excel** – `ExcelHandler.HtmlPreview` in [`ExcelHandler.HtmlPreview.cs`](https://github.com/iOfficeAI/OfficeCLI/blob/main/ExcelHandler.HtmlPreview.cs) generates scrollable worksheet grids

These methods assemble a complete HTML5 skeleton, inject document-wide CSS variables, and call helper methods such as `RenderSlideElements`, `RenderLayoutPlaceholders`, and `RenderSpeakerNotes`. Styling and scripting come from [`Resources/preview.css`](https://github.com/iOfficeAI/OfficeCLI/blob/main/Resources/preview.css) and [`Resources/preview.js`](https://github.com/iOfficeAI/OfficeCLI/blob/main/Resources/preview.js), declared as `<EmbeddedResource>` entries in `officecli.csproj` to ensure the output remains self-contained.

## Document-Specific HTML Generation

### PowerPoint (.pptx) Previews

The `PowerPointHandler.ViewAsHtml` method constructs a full HTML page where each slide becomes an absolutely-positioned `<div>`. All images are inlined as base-64 data URIs via `LoadEmbeddedResource`, eliminating external file references. The output includes a thumbnail sidebar navigation panel and supports KaTeX math rendering with CDN fallbacks for equation display.

### Word (.docx) Previews

Implemented in [`WordHandler.HtmlPreview.cs`](https://github.com/iOfficeAI/OfficeCLI/blob/main/WordHandler.HtmlPreview.cs), the Word handler generates semantic HTML containing body paragraphs, tables, shapes, and speaker notes. The renderer preserves document structure while ensuring all visual elements remain embedded within the single HTML file for easy sharing.

### Excel (.xlsx) Previews

The `ExcelHandler.HtmlPreview` method renders each worksheet as a scrollable CSS grid of cells, preserving formatting, cell merges, and embedded charts as base-64 images. The handler processes worksheet dimensions to create responsive tables that maintain the original layout.

## Command-Line Usage Examples

Generate a preview to standard output:

```bash
officecli view report.docx html

```

Write to a file and automatically open in the default browser:

```bash
officecli view presentation.pptx html --out report.html --browser

```

Render only specific slides (PowerPoint):

```bash
officecli view deck.pptx html --page 3-5

```

Render a specific cell range (Excel):

```bash
officecli view data.xlsx html --range Sheet1!A1:C10

```

## Programmatic HTML Generation

You can generate previews directly from C# without invoking the CLI process:

```csharp
using OfficeCli;
using OfficeCli.Handlers;

// Open the document
using var handler = DocumentHandlerFactory.Open("myfile.pptx");

// Generate HTML preview
string html = (handler as PowerPointHandler)!.ViewAsHtml(startSlide: 1, endSlide: null);

// Save to file
File.WriteAllText("preview.html", html);

```

This approach gives you full control over parameters such as slide ranges, output encoding, and post-processing while leveraging the same rendering engine used by the command-line interface.

## Summary

- OfficeCLI implements HTML preview generation through the `view` sub-command with `html` mode, parsed in [`CommandBuilder.View.cs`](https://github.com/iOfficeAI/OfficeCLI/blob/main/CommandBuilder.View.cs)
- Each format uses dedicated handlers located in [`PowerPointHandler.HtmlPreview.cs`](https://github.com/iOfficeAI/OfficeCLI/blob/main/PowerPointHandler.HtmlPreview.cs), [`WordHandler.HtmlPreview.cs`](https://github.com/iOfficeAI/OfficeCLI/blob/main/WordHandler.HtmlPreview.cs), and [`ExcelHandler.HtmlPreview.cs`](https://github.com/iOfficeAI/OfficeCLI/blob/main/ExcelHandler.HtmlPreview.cs)
- Output is fully self-contained with base-64 embedded images and CSS from [`Resources/preview.css`](https://github.com/iOfficeAI/OfficeCLI/blob/main/Resources/preview.css) and [`Resources/preview.js`](https://github.com/iOfficeAI/OfficeCLI/blob/main/Resources/preview.js)
- Use `--out` to specify a file path or omit to stream to stdout; `--browser` opens the result using `ProcessStartInfo.UseShellExecute`
- The architecture supports both CLI invocation and direct C# integration via `DocumentHandlerFactory`

## Frequently Asked Questions

### What Office document formats support HTML preview generation?

OfficeCLI supports HTML preview generation for PowerPoint (.pptx), Word (.docx), and Excel (.xlsx) files. According to the source code in the iOfficeAI/OfficeCLI repository, each format uses a specialized handler class—`PowerPointHandler`, `WordHandler`, and `ExcelHandler`—that renders document-specific elements into responsive HTML layouts while maintaining formatting fidelity.

### Does the generated HTML require an internet connection to display properly?

No. The HTML previews are designed to be self-contained and work offline. All images are embedded as base-64 data URIs, and the CSS and JavaScript resources are loaded from embedded assembly resources declared in `officecli.csproj`. While KaTeX math rendering includes CDN fallbacks for performance optimization, the core preview functionality remains fully operational without network access.

### How do I generate a preview for only specific slides or cell ranges?

For PowerPoint presentations, append the `--page` option to specify slide ranges (e.g., `--page 3-5`). For Excel workbooks, use the `--range` option with standard worksheet syntax (e.g., `--range Sheet1!A1:C10`). These parameters are processed by the respective document handlers before the HTML generation phase begins, ensuring only the requested content is rendered in the output.

### Can I integrate OfficeCLI HTML generation into my own .NET application?

Yes. You can reference the OfficeCLI libraries and use `DocumentHandlerFactory.Open()` to create a handler instance, then cast it to the appropriate type—such as `PowerPointHandler`—and invoke `ViewAsHtml()` with optional parameters for slide ranges or formatting options. This programmatic approach provides the same rendering capabilities as the CLI without spawning external processes.