Komórka

RichTextRun definiuje właściwości tekstu sformatowanego.

type RichTextRun struct {
    Font *Font
    Text string
}

HyperlinkOpts służy do określania opcjonalnych właściwości hiperłącza, takich jak tekst wyświetlany i podpowiedź.

type HyperlinkOpts struct {
    Display *string
    Tooltip *string
}

FormulaOpts służy do określania specjalnych typów formuł w funkcji SetCellFormula.

type FormulaOpts struct {
    Type *string // typ formuły
    Ref  *string // odniesienie do formuły współdzielonej
}

Ustawienie wartości komórki

func (f *File) SetCellValue(sheet, cell string, value interface{}) error

Ustawia wartość komórki na podstawie podanej nazwy arkusza i współrzędnych komórki. Ta funkcja jest bezpieczna dla gorutyn. Podane współrzędne nie powinny znajdować się w pierwszym wierszu tabeli, a do ustawiania tekstu powinno się używać formy liczby mnogiej.

Obsługiwane typy danych
int
int8
int16
int32
int64
uint
uint8
uint16
uint32
uint64
float32
float64
string
[]byte
time.Duration
time.Time
bool
nil

Należy zauważyć, że ta funkcja domyślnie ustawia wartość komórki o typie time.Time z formatem liczbowym m/d/rr gg:mm, ale można to zmienić, używając SetCellStyle. Jeśli trzeba ustawić specjalne daty w Excelu, które nie mogą być reprezentowane przez typ time.Time w języku Go, takie jak 0 stycznia 1900 roku lub 29 lutego 1900 roku, należy ustawić wartość komórki na 0 lub 60, a następnie ustawić ją zgodnie ze stylem zawierającym format liczbowy daty.

Ustawienie wartości logicznej

func (f *File) SetCellBool(sheet, cell string, value bool) error

Ustawia wartość logicznej komórki na podstawie podanej nazwy arkusza i współrzędnych komórki.

Ustawienie domyślnej wartości tekstowej

func (f *File) SetCellDefault(sheet, cell, value string) error

Ustawia wartość tekstowej komórki na podstawie podanej nazwy arkusza i współrzędnych komórki, a znaki nie będą podlegały filtrowaniu specjalnych znaków.

Ustawienie wartości liczbowej

func (f *File) SetCellInt(sheet, cell string, value int) error

Ustawia wartość liczbowej komórki na podstawie podanej nazwy arkusza i współrzędnych komórki.

Ustawienie wartości zmiennoprzecinkowej

func (f *File) SetCellFloat(sheet, cell string, value float64, precision, bitSize int) error

Ustawia wartość komórki zmiennoprzecinkowej na podstawie podanej nazwy arkusza, współrzędnych komórki, wartości zmiennoprzecinkowej, dokładności części ułamkowej liczby zmiennoprzecinkowej i typu liczby zmiennoprzecinkowej.

Ustawienie wartości tekstowej

func (f *File) SetCellStr(sheet, cell, value string) error

Ustawia wartość tekstowej komórki na podstawie podanej nazwy arkusza i współrzędnych komórki, znaki będą podlegały filtrowaniu specjalnych znaków, a łączna długość ciągu nie powinna przekraczać 32767, ewentualne nadmiarowe znaki zostaną zignorowane.

Ustawianie stylu komórki

func (f *File) SetCellStyle(sheet, hCell, vCell string, styleID int) error

Ustawia wartość komórki na podstawie podanej nazwy arkusza, współrzędnych komórki i indeksu stylu. Ta funkcja jest bezpieczna w wątkach. Indeks stylu można uzyskać za pomocą funkcji NewStyle. Należy zauważyć, że diagonalDown i diagonalUp w obrębie tych samych współrzędnych muszą zachować spójne kolory. SetCellStyle zastąpi istniejący styl komórki bez łączenia lub nakładania stylów.

  • Przykład 1: Ustawienie stylu obramowania dla komórki D7 w arkuszu o nazwie Sheet1:
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)

Ustawienie stylu obramowania dla komórki

Cztery krawędzie komórki D7 są ustawione z różnymi stylami i kolorami, które są powiązane z parametrami przekazanymi do funkcji NewStyle. Aby ustawić różne style, proszę odnieść się do dokumentacji w tym rozdziale.

  • Przykład 2: Ustawienie stylu gradientowego dla komórki D7 w arkuszu o nazwie Sheet1:
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)

Ustawienie stylu gradientowego dla komórki

Komórka D7 jest wypełniona gradientowymi kolorami, co jest powiązane z parametrami przekazanymi do funkcji NewStyle. Aby ustawić różne style, proszę odnieść się do dokumentacji w tym rozdziale.

  • Przykład 3: Ustawienie wypełnienia komórki D7 w arkuszu o nazwie Sheet1 na kolor jednolity:
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)

Ustawienie wypełnienia komórki kolorem jednolitym

Komórka D7 jest wypełniona jednolitym kolorem.

  • Przykład 4: Ustawienie odstępów między znakami i kąta rotacji dla komórki D7 w arkuszu o nazwie Sheet1:
f.SetCellValue("Sheet1", "D7", "Styl")
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)

Ustawienie odstępów między znakami i kąta rotacji

  • Przykład 5: Daty i godziny w programie Excel są reprezentowane przez liczby rzeczywiste, na przykład 2017/7/4 12:00:00 PM może być reprezentowane przez liczbę 42920.5. Ustaw format czasu dla komórki D7 w arkuszu o nazwie Sheet1:
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)

Ustaw format czasu dla komórki

Komórka D7 jest ustawiona z formatem czasowym. Zauważ, że gdy szerokość komórki jest zbyt wąska, by wyświetlić całą zawartość, pojawi się jako ####. Można dostosować szerokość kolumny poprzez przeciąganie lub poprzez wywołanie funkcji SetColWidth w celu ustawienia odpowiedniej szerokości kolumny dla normalnego wyświetlania.

  • Przykład 6: Ustaw czcionkę, rozmiar czcionki, kolor i styl pochylenia dla komórki D7 w arkuszu o nazwie Sheet1:
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)

Ustaw czcionkę, rozmiar czcionki, kolor i styl pochylenia dla komórki

  • Przykład 7: Zablokuj i ukryj komórkę D7 w arkuszu o nazwie Sheet1:
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)

Aby zablokować lub ukryć komórki, chron arkusz. Na karcie "Recenzja" kliknij "Chronienie arkusza".

func (f *File) SetCellHyperLink(sheet, cell, link, linkType string, opts ...HyperlinkOpts) error

Ustaw hiperłącze dla komórki na podstawie danego arkusza, współrzędnych komórki, zasobu łącza i typu zasobu. Typ zasobu obejmuje dwa typy: adres zewnętrznego łącza External i wewnętrzne łącze do pozycji w skoroszycie Location. Maksymalna liczba hiperłączy w każdym arkuszu jest ograniczona do 65530. Ta metoda ustawia tylko hiperłącze dla komórki bez wpływu na wartość komórki. Jeśli chcesz ustawić wartość komórki, proszę ustawić ją osobno za pomocą funkcji takich jak SetCellStyle lub SetSheetRow.

  • Przykład 1: Dodaj zewnętrzne łącze do komórki A3 w arkuszu o nazwie Sheet1:
display, tooltip := "https://github.com/xuri/excelize", "Excelize na GitHubie"
if err := f.SetCellHyperLink("Sheet1", "A3",
    "https://github.com/xuri/excelize", "External", excelize.HyperlinkOpts{
        Display: &display,
        Tooltip: &tooltip,
    }); err != nil {
    fmt.Println(err)
}
// Ustaw styl czcionki i styl podkreślenia dla komórki
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)
  • Przykład 2: Dodaj wewnętrzne łącze do komórki A3 w arkuszu o nazwie Sheet1:
err := f.SetCellHyperLink("Sheet1", "A3", "Sheet1!A40", "Location")
func (f *File) SetCellRichText(sheet, cell string, runs []RichTextRun) error
Ustaw formatowanie tekstu sformatowanego dla określonej komórki na podstawie określonego arkusza, współrzędnych komórki i formatowania tekstu sformatowanego.

Na przykład, ustaw format tekstu sformatowanego dla komórki `A1` w arkuszu o nazwie `Sheet1`:

![Ustaw format tekstu sformatowanego](/storage/20231012/uog6n6jRKVmPjoBa.png)
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: "pogrubienie",
            Font: &excelize.Font{
                Bold:   true,
                Color:  "2354E8",
                Family: "Times New Roman",
            },
        },
        // ... (Inne sekwencje formatowania tekstu)
    }); err != nil {
        fmt.Println(err)
        return
    }
    // ... (Inne ustawienia stylu komórki i zapisywanie)
}
func (f *File) GetCellRichText(sheet, cell string) ([]RichTextRun, error)

Pobierz formatowanie tekstu sformatowanego określonej komórki na podstawie określonego arkusza i współrzędnych komórki.

func (f *File) GetCellValue(sheet, cell string, opts ...Options) (string, error)

Pobiera wartość określonej komórki na podstawie określonego arkusza i współrzędnych komórki, a wartość zwracana zostanie przekonwertowana do typu string. Jeśli można zastosować format komórki do wartości komórki, zostanie zwrócona zastosowana wartość; w przeciwnym razie zostanie zwrócona oryginalna wartość. Wartości wszystkich komórek w ramach obszaru scalonego są takie same. Ta funkcja jest bezpieczna w przypadku współbieżności.

func (f *File) GetCellType(sheet, cell string) (CellType, error)

Pobierz typ danych określonej komórki na podstawie określonego arkusza i współrzędnych komórki.

func (f *File) GetCols(sheet string, opts ...Options) ([][]string, error)

Pobiera wartości wszystkich komórek na określonym arkuszu według kolumny i zwraca je w postaci dwuwymiarowej tablicy, a wartości komórek są konwertowane do typu string. Jeśli można zastosować format komórki do wartości komórki, zostanie użyta zastosowana wartość; w przeciwnym razie zostanie użyta oryginalna wartość.

Na przykład, aby pobrać i iterować przez wszystkie wartości komórek na arkuszu o nazwie Sheet1 według kolumny:

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)

Pobiera wartości wszystkich komórek na określonym arkuszu według wiersza i zwraca je w postaci dwuwymiarowej tablicy, a wartości komórek są konwertowane do typu string. Jeśli można zastosować format komórki do wartości komórki, zostanie użyta zastosowana wartość; w przeciwnym razie zostanie użyta oryginalna wartość. GetRows pobiera wiersze z komórkami zawierającymi wartości lub formuły. Puste komórki na końcu wiersza zostaną pominięte, a liczba komórek w każdym wierszu może się różnić.

Na przykład, aby pobrać i iterować przez wszystkie wartości komórek na arkuszu o nazwie Sheet1 według wiersza:

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)
Pobierz hiperłącze określonej komórki na podstawie określonego arkusza i współrzędnych komórki. Jeśli komórka zawiera hiperłącze, zostanie zwrócone `true` i adres hiperłącza; w przeciwnym razie zostanie zwrócone `false` i pusty adres hiperłącza.

Na przykład, aby pobrać hiperłącze komórki o współrzędnych `H6` na arkuszu o nazwie `Sheet1`:

```go
link, target, err := f.GetCellHyperLink("Sheet1", "H6")
func (f *File) GetCellStyle(sheet, cell string) (int, error)

Pobierz indeks stylu określonej komórki na podstawie arkusza i współrzędnych komórki, a następnie pobrany indeks można użyć jako parametr podczas wywoływania funkcji SetCellStyle do ustawiania stylu komórki.

func (f *File) MergeCell(sheet, hCell, vCell string) error

Scal komórki w określonym obszarze arkusza i współrzędnych komórki. Tylko wartość komórki w lewym górnym rogu scalonego obszaru zostanie zachowana, a wartości innych komórek zostaną zignorowane. Na przykład scal komórki w obszarze D3:E9 na arkuszu o nazwie Sheet1:

err := f.MergeCell("Sheet1", "D3", "E9")

Jeśli określony obszar współrzędnych komórki pokrywa się z istniejącymi scalonymi komórkami, istniejące scalone komórki zostaną usunięte.

func (f *File) UnmergeCell(sheet string, hCell, vCell string) error

Rozłącz komórki w określonym obszarze arkusza i współrzędnych komórki. Na przykład rozłącz komórki w obszarze D3:E9 na arkuszu o nazwie Sheet1:

err := f.UnmergeCell("Sheet1", "D3", "E9")

Jeśli określony obszar współrzędnych komórek zawiera wiele scalonych komórek, wszystkie scalone komórki zostaną rozłączone.

Pobierz obszar współrzędnych i wartości wszystkich scalonych komórek na określonym arkuszu.

func (f *File) GetMergeCells(sheet string) ([]MergeCell, error)
func (m *MergeCell) GetCellValue() string

GetCellValue zwraca wartość scalonej komórki.

func (m *MergeCell) GetStartAxis() string

GetStartAxis zwraca współrzędne lewego górnego rogu obszaru scalonej komórki, na przykład C2.

func (m *MergeCell) GetEndAxis() string

GetEndAxis zwraca współrzędne prawego dolnego rogu obszaru scalonej komórki, na przykład D4.

func (f *File) AddComment(sheet string, comment Comment) error

Dodaj komentarz do określonego arkusza, współrzędnych komórki i parametrów stylu (informacje o autorze i tekście). Informacje o autorze mogą mieć maksymalną długość 255 znaków, a maksymalna długość treści tekstu wynosi 32512 znaków. Znaki poza tym zakresem zostaną zignorowane. Na przykład dodaj komentarz do komórki Sheet1!$A$3:

Dodaj komentarz w dokumencie programu Excel

err := f.AddComment("Sheet1", excelize.Comment{
    Cell:   "A3",
    Author: "Excelize",
    Paragraph: []excelize.RichTextRun{
        {Text: "Excelize: ", Font: &excelize.Font{Bold: true}},
        {Text: "To jest komentarz."},
    },
})
func (f *File) GetComments(sheet string) ([]Comment, error)

Pobierz wszystkie komentarze komórek na określonym arkuszu.

func (f *File) DeleteComment(sheet, cell string) error

Usuń komentarz w określonym arkuszu i współrzędnych komórki. Na przykład usuń komentarz w komórce Sheet1!$A$30:

err := f.DeleteComment("Sheet1", "A30")