Excelize'a Giriş
Excelize, Go dilinde yazılmış ve uluslararası standartlar ECMA-376 ve ISO/IEC 29500'e dayalı olarak ofis Excel belgelerini manipüle etmek için kullanılan temel bir kütüphanedir. Microsoft Excel™ 2007 ve sonrası tarafından oluşturulan elektronik tablo belgelerini okumak ve yazmak için kullanılabilir, XLAM / XLSM / XLSX / XLTM / XLTX gibi çeşitli belge biçimlerini destekler. Stiller, resimler (tablolar), özet tablolar, dilimleyiciler ve diğer karmaşık bileşenler içeren belgelerle yüksek uyumluluk sağlar ve büyük ölçekli verilerle çalışan çalışma kitaplarını işlemek için akışlı okuma ve yazma API sağlar. Çeşitli rapor platformları, bulut bilişim, kenar bilişim ve diğer sistemlere uygulanabilir. Bu kütüphaneyi kullanmak için Go dilinin 1.16 sürümü veya daha yenisi gereklidir.
Kurulum
Aşağıdaki tablo, Excelize temel kütüphanesinin farklı Go dil sürümleri için minimum gereksinimlerini listeler:
Excelize Sürümü | Go Diline Minimum Gereksinim |
---|---|
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 |
En son sürümü kullanmak için en az 1.16 Go dil sürümü gereklidir. Lütfen dikkat: Go 1.21.0'da uyumsuz değişiklikler bulunmaktadır, bu durum Excelize temel kütüphanesinin bu sürümde düzgün çalışmamasına yol açar. Go 1.21.x kullanıyorsanız, lütfen Go 1.21.1 veya daha üst bir sürüme geçin.
- Kurulum Komutu
go get github.com/xuri/excelize
- Paketleri yönetmek için Go Modülleri kullanıyorsanız, en son sürümü yüklemek için aşağıdaki komutu kullanın:
go get github.com/xuri/excelize/v2
Güncelleme
- Güncelleme Komutu
go get -u github.com/xuri/excelize/v2
Excel Belgeleri Oluşturma
Aşağıda, bir Excel belgesi oluşturmanın basit bir örneği bulunmaktadır:
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)
}
}()
// Yeni bir sayfa oluştur
index, err := f.NewSheet("Sheet2")
if err != nil {
fmt.Println(err)
return
}
// Hücre değerlerini ayarla
f.SetCellValue("Sheet2", "A2", "Merhaba dünya.")
f.SetCellValue("Sheet1", "B2", 100)
// Çalışma kitabının varsayılan çalışsayısını ayarla
f.SetActiveSheet(index)
// Dosyayı belirtilen yol üzerine kaydet
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
Excel Belgelerini Okuma
Aşağıdaki, Excel belgelerini okuma örneğidir:
package main
import (
"fmt"
"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)
}
}()
// Çalışsayısı içinde belirli bir hücrenin değerini al
cell, err := f.GetCellValue("Sheet1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(cell)
// Sheet1 içindeki tüm hücreleri al
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()
}
}
Excel Belgelerinde Grafik Oluşturma
Excelize kullanarak grafik oluşturmak oldukça basittir, sadece birkaç satır kod gerektirir. Tablodaki mevcut verilere dayalı grafikler oluşturabilir veya önce tabloya veri ekleyip sonra grafik oluşturabilirsiniz.
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, "Elma", "Portakal", "Armut"}, {"Küçük", 2, 3, 3},
{"Normal", 5, 2, 4}, {"Büyük", 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: "Meyve 3D Kümeleme Sütun Grafiği",
},
},
}); err != nil {
fmt.Println(err)
return
}
// Dosyayı belirtilen yola kaydet
if err := f.SaveAs("Kitap1.xlsx"); err != nil {
fmt.Println(err)
}
}
Excel Belgelerine Resim Ekleme
package main
import (
"fmt"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
"github.com/xuri/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("Kitap1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Resim ekle
if err := f.AddPicture("Sheet1", "A2", "resim.png", nil); err != nil {
fmt.Println(err)
return
}
// Çalışma sayfasına resim ekleyin ve resmin ölçeğini ayarlayın
if err := f.AddPicture("Sheet1", "D2", "resim.jpg",
&excelize.GraphicOptions{ScaleX: 0.5, ScaleY: 0.5}); err != nil {
fmt.Println(err)
return
}
// Çalışma sayfasına resim ekleyin ve resmin yazdırma özelliklerini ayarlayın
enable, disable := true, false
if err := f.AddPicture("Sheet1", "H2", "resim.gif",
&excelize.GraphicOptions{
PrintObject: &enable,
LockAspectRatio: false,
OffsetX: 15,
OffsetY: 10,
Locked: &disable,
}); err != nil {
fmt.Println(err)
return
}
// Dosyayı kaydet
if err = f.Save(); err != nil {
fmt.Println(err)
}
}