Skip to content

SVG Rendering

SheetKit은 워크시트를 SVG로 렌더링하여 시각적 미리보기, 썸네일, 또는 웹 애플리케이션 임베딩에 활용할 수 있습니다. 렌더러는 워크시트의 셀 값, 스타일, 레이아웃으로부터 자체 완결형 SVG 문자열을 생성합니다.

기본 사용법

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

renderToSvg 메서드는 JsRenderOptions 객체를 인수로 받습니다:

OptionTypeDefaultDescription
sheetNamestring필수렌더링할 시트 이름입니다.
rangestring | nullnull렌더링할 셀 범위입니다 (예: "A1:F20"). 생략하면 사용된 범위를 렌더링합니다.
showGridlinesboolean | nulltrue셀 사이에 격자선을 그릴지 여부입니다.
showHeadersboolean | nulltrue행/열 헤더(A, B, 1, 2)를 그릴지 여부입니다.
scalenumber | null1.0출력 배율입니다 (2.0 = 2배 크기).
defaultFontFamilystring | null"Arial"셀 텍스트의 기본 폰트 패밀리입니다.
defaultFontSizenumber | null11.0기본 폰트 크기(포인트)입니다.

부분 범위 렌더링

시트의 특정 영역만 렌더링할 수 있습니다:

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

시각적 출력 제어

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

Rust API는 Workbook::render_to_svg 메서드를 통해 사용할 수 있습니다:

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();

하위 레벨의 render::render_to_svg 함수도 WorksheetXml, SharedStringTable, StyleSheet 참조를 직접 사용하여 호출할 수 있습니다.

지원 기능

SVG 렌더러는 다음과 같은 시각적 기능을 지원합니다:

  • 셀 텍스트 값 (문자열, 숫자, 불리언, 날짜, 수식 캐시 결과)
  • 열 너비 및 행 높이 (명시적 설정 및 기본값)
  • 폰트 스타일: 굵게, 기울임, 밑줄, 취소선, 글꼴 색상, 글꼴 이름, 글꼴 크기
  • 셀 채우기 색상 (단색 패턴 채우기)
  • 셀 테두리 (좌, 우, 상, 하) - 선 스타일 및 색상 포함
  • 텍스트 정렬 (수평: 왼쪽, 가운데, 오른쪽; 수직: 위, 가운데, 아래)
  • 행/열 헤더 (배경 음영 포함)
  • 격자선 (표시 여부 설정 가능)
  • 출력 크기 배율 조정
  • 부분 범위 렌더링

알려진 제한 사항

다음 기능은 아직 렌더러에서 지원되지 않습니다:

  • 병합된 셀 (개별 셀로 렌더링됩니다)
  • 조건부 서식 (SVG에 색상이 적용되지 않습니다)
  • 이미지 및 차트
  • Rich text (셀 내 개별 서식 적용)
  • 그래디언트 채우기
  • Theme 및 indexed 색상 해석 (검은색으로 대체됩니다)
  • 숫자 서식 표시 (원시 값이 표시됩니다)
  • 텍스트 줄바꿈 및 오버플로우
  • 대각선 테두리
  • 숨겨진 행 및 열
  • 개요/그룹 접기

MIT / Apache-2.0 라이선스로 배포됩니다.