ワークブック

Options は、スプレッドシートの読み込みおよび書き込みのオプションを定義します。

type Options struct {
    MaxCalcIterations uint
    Password          string
    RawCellValue      bool
    UnzipSizeLimit    int64
    UnzipXMLSizeLimit int64
    ShortDatePattern  string
    LongDatePattern   string
    LongTimePattern   string
    CultureInfo       CultureName
}

MaxCalcIterations は、数式を計算する際の最大反復回数を指定するために使用され、デフォルト値は0です。

Password は、ブックを平文で開くおよび保存するためのパスワードを指定するために使用され、デフォルト値は空です。

RawCellValue は、セルの値を読み取る際に生の値を取得するかどうかを指定するために使用され、デフォルト値は false(数値フォーマットを適用)です。

UnzipSizeLimit は、スプレッドシートのドキュメントを開く際の解凍のサイズ制限(バイト単位)を指定するために使用され、UnzipXMLSizeLimit より大きくする必要があり、デフォルトの制限は16GBです。

UnzipXMLSizeLimit は、ワークシートと共有文字列テーブルを解凍する際のメモリ制限(バイト単位)を指定するために使用され、この値を超えると、ワークシート XML ファイルがシステムの一時ディレクトリに解凍されます。この値は UnzipSizeLimit より小さくする必要があり、デフォルトの制限は16MBです。

ShortDatePattern は、短い日付数値形式コードを指定するために使用されます。

LongDatePattern は、長い日付数値形式コードを指定するために使用されます。

LongTimePattern は、長い時間数値形式コードを指定するために使用されます。

CultureInfo は、地域ごとの日付や時間設定に影響を受ける数値形式を読み取る際に使用される地域の形式を指定するために使用されます。

作成

func NewFile(opts ...Options) *File

NewFile を使用して新しいExcelワークブックを作成し、デフォルトで Sheet1 という名前のワークシートが含まれます。

開く

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

OpenFile を使用して既存のExcelドキュメントを開きます。たとえば、パスワードで保護されたスプレッドシートドキュメントを開く場合:

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

指定されたワークシートを削除します。このメソッドを使用する際は注意が必要です。削除されたワークシートに関連する数式、参照、グラフなどの要素に影響を与えます。削除されたワークシートへの参照がある場合、エラーが表示され、ワークブックの開くことすら失敗する可能性があります。ワークブックにワークシートが1つしか含まれていない場合、このメソッドの呼び出しは無効です。

ワークシートのコピー

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

指定されたワークシート名と表示パラメータに基づいて、ワークシートの表示を設定します。ワークブックには少なくとも1つの表示されるワークシートが含まれている必要があります。指定されたワークシートがデフォルトのワークシートの場合は、表示設定は無効です。3番目のオプションパラメータ 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

指定されたワークシートの名前とプロパティオプションに基づいてワークシートのプロパティを設定します。サポートされているワークシートのプロパティオプションは以下の通りです:

Property Type Description
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 セル内のゼロ値を表示するかどうかを指定します。デフォルト値は true です。それ以外の場合は空白として表示されます。
TopLeftCell *string 表示される左上のセルの座標を指定します。
View *string ワークシートビューの種類を示します。列挙値には normalpageBreakPreviewpageLayout があります。
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 インチ
2 Letter Small 8½ × 11 インチ
3 Tabloid 11 × 17 インチ
4 Ledger 17 × 11 インチ
... ...
40 German Standard ファンフォールド 8.5 × 12 インチ
41 German legal paper ファンフォールド 8.5 × 13 インチ
42 ISO B4 250 × 353 ミリメートル
43 Japanese ポストカード 100 × 148 ミリメートル
44 Standard paper 9 × 11 インチ
45 Standard paper 10 × 11 インチ
46 Standard paper 15 × 11 インチ
47 招待状 220 × 220 ミリメートル
50 Letterhead enlarged 9.275 × 12 インチ
51 特大法人用紙 9.275 × 15 インチ
52 タブロイド特大用紙 11.69 × 18 インチ
53 A4 特大 236 × 322 ミリメートル
54 Letterhead landscape 8.275 × 11 インチ
55 A4 ランドスケープ 210 × 297 ミリメートル
56 Letterhead 特大ランドスケープ 9.275 × 12 インチ
57 SuperA/SuperA/A4 227 × 356 ミリメートル
58 SuperB/SuperB/A3 305 × 487 ミリメートル
59 Letterhead 特大 8.5 × 12.69 インチ
60 A4 特大 210 × 330 ミリメートル
61 A5 ランドスケープ 148 × 210 ミリメートル
62 JIS B5 ランドスケープ 182 × 257 ミリメートル
63 A3 特大 322 × 445 ミリメートル
64 A5 特大 174 × 235 ミリメートル
65 ISO B5 特大 201 × 276 ミリメートル
66 A2 420 × 594 ミリメートル
67 A3 ランドスケープ 297 × 420 ミリメートル
68 A3 特大ランドスケープ 322 × 445 ミリメートル
69 二つ折りポストカード 200 × 148 ミリメートル
70 A6 105 × 148 ミリメートル
71 日本封筒 角 #2
72 日本封筒 角 #3
73 日本封筒 長 #3
74 日本封筒 長 #4
75 Letterhead ランドスケープ 11 × 8½ インチ
76 A3 ランドスケープ 420 × 297 ミリメートル
77 A4 ランドスケープ 297 × 210 ミリメートル
78 A5 ランドスケープ 210 × 148 ミリメートル
79 B4 (JIS) ランドスケープ 364 × 257 ミリメートル
80 B5 (JIS) ランドスケープ 257 × 182 ミリメートル
81 日本ポストカード ランドスケープ 148 × 100 ミリメートル
82 二つ折りポストカード ランドスケープ 148 × 200 ミリメートル
83 A6 ランドスケープ 148 × 105 ミリメートル
84 日本封筒 角 #2 ランドスケープ
85 日本封筒 角 #3 ランドスケープ
86 日本封筒 長 #3 ランドスケープ
```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" で、任意の値は `portrait` および `landscape` です。

`FirstPageNumber` プロパティは、開始ページ番号を指定するために使用され、デフォルトは自動です。

`AdjustTo` プロパティは、ページの拡大縮小率を指定するために使用され、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,
    方向:             &orientation,
    最初のページ番号:   &firstPageNumber,
    調整:             &adjustTo,
    高さに合わせる:   &fitToHeight,
    幅に合わせる:     &fitToWidth,
    白黒:            &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 テキストのフォントサイズ。フォントサイズはポイントで表される10進数のフォントサイズ
&"font name,font type" テキストのフォント名文字列と、フォント名、テキストのフォントタイプ文字列と、フォントタイプ
&"-,Regular" 通常のテキストフォーマット。太字とイタリックモードをオフにします
&A 現在のワークシート名
&B または &"-,Bold" 太字のテキストフォーマット。デフォルトはオフ
&D 現在の日付
&C 中央部
&E テキストの下線を二重にする
&F 現在のワークブックファイル名
&G オブジェクトを背景として指定する(現在サポートされていません)
&H テキストの影
&I または &"-,Italic" イタリック体のテキスト
&K RGBカラー形式のフォントカラーフォーマット。テーマカラーはTTSNNNで指定され、TTはテーマカラーID、Sは色調または色調の+-、-は色調または色調
&L 左部
&N 総ページ数
&O アウトラインテキストフォーマット
&P[[+\|-]n] オプションの接尾辞がない場合は、現在のページ番号(10進数)
&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`,
})

上記の例は以下のフォーマットを含んでいます:

  • 最初のページには独自のヘッダーとフッターがあります
  • 奇数ページと偶数ページには異なるヘッダーとフッターがあります
  • 奇数ページの右側の部分には現在のページ番号があります
  • 奇数ページの中央部には現在のワークブックのファイル名があります
  • 偶数ページの左側には現在のページ番号があります
  • 偶数ページの左側には現在の日付があり、右側には現在の時刻があります
  • 最初のページの中央部にはテキスト"Center Bold Header"があり、2行目には日付があります
  • 最初のページにはフッターがありません

名前の設定

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

与えられた名前を元に、デフォルトのスコープがワークブックである場合、名前と参照範囲を設定します。例:

err := f.SetDefinedName(&excelize.DefinedName{
    Name:     "Amount",
    RefersTo: "Sheet1!$A$2:$D$5",
    Comment:  "defined name 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:     "Amount",
    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:           "Company Name",
    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:      "password",
    LockStructure: true,
})

WorkbookProtectionOptions は、ワークブックを保護するためのオプションを定義します。

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

ワークブックの保護を解除する

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

ワークブックの保護を解除し、ワークブックの保護を検証して解除するためのオプションのパスワードを指定します。