Skip to content

7. 스타일

셀의 폰트, 채우기, 테두리, 정렬, 숫자 서식 및 보호 설정을 다룹니다. 스타일은 먼저 add_style로 등록한 후 셀에 적용하는 2단계 방식입니다. 동일한 스타일은 자동으로 중복 제거됩니다.

add_style(style) / addStyle(style)

스타일을 등록하고 스타일 ID를 반환합니다.

Rust:

rust
use sheetkit::style::*;

let style = Style {
    font: Some(FontStyle {
        name: Some("Arial".into()),
        size: Some(14.0),
        bold: true,
        italic: false,
        underline: false,
        strikethrough: false,
        color: Some(StyleColor::Rgb("#FF0000".into())),
    }),
    fill: Some(FillStyle {
        pattern: PatternType::Solid,
        fg_color: Some(StyleColor::Rgb("#FFFF00".into())),
        bg_color: None,
    }),
    border: Some(BorderStyle {
        left: Some(BorderSideStyle {
            style: BorderLineStyle::Thin,
            color: Some(StyleColor::Rgb("#000000".into())),
        }),
        right: None,
        top: None,
        bottom: None,
        diagonal: None,
    }),
    alignment: Some(AlignmentStyle {
        horizontal: Some(HorizontalAlign::Center),
        vertical: Some(VerticalAlign::Center),
        wrap_text: true,
        text_rotation: None,
        indent: None,
        shrink_to_fit: false,
    }),
    num_fmt: Some(NumFmtStyle::Custom("#,##0.00".into())),
    protection: Some(ProtectionStyle {
        locked: true,
        hidden: false,
    }),
};
let style_id = wb.add_style(&style)?;

TypeScript:

typescript
const styleId = wb.addStyle({
    font: {
        name: "Arial",
        size: 14,
        bold: true,
        italic: false,
        underline: false,
        strikethrough: false,
        color: "#FF0000",
    },
    fill: {
        pattern: "solid",
        fgColor: "#FFFF00",
    },
    border: {
        left: { style: "thin", color: "#000000" },
    },
    alignment: {
        horizontal: "center",
        vertical: "center",
        wrapText: true,
    },
    customNumFmt: "#,##0.00",
    protection: {
        locked: true,
        hidden: false,
    },
});

set_cell_style / get_cell_style

셀에 스타일 ID를 적용하거나 조회합니다.

Rust:

rust
wb.set_cell_style("Sheet1", "A1", style_id)?;
let sid: Option<u32> = wb.get_cell_style("Sheet1", "A1")?;

TypeScript:

typescript
wb.setCellStyle("Sheet1", "A1", styleId);
const sid: number | null = wb.getCellStyle("Sheet1", "A1");

스타일 구성 요소 테이블

Font (폰트)

속성타입설명
namestring?폰트 이름 (예: "Calibri", "Arial")
sizef64? / number?폰트 크기 (포인트)
boldbool / boolean?굵게
italicbool / boolean?기울임
underlinebool / boolean?밑줄
strikethroughbool / boolean?취소선
colorStyleColor? / string?폰트 색상

TypeScript에서 색상은 문자열로 지정합니다: "#RRGGBB" (RGB), "theme:N" (테마), "indexed:N" (인덱스).

Fill (채우기)

속성타입설명
patternPatternType / string?패턴 종류
fg_color / fgColorStyleColor? / string?전경색
bg_color / bgColorStyleColor? / string?배경색

PatternType 값:

설명
none없음
solid단색 채우기
gray12512.5% 회색
darkGray진한 회색
mediumGray중간 회색
lightGray연한 회색

Border (테두리)

속성타입설명
leftBorderSideStyle?왼쪽 테두리
rightBorderSideStyle?오른쪽 테두리
topBorderSideStyle?위쪽 테두리
bottomBorderSideStyle?아래쪽 테두리
diagonalBorderSideStyle?대각선 테두리

BorderSideStylestylecolor를 포함합니다.

BorderLineStyle 값:

설명
thin가는 선
medium중간 선
thick굵은 선
dashed파선
dotted점선
double이중선
hair머리카락 선
mediumDashed중간 파선
dashDot일점쇄선
mediumDashDot중간 일점쇄선
dashDotDot이점쇄선
mediumDashDotDot중간 이점쇄선
slantDashDot기울어진 일점쇄선

Alignment (정렬)

속성타입설명
horizontalHorizontalAlign? / string?가로 정렬
verticalVerticalAlign? / string?세로 정렬
wrap_text / wrapTextbool / boolean?텍스트 줄바꿈
text_rotation / textRotationu32? / number?텍스트 회전 각도
indentu32? / number?들여쓰기 수준
shrink_to_fit / shrinkToFitbool / boolean?셀에 맞춰 축소

HorizontalAlign 값: general, left, center, right, fill, justify, centerContinuous, distributed

VerticalAlign 값: top, center, bottom, justify, distributed

NumFmt (숫자 서식)

Rust에서는 NumFmtStyle 열거형을 사용합니다:

  • NumFmtStyle::Builtin(id) -- 내장 서식 ID 사용
  • NumFmtStyle::Custom(code) -- 사용자 정의 서식 코드

TypeScript에서는 두 가지 방식으로 지정합니다:

  • numFmtId: number -- 내장 서식 ID
  • customNumFmt: string -- 사용자 정의 서식 코드 (우선 적용)

주요 내장 숫자 서식 ID:

ID서식설명
0General일반
10정수
20.00소수 2자리
3#,##0천 단위 구분
4#,##0.00천 단위 구분 + 소수
90%백분율
100.00%소수 백분율
110.00E+00과학적 표기
14m/d/yyyy날짜
15d-mmm-yy날짜
20h:mm시각
21h:mm:ss시각(초)
22m/d/yyyy h:mm날짜+시각
49@텍스트

Protection (보호)

속성타입설명
lockedbool / boolean?셀 잠금 (기본값: true)
hiddenbool / boolean?수식 숨기기

셀 보호는 시트 보호가 활성화된 경우에만 효과가 있습니다.


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