Skip to content

SVG Rendering

SheetKit can render a worksheet to SVG for visual preview, thumbnails, or embedding in web applications. The renderer produces a self-contained SVG string from the worksheet's cell values, styles, and layout.

Basic Usage

typescript
import { Workbook } from 'sheetkit';

const wb = Workbook.openSync('report.xlsx');
const svg = wb.renderToSvg({ sheetName: 'Sheet1' });

// Write to file
import { writeFileSync } from 'node:fs';
writeFileSync('preview.svg', svg);

Render Options

The renderToSvg method accepts a JsRenderOptions object:

OptionTypeDefaultDescription
sheetNamestringrequiredName of the sheet to render.
rangestring | nullnullCell range to render (e.g. "A1:F20"). Omit to render the used range.
showGridlinesboolean | nulltrueWhether to draw gridlines between cells.
showHeadersboolean | nulltrueWhether to draw row/column headers (A, B, 1, 2).
scalenumber | null1.0Scale factor (2.0 = double size).
defaultFontFamilystring | null"Arial"Default font family for cell text.
defaultFontSizenumber | null11.0Default font size in points.

Rendering a Sub-Range

Render only a specific area of the sheet:

typescript
const svg = wb.renderToSvg({
  sheetName: 'Sheet1',
  range: 'A1:D10',
});

Controlling Visual Output

typescript
// Minimal rendering without headers or gridlines
const svg = wb.renderToSvg({
  sheetName: 'Sheet1',
  showGridlines: false,
  showHeaders: false,
});

// High-resolution rendering (2x scale)
const svg2x = wb.renderToSvg({
  sheetName: 'Sheet1',
  scale: 2,
});

Rust API

The Rust API is available through the Workbook::render_to_svg method:

rust
use sheetkit::Workbook;
use sheetkit::RenderOptions;

let wb = Workbook::open("report.xlsx").unwrap();
let svg = wb.render_to_svg(&RenderOptions {
    sheet_name: "Sheet1".to_string(),
    ..RenderOptions::default()
}).unwrap();

The lower-level render::render_to_svg function is also available for direct use with WorksheetXml, SharedStringTable, and StyleSheet references.

Supported Features

The SVG renderer supports the following visual features:

  • Cell text values (string, number, boolean, date, formula cached results)
  • Column widths and row heights (explicit and defaults)
  • Font styles: bold, italic, underline, strikethrough, font color, font name, font size
  • Cell fill colors (solid pattern fills)
  • Cell borders (left, right, top, bottom) with line style and color
  • Text alignment (horizontal: left, center, right; vertical: top, center, bottom)
  • Row and column headers with background shading
  • Gridlines with configurable visibility
  • Scale factor for output dimensions
  • Sub-range rendering

Known Limitations

The following features are not yet supported by the renderer:

  • Merged cells (rendered as individual cells)
  • Conditional formatting (colors not applied in SVG)
  • Images and charts
  • Rich text (individual run formatting within a cell)
  • Gradient fills
  • Theme and indexed color resolution (defaults to black)
  • Number format display (raw values shown)
  • Text wrapping and overflow
  • Diagonal borders
  • Hidden rows and columns
  • Outline/group collapse

Released under the MIT / Apache-2.0 License.