セル

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

この関数は、time.Time型のセルの値をデフォルトで m/d/yy h:mmの数値形式で設定し、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 関数を用いて取得できます。同じ座標領域内の diagonalDown および diagonalUp は一貫した色を維持する必要があります。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 の4つの境界線に異なるスタイルと色が設定されます。これは 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, 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)

文字間隔と回転角度の設定

  • Example 5: Excelの日付と時刻は実数で表され、例えば2017/7/4 12:00:00 PMは数値42920.5で表されます。ワークシート名がSheet1のセルD7の時間形式を設定します:
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関数を呼び出して列の幅を設定できます。

  • Example 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)

セルのフォント、フォントサイズ、色、斜体スタイルを設定

  • Example 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の2種類があります。各ワークシートのハイパーリンクの最大数は65530に制限されています。このメソッドはセルのハイパーリンクを設定するだけで、セルの値に影響を与えません。セルの値を設定する必要がある場合は、SetCellStyleSetSheetRowなどの関数を使用して別々に設定してください。

  • Example 1: ワークシート名がSheet1のセルA3に外部リンクを追加します:
display, tooltip := "https://github.com/xuri/excelize", "Excelize on GitHub"
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)
  • Example 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: "bold",
            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")