워크북
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
주어진 워크시트 이름과 가시성 매개변수를 기반으로 워크시트의 가시성을 설정합니다. 워크북은 적어도 하나의 가시적인 워크시트를 포함해야 합니다. 주어진 워크시트가 기본 워크시트인 경우 가시성 설정은 유효하지 않습니다. 세 번째 선택적 매개변수 veryHidden
은 visible
매개변수의 값이 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",
})
워크시트의 인쇄 영역 및 인쇄 제목을 설정하는 예제:
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
통합 문서의 보호를 해제하고, 선택적으로 비밀번호 매개변수를 지정하여 통합 문서의 보호를 확인하고 제거합니다.