Giới thiệu về Excelize
Excelize là một thư viện cơ bản để thao tác với tài liệu Office Excel được viết bằng ngôn ngữ Go, dựa trên các tiêu chuẩn quốc tế ECMA-376 và ISO/IEC 29500. Nó có thể được sử dụng để đọc và ghi tài liệu bảng tính được tạo bởi Microsoft Excel™ 2007 trở lên, hỗ trợ các định dạng tài liệu khác nhau như XLAM / XLSM / XLSX / XLTM / XLTX. Nó tương thích cao với các tài liệu chứa các kiểu dáng, hình ảnh (bảng), bảng điều chỉnh, máy cắt và các thành phần phức tạp khác, và cung cấp một API đọc-giữ để xử lý bảng tính với dữ liệu quy mô lớn. Nó có thể được áp dụng vào các nền tảng báo cáo khác nhau, cloud computing, edge computing và các hệ thống khác. Sử dụng thư viện này yêu cầu phiên bản ngôn ngữ Go từ 1.16 trở lên.
Cài đặt
Bảng dưới đây liệt kê các yêu cầu tối thiểu của thư viện cơ bản Excelize cho các phiên bản khác nhau của ngôn ngữ Go:
Phiên bản Excelize | Yêu cầu tối thiểu cho ngôn ngữ 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 |
Việc sử dụng phiên bản mới nhất của Excelize yêu cầu ngôn ngữ Go từ phiên bản 1.16 trở lên. Vui lòng lưu ý rằng có thay đổi không tương thích trong Go 1.21.0, dẫn đến thư viện cơ bản Excelize không hoạt động đúng trên phiên bản này. Nếu bạn đang sử dụng Go 1.21.x, vui lòng nâng cấp lên Go 1.21.1 hoặc cao hơn.
- Lệnh Cài đặt
go get github.com/xuri/excelize
- Nếu bạn đang sử dụng Go Modules để quản lý các gói, hãy sử dụng lệnh sau để cài đặt phiên bản mới nhất.
go get github.com/xuri/excelize/v2
Cập nhật
- Lệnh Cập nhật
go get -u github.com/xuri/excelize/v2
Tạo Tài liệu Excel
Dưới đây là một ví dụ đơn giản về việc tạo tài liệu 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)
}
}()
// Tạo một trang tính mới
index, err := f.NewSheet("Sheet2")
if err != nil {
fmt.Println(err)
return
}
// Đặt giá trị cho ô
f.SetCellValue("Sheet2", "A2", "Xin chào thế giới.")
f.SetCellValue("Sheet1", "B2", 100)
// Đặt trang tính mặc định của bảng tính
f.SetActiveSheet(index)
// Lưu tài liệu vào đường dẫn chỉ định
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
Đọc Tài liệu Excel
Dưới đây là một ví dụ về việc đọc tài liệu 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)
}
}()
// Lấy giá trị của ô cụ thể trong bảng tính
cell, err := f.GetCellValue("Sheet1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(cell)
// Lấy tất cả các ô trên 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()
}
}
Tạo biểu đồ trong tài liệu Excel
Việc tạo biểu đồ bằng Excelize rất đơn giản, chỉ cần vài dòng mã. Bạn có thể tạo biểu đồ dựa trên dữ liệu hiện có trong bảng tính hoặc thêm dữ liệu vào bảng tính và sau đó tạo biểu đồ.
gói chính
nhập (
"fmt"
"github.com/xuri/excelize/v2"
)
hàm chính() {
f := excelize.NewFile()
hoãn lại func() {
nếu err := f.Close(); err != nil {
fmt.Println(err)
}
}()
cho idx, hàng := phạm vi [] [] giao diện{}{
{nil, "Apple", "Orange", "Lê"}, {"Nhỏ", 2, 3, 3},
{"Bình thường", 5, 2, 4}, {"Lớn", 6, 7, 8},
} {
ô, err := excelize.CoordinatesToCellName(1, idx+1)
nếu err != nil {
fmt.Println(err)
trở lại
}
f.SetSheetRow("Sheet1", ô, &hàng)
}
nếu err := f.AddChart("Sheet1", "E1", &excelize.Chart{
Loại: excelize.Col3DClustered,
Loạt: []excelize.ChartSeries{
{
Tên: "Sheet1!$A$2",
Danh mục: "Sheet1!$B$1:$D$1",
Giá trị: "Sheet1!$B$2:$D$2",
},
{
Tên: "Sheet1!$A$3",
Danh mục: "Sheet1!$B$1:$D$1",
Giá trị: "Sheet1!$B$3:$D$3",
},
{
Tên: "Sheet1!$A$4",
Danh mục: "Sheet1!$B$1:$D$1",
Giá trị: "Sheet1!$B$4:$D$4",
}},
Tiêu đề: []excelize.RichTextRun{
{
Văn bản: "Biểu đồ cột phân cụm 3D của trái cây",
},
},
}); err != nil {
fmt.Println(err)
trở lại
}
// Lưu tệp vào đường dẫn cụ thể
nếu err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
Chèn hình ảnh vào tài liệu Excel
gói chính
nhập (
"fmt"
_ "hình ảnh/gif"
_ "hình ảnh/jpeg"
_ "hình ảnh/png"
"github.com/xuri/excelize/v2"
)
hàm chính() {
f, err := excelize.OpenFile("Book1.xlsx")
nếu err != nil {
fmt.Println(err)
trở lại
}
hoãn lại func() {
nếu err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Chèn một hình ảnh
nếu err := f.AddPicture("Sheet1", "A2", "image.png", nil); err != nil {
fmt.Println(err)
trở lại
}
// Chèn một hình ảnh vào bảng tính và thiết lập tỷ lệ của hình ảnh
nếu err := f.AddPicture("Sheet1", "D2", "image.jpg",
&excelize.GraphicOptions{ScaleX: 0.5, ScaleY: 0.5}); err != nil {
fmt.Println(err)
trở lại
}
// Chèn một hình ảnh vào bảng tính và thiết lập thuộc tính in của hình ảnh
bật, tắt := true, false
nếu err := f.AddPicture("Sheet1", "H2", "image.gif",
&excelize.GraphicOptions{
Đối tượngIn: &bật,
Khóa tỷ lệ: false,
OffsetX: 15,
OffsetY: 10,
Đã khóa: &tắt,
}); err != nil {
fmt.Println(err)
trở lại
}
// Lưu tệp
nếu err = f.Save(); err != nil {
fmt.Println(err)
}
}