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

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