RichTextRun은 리치 텍스트의 속성을 정의합니다.

type RichTextRun struct {
    Font *Font
    Text string
}

HyperlinkOpts는 표시 텍스트와 스크린 팁과 같은 선택적 하이퍼링크 속성을 지정하는 데 사용됩니다.

type HyperlinkOpts struct {
    Display *string
    Tooltip *string
}

FormulaOptsSetCellFormula 함수에서 특수한 수식 유형을 지정하는 데 사용됩니다.

type FormulaOpts struct {
    Type *string // 수식 유형
    Ref  *string // 공유 수식 참조
}

셀의 값 설정

func (f *File) SetCellValue(sheet, cell string, value interface{}) error

시트 이름과 셀 좌표를 기반으로 셀의 값을 설정합니다. 이 함수는 고루틴 안전합니다. 지정된 좌표는 표의 첫 번째 행에 있어서는 안 되며, 문자열 설정에 복수형 문자가 사용되어야 합니다.

지원되는 데이터 유형
int
int8
int16
int32
int64
uint
uint8
uint16
uint32
uint64
float32
float64
string
[]byte
time.Duration
time.Time
bool
nil

이 함수는 기본적으로 m/d/yy h:mm 숫자 형식으로 time.Time 유형의 셀 값을 설정하며, 이 설정은 SetCellStyle을 사용하여 변경할 수 있습니다. Go 언어의 time.Time 유형으로 표현할 수 없는 특별한 Excel 날짜를 설정해야 하는 경우, 예를 들어 1900년 1월 0일이나 1900년 2월 29일 같은 경우에는 셀 값을 0이나 60으로 설정한 후 날짜 숫자 형식이 있는 스타일로 설정하면 됩니다.

부울 값 설정

func (f *File) SetCellBool(sheet, cell string, value bool) error

시트 이름과 셀 좌표를 기반으로 부울 셀의 값을 설정합니다.

기본 문자열 값 설정

func (f *File) SetCellDefault(sheet, cell, value string) error

시트 이름과 셀 좌표를 기반으로 문자열 셀의 값을 설정하며, 문자는 특수 문자 필터링의 대상이 되지 않습니다.

정수 설정

func (f *File) SetCellInt(sheet, cell string, value int) error

시트 이름과 셀 좌표를 기반으로 정수 셀의 값을 설정합니다.

부동 소수점 설정

func (f *File) SetCellFloat(sheet, cell string, value float64, precision, bitSize int) error

시트 이름, 셀 좌표, 부동 소수점 값, 부동 소수점 소수 부분의 정밀도 및 부동 소수점의 유형을 기반으로 부동 소수점 셀의 값을 설정합니다.

문자열 값 설정

func (f *File) SetCellStr(sheet, cell, value string) error

시트 이름과 셀 좌표를 기반으로 문자열 셀의 값을 설정하며, 문자는 특수 문자 필터링의 대상이 되고 누적 길이가 32767을 초과하는 경우 초과 문자는 무시됩니다.

셀 스타일 설정

func (f *File) SetCellStyle(sheet, hCell, vCell string, styleID int) error

지정된 시트 이름, 셀 좌표 및 스타일 인덱스를 기반으로 셀의 값을 설정합니다. 이 함수는 스레드로부터 안전합니다. 스타일 인덱스는 NewStyle 함수를 통해 얻을 수 있습니다. 동일 좌표 영역 내의 diagonalDowndiagonalUp은 일관된 색상을 유지해야 합니다. SetCellStyle은 스타일을 중첩 또는 병합하지 않고 셀의 기존 스타일을 덮어씁니다.

  • 예제 1: Sheet1이라는 시트의 D7 셀에 대한 테두리 스타일 설정:
style, err := f.NewStyle(&excelize.Style{
    Border: []excelize.Border{
        {Type: "left", Color: "0000FF", Style: 3},
        {Type: "top", Color: "00FF00", Style: 4},
        {Type: "bottom", Color: "FFFF00", Style: 5},
        {Type: "right", Color: "FF0000", Style: 6},
        {Type: "diagonalDown", Color: "A020F0", Style: 8},
        {Type: "diagonalUp", Color: "A020F0", Style: 8},
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

셀에 대한 테두리 스타일 설정

D7의 네 면은 서로 다른 스타일과 색상으로 설정되어 있으며, 이는 NewStyle 함수에 전달된 매개변수와 관련이 있습니다. 다른 스타일을 설정하는 방법에 대해서는 이 장의 설명서를 참조하십시오.

  • 예제 2: Sheet1이라는 시트의 D7 셀에 대한 그라데이션 스타일 설정:
style, err := f.NewStyle(&excelize.Style{
    Fill: excelize.Fill{Type: "gradient", Color: []string{"FFFFFF", "E0EBF5"}, Shading: 1},
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

셀에 그라데이션 스타일 설정

D7은 그라데이션 색상으로 채워지며, 이는 NewStyle 함수에 전달된 매개변수와 관련이 있습니다. 다른 스타일을 설정하는 방법에 대해서는 이 장의 설명서를 참조하십시오.

  • 예제 3: Sheet1이라는 시트의 D7 셀에 단색으로 채우기 스타일 설정:
style, err := f.NewStyle(&excelize.Style{
    Fill: excelize.Fill{Type: "pattern", Color: []string{"E0EBF5"}, Pattern: 1},
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

셀에 대한 단색으로 채우기 스타일 설정

D7은 단색으로 채워집니다.

  • 예제 4: Sheet1이라는 시트의 D7 셀에 대한 문자 간격 및 회전 각도 설정:
f.SetCellValue("Sheet1", "D7", "Style")
style, err := f.NewStyle(&excelize.Style{
    Alignment: &excelize.Alignment{
        Horizontal:      "center",
        Indent:          1,
        JustifyLastLine: true,
        ReadingOrder:    0,
        RelativeIndent:  1,
        ShrinkToFit:     true,
        TextRotation:    45,
        Vertical:        "",
        WrapText:        true,
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

문자 간격 및 회전 각도 설정

- 예제 5: 엑셀에서 날짜와 시간은 실수로 표현되며, 예를 들어 `2017/7/4 12:00:00 PM`은 숫자 `42920.5`로 표현될 수 있습니다. 워크시트 `Sheet1`의 셀 `D7`에 시간 형식을 설정합니다:

```go
f.SetCellValue("Sheet1", "D7", 42920.5)
f.SetColWidth("Sheet1", "D", "D", 13)
style, err := f.NewStyle(&excelize.Style{NumFmt: 22})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

셀에 시간 형식 설정

D7에 시간 형식이 설정되었습니다. 셀 너비가 내용을 전부 표시하기에는 좁을 경우 ####로 표시됩니다. 정상적으로 표시하기 위해 열 너비를 늘이는 방법은 드래그하거나 SetColWidth 함수를 호출하여 셀의 너비를 적절한 크기로 설정할 수 있습니다.

  • 예제 6: 워크시트 Sheet1의 셀 D7에 폰트, 폰트 크기, 색상, 기울임 꼴 스타일을 설정합니다:
f.SetCellValue("Sheet1", "D7", "Excel")
style, err := f.NewStyle(&excelize.Style{
    Font: &excelize.Font{
        Bold:   true,
        Italic: true,
        Family: "Times New Roman",
        Size:   36,
        Color:  "777777",
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

셀에 폰트, 폰트 크기, 색상, 기울임 꼴 스타일 설정

  • 예제 7: 워크시트 Sheet1의 셀 D7을 잠그고 숨깁니다:
style, err := f.NewStyle(&excelize.Style{
    Protection: &excelize.Protection{
        Hidden: true,
        Locked: true,
    },
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

셀을 잠금 또는 숨기려면 워크시트를 보호해야 합니다. "리뷰" 탭에서 "워크시트 보호"를 클릭합니다.

func (f *File) SetCellHyperLink(sheet, cell, link, linkType string, opts ...HyperlinkOpts) error

주어진 워크시트, 셀 좌표, 링크 리소스, 리소스 유형에 기반하여 셀에 하이퍼링크를 설정합니다. 리소스 유형에는 외부 링크 주소 External 및 통합 문서내 위치 링크 Location 두 유형이 포함됩니다. 각 워크시트에서 하이퍼링크의 최대 수는 65530으로 제한됩니다. 이 메서드는 셀의 하이퍼링크만 설정하며 셀 값에 영향을 미치지 않습니다. 셀 값을 설정해야 하는 경우 SetCellStyle 또는 SetSheetRow와 같은 함수를 통해 별도로 설정해야 합니다.

  • 예제 1: 워크시트 Sheet1의 셀 A3에 외부 링크를 추가합니다:
display, tooltip := "https://github.com/xuri/excelize", "GitHub의 Excelize"
if err := f.SetCellHyperLink("Sheet1", "A3",
    "https://github.com/xuri/excelize", "External", excelize.HyperlinkOpts{
        Display: &display,
        Tooltip: &tooltip,
    }); err != nil {
    fmt.Println(err)
}
// 셀에 대한 폰트 및 밑줄 스타일을 설정합니다
style, err := f.NewStyle(&excelize.Style{
    Font: &excelize.Font{Color: "1265BE", Underline: "single"},
})
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "A3", "A3", style)
  • 예제 2: 워크시트 Sheet1의 셀 A3에 위치 링크를 추가합니다:
err := f.SetCellHyperLink("Sheet1", "A3", "Sheet1!A40", "Location")
func (f *File) SetCellRichText(sheet, cell string, runs []RichTextRun) error
주어진 워크시트, 셀 좌표 및 리치 텍스트 형식을 기반으로 특정 셀에 대해 리치 텍스트 형식을 설정합니다.

예를 들어, 'Sheet1'이라는 워크시트의 'A1'셀에 대해 리치 텍스트 형식을 설정합니다:

![리치 텍스트 형식 설정](/storage/20231012/uog6n6jRKVmPjoBa.png)

```go
package main

import (
    "fmt"
    
    "github.com/xuri/excelize/v2"
)

func main() {
    f := excelize.NewFile()
    defer func() {
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    if err := f.SetRowHeight("Sheet1", 1, 35); err != nil {
        fmt.Println(err)
        return
    }
    if err := f.SetColWidth("Sheet1", "A", "A", 44); err != nil {
        fmt.Println(err)
        return
    }
    if err := f.SetCellRichText("Sheet1", "A1", []excelize.RichTextRun{
        {
            Text: "볼드체",
            Font: &excelize.Font{
                Bold:   true,
                Color:  "2354E8",
                Family: "Times New Roman",
            },
        },
        // ... (기타 리치 텍스트 런)
    }); err != nil {
        fmt.Println(err)
        return
    }
    // ... (기타 셀 스타일 설정 및 저장 작업)
}
func (f *File) GetCellRichText(sheet, cell string) ([]RichTextRun, error)

주어진 워크시트와 셀 좌표를 기반으로 특정 셀의 리치 텍스트 형식을 가져옵니다.

func (f *File) GetCellValue(sheet, cell string, opts ...Options) (string, error)

주어진 워크시트와 셀 좌표를 기반으로 특정 셀의 값을 가져오며, 반환 값은 string 유형으로 변환됩니다. 셀 형식이 셀 값에 적용될 수 있는 경우, 적용된 값이 반환되고, 그렇지 않으면 원래 값이 반환됩니다. 병합된 영역 내의 모든 셀의 값은 동일합니다. 이 함수는 동시성을 보장합니다.

func (f *File) GetCellType(sheet, cell string) (CellType, error)

주어진 워크시트와 셀 좌표를 기반으로 특정 셀의 데이터 유형을 가져옵니다.

func (f *File) GetCols(sheet string, opts ...Options) ([][]string, error)

지정된 워크시트의 모든 셀 값을 열별로 검색하여 이를 두 차원 배열 형식으로 반환하며, 셀 값은 string 유형으로 변환됩니다. 셀 형식이 셀 값에 적용될 수 있는 경우, 적용된 값이 사용되고, 그렇지 않으면 원래 값이 사용됩니다.

예를 들어, 'Sheet1'이라는 워크시트의 모든 셀 값을 열별로 검색하고, 이를 반복하여 확인합니다:

cols, err := f.GetCols("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
for _, col := range cols {
    for _, rowCell := range col {
        fmt.Print(rowCell, "\t")
    }
    fmt.Println()
}
func (f *File) GetRows(sheet string, opts ...Options) ([][]string, error)

지정된 워크시트의 모든 셀 값을 행별로 검색하여 이를 두 차원 배열 형식으로 반환하며, 셀 값은 string 유형으로 변환됩니다. 셀 형식이 셀 값에 적용될 수 있는 경우, 적용된 값이 사용되고, 그렇지 않으면 원래 값이 사용됩니다. GetRows는 값 또는 수식을 포함하는 셀이 있는 행을 검색합니다. 행의 끝에 있는 빈 셀은 건너뛰며, 각 행의 셀 수는 다를 수 있습니다.

예를 들어, 'Sheet1'이라는 워크시트의 모든 셀 값을 행별로 검색하고, 이를 반복하여 확인합니다:

rows, err := f.GetRows("Sheet1")
if err != nil {
    fmt.Println(err)
    return
}
for _, row := range rows {
    for _, colCell := range row {
        fmt.Print(colCell, "\t")
    }
    fmt.Println()
}
func (f *File) GetCellHyperLink(sheet, cell string) (bool, string, error)
지정된 워크시트와 셀 좌표를 기반으로 지정된 셀의 하이퍼링크를 검색합니다. 셀에 하이퍼링크가 포함되어 있으면 `true`와 링크 주소를 반환하고, 그렇지 않으면 `false`와 빈 링크 주소를 반환합니다.

예를 들어, `Sheet1`이란 이름의 워크시트에서 좌표 `H6`에 있는 셀의 하이퍼링크를 검색하려면:

```go
link, target, err := f.GetCellHyperLink("Sheet1", "H6")
func (f *File) GetCellStyle(sheet, cell string) (int, error)

지정된 워크시트와 셀 좌표를 기반으로 지정된 셀의 스타일 인덱스를 검색하고, 검색된 인덱스는 SetCellStyle 함수를 호출할 때 셀 스타일을 설정하는 매개변수로 사용될 수 있습니다.

func (f *File) MergeCell(sheet, hCell, vCell string) error

지정된 워크시트와 셀 좌표 영역의 셀을 병합합니다. 병합된 영역의 왼쪽 위 셀의 값만 유지되고, 다른 셀의 값은 무시됩니다. 예를 들어, Sheet1이란 워크시트에서 D3:E9 영역의 셀을 병합하는 경우:

err := f.MergeCell("Sheet1", "D3", "E9")

주어진 셀 좌표 영역이 기존의 병합된 셀과 겹치는 경우, 기존의 병합된 셀은 제거됩니다.

func (f *File) UnmergeCell(sheet string, hCell, vCell string) error

지정된 워크시트와 셀 좌표 영역의 셀 병합을 해제합니다. 예를 들어, Sheet1이란 워크시트에서 D3:E9 영역의 셀 병합을 해제하는 경우:

err := f.UnmergeCell("Sheet1", "D3", "E9")

주어진 셀 좌표 영역이 여러 개의 병합된 셀을 포함하는 경우, 모든 병합된 셀이 해제됩니다.

지정된 워크시트의 모든 병합된 셀의 좌표 영역과 값을 가져옵니다.

func (f *File) GetMergeCells(sheet string) ([]MergeCell, error)
func (m *MergeCell) GetCellValue() string

GetCellValue는 병합된 셀의 값을 반환합니다.

func (m *MergeCell) GetStartAxis() string

GetStartAxis는 병합된 셀 영역의 왼쪽 위 셀의 좌표를 반환합니다. 예를 들어, C2입니다.

func (m *MergeCell) GetEndAxis() string

GetEndAxis는 병합된 셀 영역의 오른쪽 아래 셀의 좌표를 반환합니다. 예를 들어, D4입니다.

func (f *File) AddComment(sheet string, comment Comment) error

주어진 워크시트, 셀 좌표 및 스타일 파라미터(작성자 및 텍스트 정보)에 주석을 추가합니다. 작성자 정보는 최대 255자까지이며, 최대 텍스트 내용 길이는 32512자입니다. 이 범위를 벗어나는 문자는 무시됩니다. 예를 들어, Sheet1!$A$3 셀에 주석을 추가합니다:

Excel 문서에 주석 추가

err := f.AddComment("Sheet1", excelize.Comment{
    Cell:   "A3",
    Author: "Excelize",
    Paragraph: []excelize.RichTextRun{
        {Text: "Excelize: ", Font: &excelize.Font{Bold: true}},
        {Text: "This is a comment."},
    },
})
func (f *File) GetComments(sheet string) ([]Comment, error)

주어진 워크시트의 모든 셀 주석을 가져옵니다.

func (f *File) DeleteComment(sheet, cell string) error

주어진 워크시트 및 셀 좌표의 주석을 삭제합니다. 예를 들어, Sheet1!$A$30 셀의 주석을 삭제합니다:

err := f.DeleteComment("Sheet1", "A30")