ワークブック

Options は、スプレッドシートを読み書きするためのオプションを定義します。

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

MaxCalcIterations は反復計算の最大反復回数を指定します。デフォルト値は 0 です。

Password は、スプレッドシートのパスワードをプレーンテキストで指定します。

RawCellValue は、セル値に数値形式を適用するか、生の値を取得するかを指定します。

UnzipSizeLimit は、スプレッドシートを開いたときの解凍サイズの制限をバイト単位で指定します。この値は UnzipXMLSizeLimit 以上である必要があり、デフォルトのサイズ制限は 16GB です。

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

TmpDir は一時ファイルを作成するための一時ディレクトリを指定します。値が空の場合、システムのデフォルトの一時ディレクトリが使用されます。

ShortDatePattern は、短い日付数値形式コードを指定します。スプレッドシート アプリケーションでは、日付形式により日付と時刻のシリアル番号が日付値として表示されます。アスタリスク (*) で始まる日付形式は、オペレーティング システムに指定されている地域の日付と時刻の設定の変更に対応します。アスタリスクのない形式は、オペレーティング システムの設定の影響を受けません。に使用される ShortDatePattern は、アスタリスクで始まる適用日付形式を指定します。

LongDatePattern は、長い日付数値形式コードを指定します。

LongTimePattern は、長い時間の数値形式コードを指定します。

CultureInfo は、システムのローカル言語設定によって影響を受ける組み込みの言語数値形式コードを適用するための国コードを指定します。

HeaderFooterImagePositionType は、ヘッダーとフッターの画像の位置のタイプです。

type HeaderFooterImagePositionType byte

このセクションでは、ワークシートのヘッダーとフッターの画像位置の種類の列挙を定義します。

const (
    HeaderFooterImagePositionLeft HeaderFooterImagePositionType = iota
    HeaderFooterImagePositionCenter
    HeaderFooterImagePositionRight
)

CustomProperty は、ワークブックのカスタムプロパティを直接マッピングします。値の日付型は、int32、float64、string、bool、time.Time、nil のいずれかになります。

type CustomProperty struct {
    Name  string
    Value interface{}
}

CalcPropsOptions は、計算の状態と詳細を記録するためにアプリケーションが使用するプロパティのコレクションを定義します。

type CalcPropsOptions struct {
    CalcID                *uint
    CalcMode              *string
    FullCalcOnLoad        *bool
    RefMode               *string
    Iterate               *bool
    IterateCount          *uint
    IterateDelta          *float64
    FullPrecision         *bool
    CalcCompleted         *bool
    CalcOnSave            *bool
    ConcurrentCalc        *bool
    ConcurrentManualCount *uint
    ForceFullCalc         *bool
}

Excel 文書を作成する

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

Excel 文書に編集内容を保存するには Save を使います。

名前を付けて保存

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

指定したファイルとして Excel 文書を保存するには SaveAs を使います。

閉じるワークブック

func (f *File) Close() error

Close は、スプレッドシート用に開いている一時ファイルを閉じてクリーンアップします。

ワークシートを作成する

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

NewSheet は、ワークシート名を指定して新しいシートを作成する関数を提供し、ワークブック(スプレッドシート)に追加された後のシートのインデックスを返します。新しいスプレッドシートファイルを作成すると、Sheet1という名前のデフォルトのワークシートが作成されることに注意してください。

ワークシートを削除する

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

DeleteSheet は、指定されたワークシート名でブック内のワークシートを削除する機能を提供します。この方法は注意して使用してください。数式やグラフなどの参照の変更に影響します。削除されたワークシートの参照値がある場合、それを開いたときにファイルエラーが発生します。ワークシートが1つしか残っていない場合、この関数は無効になります。

ワークシートを移動する

func (f *File) MoveSheet(source, target string) error

MoveSheet は、シートをワークブック内の指定された位置に移動します。この関数は、ソース シートをターゲット シートの前に移動します。移動後、他のシートは左または右にシフトされます。シートがすでにターゲット位置にある場合、この関数は何も実行しません。この関数は、移動後にすべてのシートのグループを解除するわけではありません。たとえば、Sheet2 を Sheet1 の前に移動します:

err := f.MoveSheet("Sheet2", "Sheet1")

ワークシートをコピーする

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

与えられた複製ワークシートおよびターゲットワークシートインデックスコピーワークシートに従って、ターゲットワークシートインデックスはそれが既に存在するかどうかを確認するために開発者を必要とします。セル値と数式のみを含むワークシート間の複製は現在サポートされています。テーブル、イメージ、チャート、ピボットテーブルなどの要素を含むワークシート間の複製はサポートされていません。

// Sheet1 という名前のワークシートは既に存在します ...
index, err := f.NewSheet("Sheet2")
if err != nil {
    fmt.Println(err)
    return
}
err = f.CopySheet(0, index)

グループワークシート

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

GroupSheets は、指定されたワークシート名でワークシートをグループ化する機能を提供します。 グループワークシートには、アクティブなワークシートが含まれている必要があります。

ワークシートのグループ化を解除する

func (f *File) UngroupSheets() error

UngroupSheets は、ワークシートのグループ化を解除する機能を提供します。

ワークシートの背景

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

SetSheetBackground は、ワークシート名とファイル パスを指定して背景画像を設定する機能を提供します。サポートされている画像の種類: BPM、EMF、EMZ、GIF、ICO、JPEG、JPG、PNG、SVG、TIF、TIFF、WMF、および WMZ。

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

SetSheetBackgroundFromBytes は、ワークシート名、拡張子名、画像データを指定して背景画像を設定する機能を提供します。サポートされている画像の種類: BPM、EMF、EMZ、GIF、ICO、JPEG、JPG、PNG、SVG、TIF、TIFF、WMF、および WMZ。

デフォルトワークシートを設定する

func (f *File) SetActiveSheet(index int)

SetActiveSheet は、指定されたインデックスによってワークブックのデフォルトのアクティブシートを設定する関数を提供します。アクティブなインデックスは、GetSheetMap 関数によって返されるIDとは異なることに注意してください。0 以上で、ワークシートの総数よりも少ない必要があります。

アクティブシートインデックスを取得する

func (f *File) GetActiveSheetIndex() int

デフォルトのワークシートのインデックスを取得します。デフォルトのワークシートが見つからない場合は、0 を返します。

ワークシートの表示設定

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

SetSheetVisible は、与えられたワークシート名でワークシートを見えるように設定する機能を提供します。ワークブックには少なくとも1つの表示可能なワークシートが含まれている必要があります。指定したワークシートがアクティブになっている場合、この設定は無効になります。3 番目のオプションの veryHidden パラメーターは、visible が false の場合にのみ機能します。

例えば Sheet1 を隠す:

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

ワークシートの表示設定を取得する

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

GetSheetVisible は、与えられたワークシート名でワークシートを見えるようにする機能を提供します。たとえば、Sheet1 の可視状態を取得します。

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

ワークシートのプロパティを設定する

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

SetSheetProps には、ワークシートのプロパティを設定する関数が用意されています。設定できるプロパティは次のとおりです:

オプション タイプ 形容
CodeName *string シートの安定した名前を指定します。シートは、時間の経過と共に変化せず、ユーザー入力からも変更されません。この名前は、特定のシートを参照するためにコードで使用する必要があります。
EnableFormatConditionsCalculation *bool 条件付き書式の計算を評価するかどうかを示します。false に設定すると、トップ N ルールのカラー スケール、データ バー、またはしきい値の最小値/最大値は更新されません。基本的に条件付き書式 "calc" はオフです
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 です。

たとえば、ワークシートの行をデフォルトで非表示にします。

ワークシートのプロパティを設定する

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")

スプレッドシートアプリケーションには、4 種類のプリセット「カスタムスケーリングオプション」があります。これらのスケーリングオプションを設定する必要がある場合は、SetSheetProps および SetPageLayout 関数を使用して、これらの4つのスケーリングオプションにアクセスしてください:

  1. スケーリングなし(印刷シートを実際のサイズで印刷する):

     disable := false
     if err := f.SetSheetProps("Sheet1", &excelize.SheetPropsOptions{
         FitToPage: &disable,
     }); err != nil {
         fmt.Println(err)
     }
    
  2. 一枚のページにフィットするシート(印刷物を一枚のページに収まるように縮小する):

     enable := true
     if err := f.SetSheetProps("Sheet1", &excelize.SheetPropsOptions{
         FitToPage: &enable,
     }); err != nil {
         fmt.Println(err)
     }
    
  3. すべての列を1ページに収める(印刷物を縮小して1ページの幅にする):

     enable, zero := true, 0
     if err := f.SetSheetProps("Sheet1", &excelize.SheetPropsOptions{
         FitToPage: &enable,
     }); err != nil {
         fmt.Println(err)
     }
     if err := f.SetPageLayout("Sheet1", &excelize.PageLayoutOptions{
         FitToHeight: &zero,
     }); err != nil {
         fmt.Println(err)
     }
    
  4. すべての行を1ページに収める(印刷物を縮小して1ページの高さにする):

     enable, zero := true, 0
     if err := f.SetSheetProps("Sheet1", &excelize.SheetPropsOptions{
         FitToPage: &enable,
     }); err != nil {
         fmt.Println(err)
     }
     if err := f.SetPageLayout("Sheet1", &excelize.PageLayoutOptions{
         FitToWidth: &zero,
     }); err != nil {
         fmt.Println(err)
     }
    

ワークシートのプロパティを取得する

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

GetSheetProps には、ワークシートのプロパティを取得する関数が用意されています。

ワークシートビューのプロパティを設定する

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

SetSheetView は、シート ビューのプロパティを設定します。viewIndex は負の値になる可能性があり、負の場合は逆方向にカウントされます (-1 が最後のビューです)。設定できるプロパティは次のとおりです:

オプション タイプ 形容
DefaultGridColor *bool 使用側アプリケーションがデフォルトのグリッド線の色 (システム依存) を使用する必要があることを示します。colorId で指定された色をオーバーライドします。デフォルト値は true です。
RightToLeft *bool シートが「右から左」の表示モードになっているかどうかを示します。このモードでは、列 A は右端の列 B にあります。は列 A の左 1 列で、以下同様です。また、セル内の情報は右から左の形式で表示され、デフォルト値は falseです。
ShowFormulas *bool このシートに数式を表示するかどうかを示す既定値は false です。
ShowGridLines *bool このシートにグリッド線を表示するかどうかを示すデフォルト値は true です。
ShowRowColHeaders *bool シートに行見出しと列見出しを表示するかどうかを示すデフォルト値は true です。
ShowRuler *bool このシートに定規を表示することを示すと、既定値は true です。
ShowZeros *bool 「値がゼロのセルにゼロを表示する」かどうかを示します。数式を使用して空の別のセルを参照する場合、フラグが true の場合、参照される値は 0 になり、既定値は true になります。
TopLeftCell *string 左上の可視セルの位置を指定します右下のペインの左上に表示されるセルの位置 (左から右モードの場合)
View *string シートの表示方法を示すと、デフォルトでは空の文字列、使用可能なオプション (normal、pageBreakPreview、pageLayoutが使用されます)
ZoomScale *float64 パーセント値を表す現在のビューのウィンドウ ズーム倍率を指定します。この属性は、10 から 400 の範囲の値に制限されます。水平スケールと垂直スケールを一緒に表示し、デフォルト値は 100 です。

ワークシートビュープロパティを取得する

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

GetSheetView は、シート ビューのプロパティの値を取得します。viewIndex は負の値になる可能性があり、負の場合は逆方向にカウントされます (-1 が最後のビューです)。

ワークシートのページレイアウトを設定する

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

指定されたワークシート名とページレイアウトパラメータに基づいて、ワークシートのページレイアウトプロパティを設定します。現在設定でサポートされているページレイアウトプロパティ:

Size メソッドでページの用紙サイズを設定するデフォルトのページレイアウトサイズは「Letter 用紙 8.5 インチ × 11 インチ」です。次の表は Excelize のページレイアウトサイズとインデックスの Size パラメータの比較です。

インデックス 用紙サイズ
1 Letter 用紙 (8.5 インチ × 11 インチ)
2 Letter Small 用紙 (8.5 インチ × 11 インチ)
3 Tabloid 用紙 (11 インチ × 17 インチ)
4 Ledger (17 インチ × 11 インチ)
5 リーガル紙 (8.5 インチ × 14 インチ)
6 声明紙 (5.5 インチ × 8.5 インチ)
7 行政書用紙 (7.5 インチ × 10 インチ)
8 A3 (297 mm × 420 mm)
9 A4 (210 mm × 297 mm)
10 A4 小さい紙 (210 mm × 297 mm)
11 A5 (148 mm × 210 mm)
12 B4 (250 mm × 353 mm)
13 B5 (176 mm × 250 mm)
14 フォリオ紙 (8.5 インチ × 13 インチ)
15 四分紙 (215 mm × 275 mm)
16 アメリカ標準紙 (10 インチ × 14 インチ)
17 アメリカ標準紙 (11 インチ × 17 インチ)
18 ノート用紙 (8.5 インチ × 11 インチ)
19 封筒 #9 (3.875 インチ × 8.875 インチ)
20 封筒 #10 (4 1/8 インチ × 9.5 インチ)
21 封筒 #11 (4.5 インチ × 10.375 インチ)
22 封筒 #12 (4.75 インチ × 11 インチ)
23 封筒 #14 (5 インチ × 11.5 インチ)
24 C 用紙 (17 インチ × 22 インチ)
25 D 用紙 (22 インチ × 34 インチ)
26 E 用紙 (34 インチ × 44 インチ)
27 封筒 DL (110 mm × 220 mm)
28 封筒 C5 (162 mm × 229 mm)
29 封筒 C3 (324 mm × 458 mm)
30 封筒 C4 (229 mm × 324 mm)
31 封筒 C6 (114 mm × 162 mm)
32 封筒 C65 (114 mm × 229 mm)
33 封筒 B4 (250 mm × 353 mm)
34 封筒 B5 (176 mm × 250 mm)
35 封筒 B6 (176 mm × 125 mm)
36 封筒 Italy (110 mm × 230 mm)
37 モナーク封筒 (3.88 インチ × 7.5 インチ)
38 6¾ 封筒 (3.625 インチ × 6.5 インチ)
39 米国標準ファンフォールド (14.875 インチ × 11 インチ)
40 ドイツの標準ファンフォールド (8.5 インチ × 12 インチ)
41 ドイツの法的ファンフォールド (8.5 インチ × 13 インチ)
42 ISO B4 (250 mm × 353 mm)
43 官製はがき (100 mm × 148 mm)
44 標準用紙 (9 インチ × 11 インチ)
45 標準用紙 (10 インチ × 11 インチ)
46 標準用紙 (15 インチ × 11 インチ)
47 Invitation 封筒 (220 mm × 220 mm)
50 Letter Extra 用紙 (9.275 インチ × 12 インチ)
51 法定 Extra 用紙 (9.275 インチ × 15 インチ)
52 Tabloid Extra 用紙 (11.69 インチ × 18 インチ)
53 A4 Extra 用紙 (236 mm × 322 mm)
54 Letter Transverse 用紙 (8.275 インチ × 11 インチ)
55 A4 横回転 (210 mm × 297 mm)
56 余分な手紙 横回転 (9.275 インチ × 12 インチ)
57 SuperA/SuperA/A4 用紙 (227 mm × 356 mm)
58 SuperB/SuperB/A3 用紙 (305 mm × 487 mm)
59 Letter Plus 用紙 (8.5 インチ × 12.69 インチ)
60 A4 プラス紙 (210 mm × 330 mm)
61 A5 横回転 (148 mm × 210 mm)
62 JIS B5 横回転 (182 mm × 257 mm)
63 A3 extra 用紙 (322 mm × 445 mm)
64 A5 extra 用紙 (174 mm × 235 mm)
65 ISO B5 extra 用紙 (201 mm × 276 mm)
66 A2 (420 mm × 594 mm)
67 A3 横紙 (297 mm × 420 mm)
68 A3 横用紙 (322 mm × 445 mm)
69 往復はがき (200 mm × 148 mm)
70 A6 (105 mm × 148 mm)
71 日本の封筒 Kaku #2
72 日本の封筒 Kaku #3
73 日本の封筒 Chou #3
74 日本の封筒 Chou #4
75 レターペーパー横回転 (11 インチ × 8½ インチ)
76 A3 横回転 (420 mm × 297 mm)
77 A4 横回転 (297 mm × 210 mm)
78 A5 横回転 (210 mm × 148 mm)
79 JIS B4 用紙横 (364 mm × 257 mm)
80 B5 (JIS) 横回転 (257 mm × 182 mm)
81 官製はがき 横回転 (148 mm × 100 mm)
82 往復はがき 横回転 (148 mm × 200 mm)
83 A6 横回転 148 × 105 mm
84 日本の封筒 Kaku #2 横回転
85 日本の封筒 Kaku #3 横回転
86 日本の封筒 Chou #3 横回転
87 日本の封筒 Chou #4 横回転
88 B6 (JIS) (128 mm × 182 mm)
89 B6 (JIS) 横回転 (182 mm × 128 mm)
90 12 インチ × 11 インチ
91 日本の封筒 You #4
92 日本の封筒 You #4 横回転
93 中国の封筒 16K (146 mm × 215 mm)
94 中国の封筒 32K (97 mm × 151 mm)
95 中国の封筒 32K (大きい) (97 mm × 151 mm)
96 中国の封筒 #1 (102 mm × 165 mm)
97 中国の封筒 #2 (102 mm × 176 mm)
98 中国の封筒 #3 (125 mm × 176 mm)
99 中国の封筒 #4 (110 mm × 208 mm)
100 中国の封筒 #5 (110 mm × 220 mm)
101 中国の封筒 #6 (120 mm × 230 mm)
102 中国の封筒 #7 (160 mm × 230 mm)
103 中国の封筒 #8 (120 mm × 309 mm)
104 中国の封筒 #9 (229 mm × 324 mm)
105 中国の封筒 #10 (324 mm × 458 mm)
106 中国の封筒 16K 横回転
107 中国の封筒 32K 横回転
108 中国の封筒 32K (大きい) 横回転
109 中国の封筒 #1 横回転 (165 mm × 102 mm)
110 中国の封筒 #2 横回転 (176 mm × 102 mm)
111 中国の封筒 #3 横回転 (176 mm × 125 mm)
112 中国の封筒 #4 横回転 (208 mm × 110 mm)
113 中国の封筒 #5 横回転 (220 mm × 110 mm)
114 中国の封筒 #6 横回転 (230 mm × 120 mm)
115 中国の封筒 #7 横回転 (230 mm × 160 mm)
116 中国の封筒 #8 横回転 (309 mm × 120 mm)
117 中国の封筒 #9 横回転 (324 mm × 229 mm)
118 中国の封筒 #10 横回転 (458 mm × 324 mm)

Orientation はワークシートの向きを指定し、デフォルトの向きは portrait です。このフィールドに指定できる値は、portrait と landscape です。

FirstPageNumber は最初に印刷されたページ番号を指定しました。値を指定しない場合は、「自動」と見なされます。

AdjustTo は印刷の拡大 / 縮小を指定しました。この属性は、10 (10%) から 400 (400%) の範囲の値に制限されます。この設定は、FitToWidth や FitToHeight が使用されている場合に上書きされます。

FitToHeight は、収まる垂直方向のページ数を指定しました。

FitToWidth は、収まる水平方向のページ数を指定します。

BlackAndWhite は白黒印刷を指定しました。

PageOrder は複数のページの順序を指定します。受け入れられる値: overThenDown および downThenOver。

たとえば、Sheet1 という名前のシート ページ レイアウトをモノクロ印刷、開始ページ番号 2、横向き、A4 (小) 210 × 297 mm 用紙、縦に収まるように2ページ、収まるように横に2つのページ:

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)

GetPageLayout には、ワークシートのページ レイアウトを取得する関数が用意されています。

ワークシートのページ余白を設定する

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

SetPageMargins は、ワークシートのページ余白を設定する機能を提供します。利用可能なオプション:

オプション タイプ 形容
Bottom *float64 下
Footer *float64 フッター
Header *float64 ヘッダ
Left *float64 左
Right *float64 右
Top *float64 上
Horizontally *bool ページの中央: 水平方向
Vertically *bool ページの中央: 垂直方向

ワークシートのページ余白を取得する

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

GetPageMargins は、ワークシートのページ余白を取得する関数を提供します。

ブックのプロパティを設定する

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

SetWorkbookProps は、ブックのプロパティを設定する関数を提供します。利用可能なオプション:

オプション タイプ 形容
Date1904 *bool ブック内のシリアル日付時刻を日付に変換するときに、1900 年または 1904 年の日付システムを使用するかどうかを示します。
FilterPrivacy *bool アプリケーションがブックで個人を特定できる情報 (PII) を検査したかどうかを示すブール値を指定します。このフラグが設定されている場合、アプリケーションは、ユーザーがドキュメントに PII を挿入するアクションを実行するたびにユーザーに警告します。
CodeName *string このブックを作成したアプリケーションのコード名を指定します。この属性を使用して、アプリケーションの増分リリースでファイルの内容を追跡します。

ブックのプロパティを取得する

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

GetWorkbookProps は、ブックのプロパティを取得する関数を提供します。

ヘッダとフッタを設定する

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

SetHeaderFooter は、与えられたワークシート名と制御文字によってヘッダーとフッターを設定する機能を提供します。

ヘッダーとフッターは、次の設定フィールドを使って指定します。

田畑 説明
AlignWithMargins ヘッダーフッターの余白をページの余白に揃えます
DifferentFirst 別の最初のページのヘッダーとフッターのインジケーター
DifferentOddEven 異なる奇数ページと偶数ページのヘッダーとフッターのインジケーター
ScaleWithDoc ドキュメントスケーリングを使用してヘッダーとフッターをスケーリングします
OddFooter 奇数ページ フッター、または DifferentOddEven が false の場合はプライマリ ページ フッター
OddHeader 奇数ヘッダー、または DifferentOddEven が false の場合はプライマリ ページ ヘッダー
EvenFooter ページフッターも
EvenHeader ページヘッダーも
FirstFooter 最初のページのフッター
FirstHeader 最初のページのヘッダー

以下のフォーマットコードは、6 つの文字列型フィールドで使用できます。OddHeader, OddFooter, EvenHeader, EvenFooter, FirstFooter, FirstHeader

書式設定コード 説明
&& キャラクター "&"
&font-size テキストフォントのサイズ。font-size はポイント単位の 10 進数のフォントサイズです
&"font name,font type" テキストフォント名文字列、フォント名、およびテキストフォントタイプ文字列、フォントタイプ
&"-,Regular" 通常のテキスト形式。太字と斜体のモードをオフに切り替えます
&A 現在のワークシートのタブ名
&B or &"-,Bold" 太字のテキスト形式、オフからオン、またはその逆。デフォルトモードはオフです
&D 現在の日付
&C センターセクション
&E 二重下線テキスト形式
&F 現在のブックのファイル名
&G 背景としてオブジェクトを描画します(AddHeaderFooterImage を使用する)
&H シャドウテキスト形式
&I or &"-,Italic" 斜体のテキスト形式
&K テキストフォントの色
RGB カラーは RRGGBB として指定されます
テーマカラーは TTSNNN として指定されます。ここで、TT はテーマカラー ID、S は "+" のいずれかです。または "-" ティント/シェード値の、そして NNN はティント/シェード値です
&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`,
})

この例は次のことを示しています:

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

ヘッダーとフッターの画像を追加する

func (f *File) AddHeaderFooterImage(sheet string, opts *HeaderFooterImageOptions) error

AddHeaderFooterImage は、&G を介してヘッダーとフッターの定義で参照できるグラフィックを設定するメカニズムを提供します。サポートされている画像タイプは、EMF、EMZ、GIF、ICO、JPEG、JPG、PNG、SVG、TIF、TIFF、WMF、WMZ です。

名前を設定する

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

与えられた名前とスコープに基づいて名前を設定しますデフォルトのスコープはワークブックです。例えば、

err := f.SetDefinedName(&excelize.DefinedName{
    Name:     "額",
    RefersTo: "Sheet1!$A$2:$D$5",
    Comment:  "定義名コメント",
})

ワークシートの印刷領域と印刷タイトルの設定:

ワークシートの印刷領域と印刷タイトルの設定

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)
}

RefersTo プロパティにカンマなしで 1 つの列範囲のみを入力すると、「左側で繰り返す列」としてのみ機能します。例:

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

RefersTo プロパティにコンマなしで 1 つの行範囲のみを入力すると、「上部で繰り返す行」としてのみ機能します。例:

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

RefersTo 関数でもこの関数を使用できます。例えば:

err := f.SetDefinedName(&excelize.DefinedName{
    Name:     "カスタム範囲",
    RefersTo: "Sheet1!$A$2+Sheet1!$D$5",
    Scope:    "Sheet1",
})

名前を取得する

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

範囲内のワークブックとワークシートの名前のリストを取得します。

定義された名前を削除

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

DeleteDefinedName は、ワークブックまたはワークシートの定義名を削除する機能を提供します。スコープが指定されていない場合、デフォルトのスコープはワークブックです。例えば:

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

アプリケーションのプロパティを設定する

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

SetAppProps は、ドキュメントアプリケーションのプロパティを設定する機能を提供します。設定できるプロパティは次のとおりです。

プロパティ 説明
Application このドキュメントを作成したアプリケーションの名前。
ScaleCrop ドキュメントサムネイルの表示モードを示します。この要素を true に設定すると、ドキュメントのサムネイルをディスプレイに合わせて拡大縮小できます。この要素を false に設定すると、ドキュメントのサムネイルをトリミングして、表示に合うセクションのみを表示できるようになります。
DocSecurity 数値としてのドキュメントのセキュリティレベル。ドキュメントのセキュリティは次のように定義されます
1 - ドキュメントはパスワードで保護されています
2 - ドキュメントは読み取り専用として開くことをお勧めします
3 - ドキュメントは読み取り専用として開くように強制されます
4 - ドキュメントは注釈のためにロックされています
Company ドキュメントに関連付けられている会社の名前。
LinksUpToDate ドキュメント内のハイパーリンクが最新であるかどうかを示します。この要素を true に設定して、ハイパーリンクが更新されることを示します。 この要素を false に設定して、ハイパーリンクが古くなっていることを示します。
HyperlinksChanged この部分の1つ以上のハイパーリンクが、この部分でプロデューサーによって排他的に更新されたことを指定します。このドキュメントを開く次のプロデューサーは、このパートで指定された新しいハイパーリンクでハイパーリンクの関係を更新する必要があります。
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)

GetAppProps は、ドキュメントアプリケーションのプロパティを取得する関数を提供します。

ドキュメントのプロパティを設定する

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

ワークブックのコアプロパティを設定します。設定できるプロパティは次のとおりです:

プロパティ 説明
Category このパッケージの内容の分類。
ContentStatus コンテンツの状態。たとえば、値には "Draft"、"Reviewed"、および "Final" が含まれる場合があります。
Created リソースのコンテンツの作成時間。
Creator 主にリソースのコンテンツを作成するエンティティ。
Description リソースの内容の説明。
Identifier 特定のコンテキスト内のリソースへの明確な参照。
Keywords 検索とインデックス作成をサポートするキーワードの区切られたセット。これは通常、プロパティ内の他の場所では使用できない用語の一覧です。
Language リソースの知的コンテンツの言語。
LastModifiedBy 最後の変更を実行したユーザー。識別は環境固有です。
Modified リソースのコンテンツの変更時刻。
Revision リソースのコンテンツのリビジョン番号。
Subject リソースのコンテンツのトピック。
Title リソースに指定された名前。
Version バージョン番号。この値は、ユーザーまたはアプリケーションによって設定されます。

例えば:

err := f.SetDocProps(&excelize.DocProperties{
    Category:       "category",
    ContentStatus:  "Draft",
    Created:        "2019-06-04T22:00:10Z",
    Creator:        "Go Excelize",
    Description:    "This file created by Go Excelize",
    Identifier:     "xlsx",
    Keywords:       "Spreadsheet",
    LastModifiedBy: "Go Author",
    Modified:       "2019-06-04T22:00:10Z",
    Revision:       "0",
    Subject:        "Test Subject",
    Title:          "Test Title",
    Language:       "en-US",
    Version:        "1.0.0",
})

ドキュメントのプロパティを取得する

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

ワークブックのコアとなるプロパティを取得してください。

カスタムプロパティを設定する

func (f *File) SetCustomProps(prop CustomProperty) error

SetCustomPropsは、指定されたプロパティ名と値でカスタムファイルプロパティを設定する関数を提供します。プロパティ名が既に存在する場合は更新され、存在しない場合は新しいプロパティが追加されます。値の型は、int32、float64、bool、string、time.Time、または nil です。値が nil の場合、プロパティは削除されます。プロパティ値が正しい型でない場合、関数はエラーを返します。

カスタムプロパティを取得する

func (f *File) GetCustomProps() ([]CustomProperty, error)

GetCustomProps は、カスタム ファイル プロパティを取得する関数を提供します。

計算プロパティを設定する

func (f *File) SetCalcProps(opts *CalcPropsOptions) error

SetCalcProps は、計算プロパティを設定する関数を提供します。

CalcMode プロパティのオプションの値は、manual、auto、または autoNoTable です。

RefMode プロパティのオプションの値は、A1 または R1C1 です。

計算プロパティを取得する

func (f *File) GetCalcProps() (CalcPropsOptions, error)

GetCalcProps は計算プロパティを取得する関数を提供します。

ブックを保護する

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

ProtectWorkbook は、他のユーザーが誤ってまたは故意にブック内のデータを変更、移動、または削除するのを防ぐ機能を提供します。 オプション フィールド AlgorithmName は、ハッシュ アルゴリズムを指定し、XOR、MD4、MD5、SHA-1、SHA2-56、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

UnprotectWorkbook は、ワークブックの保護を解除する機能を提供します。オプションのパスワード パラメーターを指定して、パスワードの検証でワークブックの保護を解除します。

results matching ""

    No results matching ""