Wprowadzenie do Excelize
Excelize to podstawowa biblioteka do manipulowania dokumentami programu Office Excel napisanymi w języku Go, oparta na międzynarodowych standardach ECMA-376 i ISO/IEC 29500. Może być używana do odczytu i zapisu dokumentów arkusza kalkulacyjnego utworzonych przez Microsoft Excel ™ 2007 i nowsze, obsługując różne formaty dokumentów, takie jak XLAM / XLSM / XLSX / XLTM / XLTX. Jest ona wysoko kompatybilna z dokumentami zawierającymi style, obrazy (tabele), tabele przestawne, filtrujące elementy interfejsu użytkownika i inne skomplikowane składniki, oraz zapewnia interfejs API do przetwarzania arkuszy kalkulacyjnych zawierających dane na dużą skalę. Może być stosowana w różnych platformach raportowania, obliczeń w chmurze, obliczeń na krawędzi sieci oraz innych systemach. Do użytkowania tej biblioteki wymagana jest wersja języka Go 1.16 lub nowsza.
Instalacja
Poniższa tabela przedstawia minimalne wymagania biblioteki podstawowej Excelize dla różnych wersji języka Go:
Wersja Excelize | Minimalne wymagania dla języka Go |
---|---|
v2.7.0 | 1.16 |
v2.4.0 ~ v2.6.1 | 1.15 |
v2.0.2 ~ v2.3.2 | 1.10 |
v1.0.0 ~ v2.0.1 | 1.6 |
Używanie najnowszej wersji Excelize wymaga wersji języka Go 1.16 lub nowszej. Należy zauważyć, że istnieją zmiany niekompatybilne w wersji Go 1.21.0, które powodują, że podstawowa biblioteka Excelize nie działa poprawnie w tej wersji. Jeśli korzystasz z wersji Go 1.21.x, należy dokonać aktualizacji do wersji 1.21.1 lub wyższej.
- Polecenie instalacyjne
go get github.com/xuri/excelize
- Jeśli korzystasz z modułów Go do zarządzania pakietami, skorzystaj z poniższego polecenia, aby zainstalować najnowszą wersję.
go get github.com/xuri/excelize/v2
Aktualizacja
- Polecenie aktualizacyjne
go get -u github.com/xuri/excelize/v2
Tworzenie Dokumentów Excel
Poniżej znajduje się prosty przykład tworzenia dokumentu Excel:
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)
}
}()
// Utwórz nowy arkusz
index, err := f.NewSheet("Arkusz2")
if err != nil {
fmt.Println(err)
return
}
// Ustaw wartości komórek
f.SetCellValue("Arkusz2", "A2", "Witaj, świecie.")
f.SetCellValue("Arkusz1", "B2", 100)
// Ustaw domyślny arkusz kalkulacyjny w skoroszycie
f.SetActiveSheet(index)
// Zapisz plik w określonej ścieżce
if err := f.SaveAs("Książka1.xlsx"); err != nil {
fmt.Println(err)
}
}
Odczyt Dokumentów Excel
Poniżej znajduje się przykład odczytu dokumentów Excela:
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("Książka1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Pobierz wartość określonej komórki w arkuszu
cell, err := f.GetCellValue("Arkusz1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(cell)
// Pobierz wszystkie komórki na Arkusz1
rows, err := f.GetRows("Arkusz1")
if err != nil {
fmt.Println(err)
return
}
for _, row := range rows {
for _, colCell := range row {
fmt.Print(colCell, "\t")
}
fmt.Println()
}
}
Tworzenie wykresów w dokumencie programu Excel
Tworzenie wykresów jest bardzo proste przy użyciu Excelize i wymaga tylko kilku linii kodu. Możesz budować wykresy na podstawie istniejących danych w arkuszu kalkulacyjnym lub dodać dane do arkusza kalkulacyjnego, a następnie tworzyć wykresy.
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)
}
}()
for idx, row := range [][]interface{}{
{nil, "Jabłko", "Pomarańcza", "Gruszka"}, {"Małe", 2, 3, 3},
{"Normalne", 5, 2, 4}, {"Duże", 6, 7, 8},
} {
cell, err := excelize.CoordinatesToCellName(1, idx+1)
if err != nil {
fmt.Println(err)
return
}
f.SetSheetRow("Sheet1", cell, &row)
}
if err := f.AddChart("Sheet1", "E1", &excelize.Chart{
Type: excelize.Col3DClustered,
Series: []excelize.ChartSeries{
{
Name: "Sheet1!$A$2",
Categories: "Sheet1!$B$1:$D$1",
Values: "Sheet1!$B$2:$D$2",
},
{
Name: "Sheet1!$A$3",
Categories: "Sheet1!$B$1:$D$1",
Values: "Sheet1!$B$3:$D$3",
},
{
Name: "Sheet1!$A$4",
Categories: "Sheet1!$B$1:$D$1",
Values: "Sheet1!$B$4:$D$4",
}},
Title: []excelize.RichTextRun{
{
Text: "Wykres słupkowy 3D owoców",
},
},
}); err != nil {
fmt.Println(err)
return
}
// Zapisz plik pod wskazaną ścieżką
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
Wstawianie obrazów do dokumentu programu Excel
package main
import (
"fmt"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
"github.com/xuri/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Wstawianie obrazu
if err := f.AddPicture("Sheet1", "A2", "image.png", nil); err != nil {
fmt.Println(err)
return
}
// Wstawianie obrazu do arkusza kalkulacyjnego i ustawienie skali obrazu
if err := f.AddPicture("Sheet1", "D2", "image.jpg",
&excelize.GraphicOptions{ScaleX: 0.5, ScaleY: 0.5}); err != nil {
fmt.Println(err)
return
}
// Wstawianie obrazu do arkusza kalkulacyjnego i ustawienie właściwości drukowania obrazu
enable, disable := true, false
if err := f.AddPicture("Sheet1", "H2", "image.gif",
&excelize.GraphicOptions{
PrintObject: &enable,
LockAspectRatio: false,
OffsetX: 15,
OffsetY: 10,
Locked: &disable,
}); err != nil {
fmt.Println(err)
return
}
// Zapisz plik
if err = f.Save(); err != nil {
fmt.Println(err)
}
}