워크북

Options는 스프레드시트를 읽고 쓰기 위한 옵션을 정의합니다.

type Options struct {
    MaxCalcIterations uint // 최대 계산 반복 횟수를 지정하는 데 사용되며 기본값은 0입니다.
    Password          string // 플레인 텍스트로 워크북을 열고 저장하는 데 사용되는 비밀번호를 지정하는 데 사용되며 기본값은 빈 값입니다.
    RawCellValue      bool // 셀 값을 읽을 때 원시 값(raw value)을 검색할지 여부를 지정하는 데 사용되며 기본값은 `false`입니다(숫자 형식을 적용함).
    UnzipSizeLimit    int64 // 스프레드시트 문서를 열 때 압축 해제의 크기 제한(바이트)을 지정하는 데 사용되며 기본 제한은 16GB입니다.
    UnzipXMLSizeLimit int64 // 각 워크시트 및 공유 문자열 테이블을 압축 해제할 때 메모리 제한(바이트)을 지정하는 데 사용되며 기본 제한은 16MB입니다.
    ShortDatePattern  string // 짧은 날짜 숫자 형식 코드를 지정하는 데 사용됩니다.
    LongDatePattern   string // 긴 날짜 숫자 형식 코드를 지정하는 데 사용됩니다.
    LongTimePattern   string // 긴 시간 숫자 형식 코드를 지정하는 데 사용됩니다.
    CultureInfo       CultureName // 지역별 형식을 지정하는 데 사용됩니다.
}

MaxCalcIterations은 기본값이 0인 수식을 계산할 때 최대 반복 횟수를 지정하는 데 사용됩니다.

Password는 기본값이 빈 값인 워크북을 열고 저장하는 데 사용할 비밀번호를 지정하는 데 사용됩니다.

RawCellValue는 기본값이 false인 셀 값을 읽을 때 원시 값(raw value)을 검색할지 여부를 지정하는 데 사용됩니다(숫자 형식을 적용함).

UnzipSizeLimit은 기본 제한이 16GB인 스프레드시트 문서를 열 때 압축 해제의 크기 제한(바이트)을 지정하는 데 사용됩니다.

UnzipXMLSizeLimit은 기본 제한이 16MB인 각 워크시트 및 공유 문자열 테이블을 압축 해제할 때 메모리 제한(바이트)을 지정하는 데 사용됩니다.

ShortDatePattern은 짧은 날짜 숫자 형식 코드를 지정하는 데 사용됩니다.

LongDatePattern은 긴 날짜 숫자 형식 코드를 지정하는 데 사용됩니다.

LongTimePattern은 긴 시간 숫자 형식 코드를 지정하는 데 사용됩니다.

CultureInfo는 지역별 형식을 지정하는 데 사용됩니다.

생성

func NewFile(opts ...Options) *File

NewFile을 사용하여 새 Excel 워크북을 생성합니다. 이 워크북은 기본적으로 Sheet1이라는 워크시트를 포함합니다.

열기

func OpenFile(filename string, opts ...Options) (*File, error)

기존의 Excel 문서를 열기 위해 OpenFile을 사용합니다. 예를 들어, 암호 보호된 스프레드시트 문서를 열려면:

f, err := excelize.OpenFile("Book1.xlsx", excelize.Options{Password: "password"})
if err != nil {
    return
}

Close()를 사용하여 열린 워크북을 닫습니다.

데이터 스트림 열기

func OpenReader(r io.Reader, opts ...Options) (*File, error)

OpenReader는 io.Reader에서 데이터를 읽습니다.

다음의 예에서 우리는 업로드된 스프레드시트 문서를 처리하고, 받은 문서에 새 워크시트를 추가하고, 다운로드 응답을 반환하기 위해 간단한 HTTP 서버를 생성합니다:

package main

import (
    "fmt"
    "net/http"

    "github.com/xuri/excelize/v2"
)

func process(w http.ResponseWriter, req *http.Request) {
    file, _, err := req.FormFile("file")
    if err != nil {
        fmt.Fprint(w, err.Error())
        return
    }
    defer file.Close()
    f, err := excelize.OpenReader(file)
    if err != nil {
        fmt.Fprint(w, err.Error())
        return
    }
    f.Path = "Book1.xlsx"
    f.NewSheet("NewSheet")
    w.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s", f.Path))
    w.Header().Set("Content-Type", req.Header.Get("Content-Type"))
    if err := f.Write(w); err != nil {
        fmt.Fprint(w, err.Error())
    }
}

func main() {
    http.HandleFunc("/process", process)
    http.ListenAndServe(":8090", nil)
}

cURL을 사용하여 테스트:

curl --location --request GET 'http://127.0.0.1:8090/process' \
--form 'file=@/tmp/template.xltx' -O -J

저장

func (f *File) Save(opts ...Options) error

Save를 사용하여 Excel 문서의 편집 내용을 저장합니다.

다른 이름으로 저장

func (f *File) SaveAs(name string, opts ...Options) error

SaveAs를 사용하여 Excel 문서를 지정된 파일로 저장합니다.

워크북 닫기

func (f *File) Close() error

문서를 닫고 열었을 때 생성된 시스템 디스크 캐시를 정리합니다.

새 워크시트

func (f *File) NewSheet(sheet string) (int, error)

지정된 워크시트 이름을 기반으로 새로운 워크시트를 생성하고 워크북 내의 워크시트의 인덱스를 반환합니다. 새 워크북을 생성할 때는 기본적으로 Sheet1이라는 이름의 기본 워크시트가 포함됩니다.

워크시트 삭제

func (f *File) DeleteSheet(sheet string) error

지정한 워크시트를 제거합니다. 이 메서드를 사용할 때 주의하십시오. 삭제된 워크시트와 관련된 수식, 참조, 차트 및 기타 요소에 영향을 미칩니다. 다른 구성 요소가 삭제된 워크시트의 값을 참조하면 오류가 발생하며 워크북이 열리지 않을 수도 있습니다. 워크북에 워크시트가 하나만 있는 경우에는 이 메서드를 호출하는 것이 유효하지 않습니다.

워크시트 복사

func (f *File) CopySheet(from, to int) error

지정한 원본 워크시트와 대상 워크시트 인덱스를 기반으로 워크시트를 복사합니다. 개발자는 대상 워크시트 인덱스가 이미 존재하는지 확인해야 합니다. 현재는 셀 값과 수식을 포함하는 워크시트만 복사가 지원되며, 표, 이미지, 차트, 피벗 테이블을 포함하는 워크시트의 복사는 지원되지 않습니다.

// 워크시트인 Sheet1이 이미 존재하는 경우...
index, err := f.NewSheet("Sheet2")
if err != nil {
    fmt.Println(err)
    return
}
err := f.CopySheet(1, index)

워크시트 그룹화

func (f *File) GroupSheets(sheets []string) error

지정한 워크시트 이름을 기반으로 워크시트를 그룹화하며, 주어진 워크시트에는 기본 워크시트가 반드시 포함되어야 합니다.

워크시트 그룹 해제

func (f *File) UngroupSheets() error

워크시트를 그룹에서 해제합니다.

워크시트 배경 이미지 설정

func (f *File) SetSheetBackground(sheet, picture string) error

지정한 워크시트 이름과 이미지 파일 경로를 기반으로 워크시트에 타일 형태의 배경 이미지를 설정합니다. 지원되는 이미지 파일 형식으로는 BMP, EMF, EMZ, GIF, JPEG, JPG, PNG, SVG, TIF, TIFF, WMF 및 WMZ가 포함됩니다.

func (f *File) SetSheetBackgroundFromBytes(sheet, extension string, picture []byte) error

지정한 워크시트 이름, 이미지 형식 확장자 및 이미지 형식 데이터를 기반으로 워크시트에 타일 형태의 배경 이미지를 설정합니다. 지원되는 이미지 파일 형식으로는 BMP, EMF, EMZ, GIF, JPEG, JPG, PNG, SVG, TIF, TIFF, WMF 및 WMZ가 포함됩니다.

기본 워크시트 설정

func (f *File) SetActiveSheet(index int)

주어진 인덱스 값에 기반하여 기본 워크시트를 설정합니다. 값은 0 이상이어야 하며 워크북 내의 총 워크시트 수보다 작아야 합니다.

기본 워크시트 인덱스 가져오기

func (f *File) GetActiveSheetIndex() int

기본 워크시트의 인덱스를 가져옵니다. 기본 워크시트가 없는 경우 0을 반환합니다.

워크시트 가시성 설정

func (f *File) SetSheetVisible(sheet string, visible bool, veryHidden ...bool) error

주어진 워크시트 이름과 가시성 매개변수를 기반으로 워크시트의 가시성을 설정합니다. 워크북은 적어도 하나의 가시적인 워크시트를 포함해야 합니다. 주어진 워크시트가 기본 워크시트인 경우 가시성 설정은 유효하지 않습니다. 세 번째 선택적 매개변수 veryHiddenvisible 매개변수의 값이 false인 경우에만 유효합니다.

예를 들어, Sheet1이라는 워크시트를 숨기려면:

err := f.SetSheetVisible("Sheet1", false)

워크시트 가시성 가져오기

func (f *File) GetSheetVisible(sheet string) (bool, error)

주어진 워크시트 이름을 기반으로 워크시트의 가시성 설정을 가져옵니다. 예를 들어, Sheet1이라는 워크시트의 가시성 설정을 가져오려면:

visible, err := f.GetSheetVisible("Sheet1")

시트 속성 설정

func (f *File) SetSheetProps(sheet string, opts *SheetPropsOptions) error

지정된 워크시트의 속성을 워크시트 이름과 속성 옵션에 따라 설정합니다. 지원되는 워크시트 속성 옵션은 다음과 같습니다:

속성 타입 설명
CodeName *string 코드 이름
EnableFormatConditionsCalculation *bool 조건부 서식 계산을 자동으로 할지 여부를 지정합니다. 기본값은 true입니다.
Published *bool 워크시트가 게시되었는지 여부를 지정합니다. 기본값은 true입니다.
AutoPageBreaks *bool 워크시트가 자동으로 페이지를 나누는지 여부를 지정합니다. 기본값은 true입니다.
FitToPage *bool 페이지에 맞게 인쇄할지 여부를 지정합니다. 기본값은 false입니다.
TabColorIndexed *int 역호환색 값에 사용됩니다.
TabColorRGB *string 표준 ARGB 색상 값
TabColorTheme *int 0부터 시작하는 테마 색인
TabColorTint *float64 색에 적용된 음영 값입니다. 기본값은 0.0입니다.
OutlineSummaryBelow *bool 개요의 방향이 상세 데이터 아래로 되는지 여부를 지정합니다. 기본값은 true입니다.
OutlineSummaryRight *bool 개요의 방향이 상세 데이터 오른쪽으로 되는지 여부를 지정합니다. 기본값은 true입니다.
BaseColWidth *uint8 문자 수로 표시되는 기본 열 너비, 기본값은 8입니다.
DefaultColWidth *float64 여백과 그리드 라인을 포함한 기본 열 너비
DefaultRowHeight *float64 포인트 단위로 나타낸 행 높이
CustomHeight *bool 사용자 정의 행 높이가 적용되는지 여부를 지정합니다. 기본값은 false입니다.
ZeroHeight *bool 기본적으로 행이 숨겨지는지 여부를 지정합니다. 기본값은 false입니다.
ThickTop *bool 기본적으로 행에 위쪽 두꺼운 테두리가 있는지 여부를 지정합니다. 기본값은 false입니다.
ThickBottom *bool 기본적으로 행에 아래쪽 두꺼운 테두리가 있는지 여부를 지정합니다. 기본값은 false입니다.

예를 들어, Sheet1이라는 워크시트의 기본 행을 숨기려면:

시트 속성 설정

f, enable := excelize.NewFile(), true
if err := f.SetSheetProps("Sheet1", &excelize.SheetPropsOptions{
    ZeroHeight: &enable,
}); err != nil {
    fmt.Println(err)
}
if err := f.SetRowVisible("Sheet1", 10, true); err != nil {
    fmt.Println(err)
}
f.SaveAs("Book1.xlsx")

시트 속성 가져오기

func (f *File) GetSheetProps(sheet string) (SheetPropsOptions, error)

지정된 워크시트의 속성을 워크시트 이름에 따라 가져옵니다.

시트 뷰 속성 설정

func (f *File) SetSheetView(sheet string, viewIndex int, opts *ViewOptions) error

주어진 시트 이름, 뷰 인덱스 및 뷰 옵션에 기반하여 시트 뷰 속성을 설정합니다. viewIndex는 음수일 수 있으며, 이 경우 카운팅이 역순으로 수행됩니다 (-1은 마지막 뷰를 나타냅니다). 시트 뷰 속성을 설정하는 데 지원되는 옵션은 다음과 같습니다:

속성 유형 설명
DefaultGridColor *bool 기본 그리드 선 색상을 사용할지 여부를 지정합니다. 기본값은 true입니다.
RightToLeft *bool 오른쪽에서 왼쪽으로 표시할지 여부를 지정합니다. 기본값은 false입니다.
ShowFormulas *bool 워크시트에 수식을 표시할지 여부를 지정합니다. 기본값은 false입니다.
ShowGridLines *bool 워크시트에 그리드 라인을 표시할지 여부를 지정합니다. 기본값은 true입니다.
ShowRowColHeaders *bool 워크시트에 행 및 열 헤더를 표시할지 여부를 지정합니다. 기본값은 true입니다.
ShowRuler *bool 페이지 레이아웃 뷰에서 눈금을 표시할지 여부를 지정합니다. 기본값은 true입니다.
ShowZeros *bool 셀에 0 값을 표시할지 여부를 지정합니다. 기본값은 true이며, 그렇지 않을 경우 공란으로 표시됩니다.
TopLeftCell *string 표시되는 가장 왼쪽 상단 셀의 좌표를 지정합니다.
View *string 워크시트 뷰 유형을 나타내며, 열거형 값으로 normal, pageBreakPreview, pageLayout이 있습니다.
ZoomScale *float64 현재 뷰 표시 윈도우 확대 축척 백분율을 나타내며, 10에서 400 범위로 제한됩니다. 기본값은 100입니다.

시트 뷰 속성 가져오기

func (f *File) GetSheetView(sheet string, viewIndex int) (ViewOptions, error)

주어진 시트 이름과 뷰 인덱스에 기반하여 시트 뷰 속성을 검색합니다. viewIndex는 음수일 수 있으며, 이 경우 카운팅이 역순으로 수행됩니다 (-1은 마지막 뷰를 나타냅니다).

워크시트 페이지 레이아웃 설정

func (f *File) SetPageLayout(sheet string, opts *PageLayoutOptions) error

주어진 워크시트 이름과 페이지 레이아웃 매개변수를 기반으로 워크시트의 페이지 레이아웃 속성을 설정합니다. 현재 지원되는 페이지 레이아웃 속성은 다음과 같습니다:

Size 속성은 페이지 용지 크기를 지정하는 데 사용되며, 기본 페이지 레이아웃 크기는 "Letter 8½ × 11 inches"입니다. 다음 표는 페이지 레이아웃 크기와 Excelize의 인덱스 Size 매개변수 간의 관계를 보여줍니다:

인덱스 용지 사이즈
1 Letter 8½ × 11 inches
2 Letter Small 8½ × 11 inches
3 Tabloid 11 × 17 inches
4 Ledger 17 × 11 inches
... ...
40 German Standard Fanfold 8.5 × 12 inches
41 German legal paper fanfold 8.5 × 13 inches
42 ISO B4 250 × 353 mm
43 Japanese postcard 100 × 148 mm
44 Standard paper 9 × 11 inches
45 Standard paper 10 × 11 inches
46 Standard paper 15 × 11 inches
47 Invitation letter 220 × 220 mm
50 Letterhead enlarged 9.275 × 12 inches
51 Extra large legal paper 9.275 × 15 inches
52 Tabloid extra paper 11.69 × 18 inches
53 A4 extra large 236 × 322 mm
54 Letterhead landscape 8.275 × 11 inches
55 A4 landscape 210 × 297 mm
56 Letterhead extra large landscape 9.275 × 12 inches
57 SuperA/SuperA/A4 paper 227 × 356 mm
58 SuperB/SuperB/A3 paper 305 × 487 mm
59 Letterhead enlarged 8.5 × 12.69 inches
60 A4 enlarged 210 × 330 mm
61 A5 landscape 148 × 210 mm
62 JIS B5 landscape 182 × 257 mm
63 A3 extra large 322 × 445 mm
64 A5 extra large 174 × 235 mm
65 ISO B5 extra large 201 × 276 mm
66 A2 420 × 594 mm
67 A3 landscape 297 × 420 mm
68 A3 extra large landscape 322 × 445 mm
69 Double Japanese postcard 200 × 148 mm
70 A6 105 × 148 mm
71 Japanese envelope Kaku #2
72 Japanese envelope Kaku #3
73 Japanese envelope Chou #3
74 Japanese envelope Chou #4
75 Letterhead landscape 11 × 8½ inches
76 A3 landscape 420 × 297 mm
77 A4 landscape 297 × 210 mm
78 A5 landscape 210 × 148 mm
79 B4 (JIS) landscape 364 × 257 mm
80 B5 (JIS) landscape 257 × 182 mm
81 Japanese postcard landscape 148 × 100 mm
82 Double Japanese postcard landscape 148 × 200 mm
83 A6 landscape 148 × 105 mm
84 Japanese envelope Kaku #2 landscape
85 Japanese envelope Kaku #3 landscape
86 Japanese envelope Chou #3 landscape
```markdown
| 87 | 일본 봉투 초 #4 가로 형식 |
| 88 | B6 (JIS) 128 × 182 mm |
| 89 | B6 (JIS) 가로 형식 182 × 128 mm |
| 90 | 12 × 11 인치 |
| 91 | 일본 봉투 유 #4 |
| 92 | 일본 봉투 유 #4 가로 형식 |
| 93 | 중국형 16K 146 × 215 mm |
| 94 | 중국형 32K 97 × 151 mm |
| 95 | 대형 중국형 32K 97 × 151 mm |
| 96 | 중국형 봉투 #1 102 × 165 mm |
| 97 | 중국형 봉투 #2 102 × 176 mm |
| 98 | 중국형 봉투 #3 125 × 176 mm |
| 99 | 중국형 봉투 #4 110 × 208 mm |
| 100 | 중국형 봉투 #5 110 × 220 mm |
| 101 | 중국형 봉투 #6 120 × 230 mm |
| 102 | 중국형 봉투 #7 160 × 230 mm |
| 103 | 중국형 봉투 #8 120 × 309 mm |
| 104 | 중국형 봉투 #9 229 × 324 mm |
| 105 | 중국형 봉투 #10 324 × 458 mm |
| 106 | 중국형 16K 가로 형식 |
| 107 | 중국형 32K 가로 형식 |
| 108 | 대형 중국형 32K 가로 형식 |
| 109 | 중국형 봉투 #1 가로 형식 165 × 102 mm |
| 110 | 중국형 봉투 #2 가로 형식 176 × 102 mm |
| 111 | 중국형 봉투 #3 가로 형식 176 × 125 mm |
| 112 | 중국형 봉투 #4 가로 형식 208 × 110 mm |
| 113 | 중국형 봉투 #5 가로 형식 220 × 110 mm |
| 114 | 중국형 봉투 #6 가로 형식 230 × 120 mm |
| 115 | 중국형 봉투 #7 가로 형식 230 × 160 mm |
| 116 | 중국형 봉투 #8 가로 형식 309 × 120 mm |
| 117 | 중국형 봉투 #9 가로 형식 324 × 229 mm |
| 118 | 중국형 봉투 #10 가로 형식 458 × 324 mm |

`Orientation` 속성은 페이지 레이아웃 방향을 지정하는 데 사용되며, 기본 페이지 레이아웃 방향은 "세로"이며, 선택적 값은 `portrait`와 `landscape`입니다.

`FirstPageNumber` 속성은 시작 페이지 번호를 지정하는 데 사용되며, 기본값은 자동입니다.

`AdjustTo` 속성은 페이지 축척 비율을 지정하는 데 사용되며, 10에서 400까지의 범위를 가지며, 10%에서 400%까지 축척이 가능하며, 기본값은 일반 크기에 대한 `100`입니다. `FitToHeight` 또는 `FitToWidth`를 설정하면이 속성이 재정의됩니다.

`FitToHeight` 속성은 페이지 폭을 맞추기 위해 페이지 축척을 지정하는 데 사용되며, 기본값은 `1`입니다.

`FitToWidth` 속성은 페이지 높이를 맞추기 위해 페이지 축척을 지정하는 데 사용되며, 기본값은 `1`입니다.

`BlackAndWhite` 속성은 흑백 인쇄를 지정하는 데 사용되며, 기본값은 꺼집니다.
f := excelize.NewFile()
var (
    size                 = 10
    orientation          = "landscape"
    firstPageNumber uint = 2
    adjustTo        uint = 100
    fitToHeight          = 2
    fitToWidth           = 2
    blackAndWhite        = true
)
if err := f.SetPageLayout("Sheet1", &excelize.PageLayoutOptions{
    Size:            &size,
    Orientation:     &orientation,
    FirstPageNumber: &firstPageNumber,
    AdjustTo:        &adjustTo,
    FitToHeight:     &fitToHeight,
    FitToWidth:      &fitToWidth,
    BlackAndWhite:   &blackAndWhite,
}); err != nil {
    fmt.Println(err)
}

워크시트 페이지 레이아웃 가져오기

func (f *File) GetPageLayout(sheet string) (PageLayoutOptions, error)

지정된 워크시트 이름과 페이지 레이아웃 매개변수를 기반으로 워크시트의 페이지 레이아웃 속성을 가져옵니다.

워크시트 페이지 여백 설정

func (f *File) SetPageMargins(sheet string, opts *PageLayoutMarginsOptions) error

지정된 워크시트 이름과 여백 매개변수를 기반으로 워크시트의 페이지 여백을 설정합니다. 지원되는 여백 옵션은:

옵션 유형 설명
Bottom *float64 하단 여백
Footer *float64 하단 쪽지 여백
Header *float64 상단 쪽지 여백
Left *float64 왼쪽 여백
Right *float64 오른쪽 여백
Top *float64 상단 여백
Horizontally *bool 페이지를 수평으로 가운데 정렬합니다
Vertically *bool 페이지를 수직으로 가운데 정렬합니다

워크시트 페이지 여백 가져오기

func (f *File) GetPageMargins(sheet string) (PageLayoutMarginsOptions, error)

지정된 워크시트 이름과 여백 매개변수를 기반으로 워크시트의 페이지 여백을 가져옵니다.

워크북 속성 설정

func (f *File) SetWorkbookProps(opts *WorkbookPropsOptions) error

SetWorkbookProps는 워크북의 속성을 설정하는 데 사용됩니다. 지원되는 워크북 속성은:

속성 유형 설명
Date1904 *bool 워크북이 1904 날짜 시스템을 사용하는지 여부를 나타냅니다
FilterPrivacy *bool 필터 개인 정보, 응용 프로그램이 워크북의 개인 정보를 확인하는지 여부를 나타냅니다
CodeName *string 코드 이름

워크북 속성 가져오기

func (f *File) GetWorkbookProps() (WorkbookPropsOptions, error)

GetWorkbookProps는 워크북의 속성을 가져오는 데 사용됩니다.

헤더 및 푸터 설정

func (f *File) SetHeaderFooter(sheet string, opts *HeaderFooterOptions) error

지정된 워크시트 이름과 제어 문자를 기준으로 워크시트의 헤더 및 푸터를 설정합니다.

헤더와 푸터에는 다음과 같은 필드가 포함됩니다:

필드 설명
AlignWithMargins 헤더 및 푸터의 여백과 정렬 설정
DifferentFirst 첫 번째 페이지의 헤더 및 푸터 설정
DifferentOddEven 홀수 페이지와 짝수 페이지의 헤더 및 푸터 설정
ScaleWithDoc 문서 크기에 맞게 헤더와 푸터 설정
OddFooter 홀수 페이지의 푸터 제어 문자, 'DifferentOddEven' 값이 'false'인 경우 첫 페이지 푸터 설정에 사용됨
OddHeader 홀수 페이지의 헤더 제어 문자, 'DifferentOddEven' 값이 'false'인 경우 첫 페이지 헤더 설정에 사용됨
EvenFooter 짝수 페이지의 푸터 제어 문자
EvenHeader 짝수 페이지의 헤더 제어 문자
FirstFooter 첫 페이지의 푸터 제어 문자
FirstHeader 첫 페이지의 헤더 제어 문자

아래 표에 있는 형식 코드는 6개의 문자열 유형 필드(OddHeader, OddFooter, EvenHeader, EvenFooter, FirstFooter, FirstHeader)에 사용될 수 있습니다:

형식 코드 설명
&& 문자 "&"
&font-size 텍스트 글꼴 크기, 글꼴 크기는 포인트 단위의 십진수 글꼴 크기
&"font name,font type" 텍스트 글꼴 이름 문자열, 글꼴 이름 및 텍스트 글꼴 유형 문자열, 글꼴 유형
&"-,Regular" 보통 텍스트 형식. 볼드 및 이탤릭 모드를 해제
&A 현재 워크시트 이름
&B 또는 &"-,Bold" 볼드 텍스트 형식, 해제 또는 적용, 기본 해제
&D 현재 날짜
&C 중앙 섹션
&E 텍스트의 이중 밑줄
&F 현재 통합 문서 파일 이름
&G 객체를 배경으로 지정 (현재 지원되지 않음)
&H 텍스트 그림자
&I or &"-,Italic" 이탤릭 텍스트
&K RRGGBB 형식의 RGB 색상으로 텍스트 색상 형식 지정. 테마 색상은 TTSNNN으로 지정되며, 여기서 TT는 테마 색상 ID이고, S는 색상이나 "+", "-"가 색조의 값이다
&L 왼쪽 섹션
&N 총 페이지 수
&O 텍스트의 외곽선 형식
&P[[+\|-]n] 선택적 접미사가 없으면 현재 페이지 번호 (십진수)
&R 오른쪽 섹션
&S 텍스트에 중간 줄 긋기
&T 현재 시간
&U 텍스트에 밑줄을 추가합니다. 기본 모드는 해제
&X 위 첨자 형식
&Y 아래 첨자 형식
&Z 현재 통합 문서 파일 경로

예를 들어:

err := f.SetHeaderFooter("Sheet1", &excelize.HeaderFooterOptions{
    DifferentFirst:   true,
    DifferentOddEven: true,
    OddHeader:        "&R&P",
    OddFooter:        "&C&F",
    EvenHeader:       "&L&P",
    EvenFooter:       "&L&D&R&T",
    FirstHeader:      `&CCenter &"-,Bold"Bold&"-,Regular"HeaderU+000A&D`,
})

위 예제는 다음과 같은 형식을 포함합니다:

  • 첫 페이지는 각각의 고유한 헤더와 푸터를 가지고 있습니다.
  • 홀수와 짝수 페이지는 각각 다른 헤더와 푸터를 가지고 있습니다.
  • 홀수 페이지의 오른쪽 부분은 현재 페이지 번호입니다.
  • 홀수 페이지의 중앙 부분은 현재 워크북의 파일 이름입니다.
  • 짝수 페이지의 왼쪽 부분은 현재 페이지 번호이며, 짝수 페이지의 오른쪽 부분은 현재 시간입니다.
  • 첫 번째 페이지의 중앙 부분에는 "중앙 볼드 헤더"라는 텍스트가 있으며, 두 번째 행에는 날짜가 포함되어 있습니다.
  • 첫 페이지에는 푸터가 없습니다.

이름 설정

func (f *File) SetDefinedName(definedName *DefinedName) error

주어진 이름을 기반으로 이름과 참조 범위를 설정하며, 기본 범위는 워크북입니다. 예를 들어:

err := f.SetDefinedName(&excelize.DefinedName{
    Name:     "금액",
    RefersTo: "Sheet1!$A$2:$D$5",
    Comment:  "이름 설명",
    Scope:    "Sheet2",
})

워크시트의 인쇄 영역 및 인쇄 제목을 설정하는 예제:

Setting print area and print titles of the worksheet

if err := f.SetDefinedName(&excelize.DefinedName{
    Name:     "_xlnm.Print_Area",
    RefersTo: "Sheet1!$A$1:$Z$100",
    Scope:    "Sheet1",
}); err != nil {
    fmt.Println(err)
}
if err := f.SetDefinedName(&excelize.DefinedName{
    Name:     "_xlnm.Print_Titles",
    RefersTo: "Sheet1!$A:$A,Sheet1!$1:$1",
    Scope:    "Sheet1",
}); err != nil {
    fmt.Println(err)
}

이름 가져오기

func (f *File) GetDefinedName() []DefinedName

범위 내의 워크북 및 워크시트의 이름 목록을 가져옵니다.

이름 삭제

func (f *File) DeleteDefinedName(definedName *DefinedName) error

주어진 이름과 이름 범위를 기반으로 정의된 이름을 삭제하며, 기본 범위는 워크북입니다. 예를 들어:

err := f.DeleteDefinedName(&excelize.DefinedName{
    Name:     "금액",
    Scope:    "Sheet2",
})

워크북 애플리케이션 속성 설정

func (f *File) SetAppProps(appProperties *AppProperties) error

워크북의 애플리케이션 속성을 설정합니다. 설정할 수 있는 속성은 다음과 같습니다:

속성 설명
Application 이 문서를 생성한 응용 프로그램의 이름
ScaleCrop 문서 미리보기의 표시를 지정합니다. 문서의 미리보기를 축소하려면 true로 설정하고, 문서의 미리보기를 잘라내려면 false로 설정합니다
DocSecurity 숫자 값으로 표시된 문서 보안 수준
Company 문서와 관련된 회사의 이름
LinksUpToDate 문서의 하이퍼링크가 최신 상태인지 설정합니다. 업데이트된 하이퍼링크를 위해 true로 설정하고, 오래된 하이퍼링크를 위해 false로 설정합니다
HyperlinksChanged 이 섹션에서 지정된 새 하이퍼링크를 사용하여 문서가 다음에 열릴 때 하이퍼링크 관계를 업데이트할지 지정합니다
AppVersion 이 문서를 생성한 응용 프로그램의 버전을 지정합니다. 값은 XX.YYYY 형식이어야 하며, 여기서 X와 Y는 숫자 값이어야 합니다. 그렇지 않으면 파일이 표준과 호환되지 않습니다

예를 들어:

err := f.SetAppProps(&excelize.AppProperties{
    Application:       "Microsoft Excel",
    ScaleCrop:         true,
    DocSecurity:       3,
    Company:           "회사명",
    LinksUpToDate:     true,
    HyperlinksChanged: true,
    AppVersion:        "16.0000",
})

워크북 애플리케이션 속성 가져오기

func (f *File) GetAppProps() (*AppProperties, error)

워크북의 애플리케이션 속성을 가져옵니다.

문서 속성 설정

func (f *File) SetDocProps(docProperties *DocProperties) error

통합 문서의 핵심 속성을 설정합니다. 설정할 수 있는 속성은 다음과 같습니다:

속성 설명
Category 문서 콘텐츠의 카테고리
ContentStatus 문서 콘텐츠의 상태. 예를 들어 "Draft", "Reviewed", "Final" 등의 값이 포함될 수 있습니다.
Created 문서가 생성된 시간을 ISO 8601 UTC 형식으로 나타낸 값입니다. 예: 2019-06-04T22:00:10Z
Creator 문서를 생성한 사용자의 정보
Description 자원 콘텐츠의 설명
Identifier 특정 컨텍스트에서 자원에 대한 명확한 참조
Keywords 문서의 키워드
Language 문서 콘텐츠의 기본 언어
LastModifiedBy 문서를 마지막으로 수정한 사용자의 정보
Modified 문서가 수정된 시간을 ISO 8601 UTC 형식으로 나타낸 값입니다. 예: 2019-06-04T22:00:10Z
Revision 문서의 개정 버전
Subject 문서의 제목
Title 문서의 제목
Version 사용자 또는 응용프로그램에서 설정한 버전 번호

예를 들어:

err := f.SetDocProps(&excelize.DocProperties{
    Category:       "카테고리",
    ContentStatus:  "Draft",
    Created:        "2019-06-04T22:00:10Z",
    Creator:        "Go Excelize",
    Description:    "Go Excelize에 의해 생성된 파일",
    Identifier:     "xlsx",
    Keywords:       "스프레드시트",
    LastModifiedBy: "Go Author",
    Modified:       "2019-06-04T22:00:10Z",
    Revision:       "0",
    Subject:        "테스트 주제",
    Title:          "테스트 제목",
    Language:       "en-US",
    Version:        "1.0.0",
})

문서 속성 가져오기

func (f *File) GetDocProps() (*DocProperties, error)

통합 문서의 핵심 속성을 가져옵니다.

통합 문서 보호하기

func (f *File) ProtectWorkbook(opts *WorkbookProtectionOptions) error

비밀번호를 사용하여 통합 문서의 구조를 보호하여 다른 사용자가 숨겨진 워크시트를 보거나, 워크시트를 추가, 이동 또는 숨기거나 워크시트의 이름을 변경하는 것을 방지합니다. AlgorithmName 필드를 사용하여 해시 알고리즘 XOR, MD4, MD5, SHA-1, SHA-256, SHA-384, 또는 SHA-512를 지정할 수 있습니다. 해시 알고리즘이 지정되지 않은 경우 기본적으로 XOR 알고리즘이 사용됩니다. 예를 들어, 다음과 같은 방법으로 통합 문서의 구조를 비밀번호로 보호할 수 있습니다:

err := f.ProtectWorkbook(&excelize.WorkbookProtectionOptions{
    Password:      "비밀번호",
    LockStructure: true,
})

WorkbookProtectionOptions는 통합 문서를 보호하는 옵션을 정의합니다.

type WorkbookProtectionOptions struct {
    AlgorithmName string
    Password      string
    LockStructure bool
    LockWindows   bool
}

통합 문서 보호 해제하기

func (f *File) UnprotectWorkbook(password ...string) error

통합 문서의 보호를 해제하고, 선택적으로 비밀번호 매개변수를 지정하여 통합 문서의 보호를 확인하고 제거합니다.