セル
RichTextRun
はリッチテキストのプロパティを定義します。
type RichTextRun struct {
Font *Font
Text string
}
HyperlinkOpts
は表示テキストやスクリーンのヒントなどのオプションのハイパーリンクのプロパティを指定するために使用されます。
type HyperlinkOpts struct {
Display *string
Tooltip *string
}
FormulaOpts
はSetCellFormula
関数で特殊な数式タイプを指定するために使用されます。
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
に制限されています。このメソッドはセルのハイパーリンクを設定するだけで、セルの値に影響を与えません。セルの値を設定する必要がある場合は、SetCellStyle
やSetSheetRow
などの関数を使用して別々に設定してください。
- 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`にリッチテキスト形式を設定する場合:

```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
にコメントを追加するには次のようにします:
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")