Pengenalan Excelize

Excelize adalah sebuah perpustakaan dasar untuk memanipulasi dokumen Office Excel yang ditulis dalam bahasa Go, berdasarkan pada standar internasional ECMA-376 dan ISO/IEC 29500. Excelize dapat digunakan untuk membaca dan menulis dokumen spreadsheet yang dibuat oleh Microsoft Excel™ 2007 dan versi di atasnya, mendukung berbagai format dokumen seperti XLAM / XLSM / XLSX / XLTM / XLTX. Excelize sangat kompatibel dengan dokumen yang mengandung gaya, gambar (tabel), tabel pivot, pemotong, dan komponen kompleks lainnya, serta menyediakan API baca-tulis yang memungkinkan pengolahan workbook dengan data dalam skala besar secara streaming. Ini dapat diterapkan pada berbagai platform laporan, komputasi cloud, komputasi tepi, dan sistem lainnya. Penggunaan perpustakaan ini memerlukan versi bahasa Go 1.16 atau yang lebih tinggi.

Instalasi

Tabel di bawah ini menunjukkan persyaratan minimum perpustakaan dasar Excelize untuk versi-versi bahasa Go yang berbeda:

Versi Excelize Persyaratan Minimum untuk Bahasa 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

Penggunaan versi terbaru Excelize memerlukan versi bahasa Go 1.16 atau yang lebih tinggi. Harap dicatat bahwa terdapat perubahan tidak kompatibel pada Go 1.21.0, yang menyebabkan perpustakaan dasar Excelize tidak berfungsi dengan semestinya pada versi ini. Jika Anda menggunakan Go 1.21.x, silakan upgrade ke Go 1.21.1 atau yang lebih tinggi.

  • Perintah Instalasi
go get github.com/xuri/excelize
  • Jika Anda menggunakan Go Modules untuk mengelola paket, gunakan perintah berikut untuk menginstal versi terbaru.
go get github.com/xuri/excelize/v2

Pembaruan

  • Perintah Pembaruan
go get -u github.com/xuri/excelize/v2

Membuat Dokumen Excel

Berikut adalah contoh sederhana pembuatan dokumen 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)
        }
    }()
    // Membuat lembar kerja baru
    index, err := f.NewSheet("Sheet2")
    if err != nil {
        fmt.Println(err)
        return
    }
    // Menetapkan nilai sel
    f.SetCellValue("Sheet2", "A2", "Halo dunia.")
    f.SetCellValue("Sheet1", "B2", 100)
    // Menetapkan lembar kerja default dari workbook
    f.SetActiveSheet(index)
    // Simpan file ke path yang ditentukan
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

Membaca Dokumen Excel

Berikut adalah contoh membaca dokumen Excel:

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)
        }
    }()
    // Dapatkan nilai sel tertentu dalam lembar kerja
    cell, err := f.GetCellValue("Sheet1", "B2")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(cell)
    // Dapatkan semua sel di 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()
    }
}

Membuat Grafik dalam Dokumen Excel

Membuat grafik menggunakan Excelize sangatlah sederhana, hanya memerlukan beberapa baris kode. Anda dapat membuat grafik berdasarkan data yang sudah ada di lembar kerja atau menambahkan data ke lembar kerja dan kemudian membuat grafik.

Membuat Grafik dalam Dokumen 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)
        }
    }()
    for idx, row := range [][]interface{}{
        {nil, "Apple", "Orange", "Pear"}, {"Small", 2, 3, 3},
        {"Normal", 5, 2, 4}, {"Large", 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: "Grafik Kolom 3D Terkelompok Buah",
            },
        },
    }); err != nil {
        fmt.Println(err)
        return
    }
    // Simpan file ke lokasi yang ditentukan
    if err := f.SaveAs("Buku1.xlsx"); err != nil {
        fmt.Println(err)
    }
}

Menyisipkan Gambar ke dalam Dokumen Excel

package main

import (
    "fmt"
    _ "image/gif"
    _ "image/jpeg"
    _ "image/png"

    "github.com/xuri/excelize/v2"
)

func main() {
    f, err := excelize.OpenFile("Buku1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer func() {
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    // Menyisipkan gambar
    if err := f.AddPicture("Sheet1", "A2", "gambar.png", nil); err != nil {
        fmt.Println(err)
        return
    }
    // Menyisipkan gambar ke lembar kerja dan mengatur skala gambar
    if err := f.AddPicture("Sheet1", "D2", "gambar.jpg",
        &excelize.GraphicOptions{ScaleX: 0.5, ScaleY: 0.5}); err != nil {
        fmt.Println(err)
        return
    }
    // Menyisipkan gambar ke lembar kerja dan mengatur properti cetak gambar
    enable, disable := true, false
    if err := f.AddPicture("Sheet1", "H2", "gambar.gif",
        &excelize.GraphicOptions{
            PrintObject:     &enable,
            LockAspectRatio: false,
            OffsetX:         15,
            OffsetY:         10,
            Locked:          &disable,
        }); err != nil {
        fmt.Println(err)
        return
    }
    // Simpan file
    if err = f.Save(); err != nil {
        fmt.Println(err)
    }
}