![](https://products-qa.fileformat.com/vi/spreadsheet/go/excelize/header-image.png)
Excelize
Thư viện mã nguồn mở Go dành cho bảng tính
Đọc, tạo, hợp nhất và lọc dữ liệu trong tệp bảng tính Excel XLSX / XLSM / XLTM thông qua API Go.
Excelize là một thư viện Go thuần túy mã nguồn mở cung cấp chức năng đọc và ghi các tệp bảng tính Microsoft Excel XLSX / XLSM / XLTM. Các nhà phát triển có thể đọc và ghi các tài liệu bảng tính được tạo bởi Microsoft Excel ™ 2007 trở lên bên trong các ứng dụng của riêng họ. Thư viện rất thân thiện với người dùng và hỗ trợ đọc các tệp bảng tính lớn. Nó đã cung cấp một API phát trực tuyến để tạo hoặc đọc dữ liệu từ một trang tính với lượng dữ liệu khổng lồ.
Thư viện hỗ trợ đầy đủ một số tính năng quan trọng liên quan đến thao tác và xử lý tệp bảng tính Excel, chẳng hạn như đọc và ghi tệp Excel, làm việc với phạm vi ô, quản lý hàng trong Excel, thêm nhận xét, hợp nhất ô, sao chép hàng, định dạng có điều kiện, chèn văn bản, quản lý bảng trong tệp Excel, thêm hình ảnh, thêm trang tính mới và nhiều hơn nữa.
Bắt đầu với Excelize
Cách được đề xuất để cài đặt Excelize là từ GitHub, vui lòng sử dụng lệnh sau để cài đặt nhanh hơn.
Cài đặt qua GitHub Command
go get github.com/360EntSecGroup-Skylar/excelize
Tạo tệp Excel XLSX qua Thư viện Go
Excelize cho phép các lập trình viên tạo bảng tính Excel XLSX bên trong các ứng dụng Go của riêng họ. Khi bạn đã tạo trang tính, bạn cũng có thể tạo trang tính mới, đặt giá trị của ô, xác định số hàng và cột, Đặt trang tính hiện hoạt của sổ làm việc, v.v. Bạn cũng có thể gán tên cho trang tính và lưu tệp vào đường dẫn bạn chọn, đặt loại phông chữ và kích thước văn bản cho trang tính đã tạo.
Tạo file Excel LS qua Go API
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f := excelize.NewFile()
// Create a new sheet.
index := f.NewSheet("Sheet2")
// Set value of a cell.
f.SetCellValue("Sheet2", "A2", "Hello world.")
f.SetCellValue("Sheet1", "B2", 100)
// Set active sheet of the workbook.
f.SetActiveSheet(index)
// Save spreadsheet by the given path.
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
Chèn biểu đồ vào tệp XLSX
Biểu đồ Excel là biểu đồ trực quan của dữ liệu từ một trang tính có thể truyền đạt nhiều hiểu biết hơn về dữ liệu bằng cách tóm tắt một lượng lớn dữ liệu trong một phần nhỏ của trang tính của bạn. Biểu đồ cho phép người dùng hiển thị trực quan dữ liệu ở các định dạng khác nhau như Thanh, Cột, Hình tròn, Đường, Khu vực hoặc Radar, v.v. Thư viện Excelize hỗ trợ tạo biểu đồ cũng như kiểm soát chỉ với một vài dòng mã bên trong các ứng dụng của riêng bạn. Nó cho phép xây dựng biểu đồ dựa trên dữ liệu trong trang tính hoặc tạo biểu đồ mà không cần bất kỳ dữ liệu nào.
Thêm biểu đồ vào hồ sơ bảng thông qua Go API
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
categories := map[string]string{
"A2": "Small", "A3": "Normal", "A4": "Large",
"B1": "Apple", "C1": "Orange", "D1": "Pear"}
values := map[string]int{
"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
f := excelize.NewFile()
for k, v := range categories {
f.SetCellValue("Sheet1", k, v)
}
for k, v := range values {
f.SetCellValue("Sheet1", k, v)
}
if err := f.AddChart("Sheet1", "E1", `{
"type": "col3DClustered",
"series": [
{
"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":
{
"name": "Fruit 3D Clustered Column Chart"
}
}`); err != nil {
fmt.Println(err)
return
}
// Save spreadsheet by the given path.
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
Tạo PivotTable trong tệp Excel
Excelize cung cấp khả năng tạo bảng tổng hợp bên trong bảng tính Excel một cách dễ dàng. Bảng tổng hợp là một trong những tính năng mạnh mẽ nhất của Microsoft Excel. Đây là một công cụ mạnh mẽ để tính toán, tóm tắt và phân tích dữ liệu của bạn trong một trang tính Excel. Bạn có thể tạo một bảng tổng hợp đơn giản bằng cách sử dụng chức năng AddPivotTable. Hơn nữa, bạn có thể dễ dàng gán hoặc chỉnh sửa nguồn dữ liệu vào bảng tổng hợp.
Tạo ra PivotTable trong file Excel bên trong Go Apps
func main() {
f := excelize.NewFile()
// Create some data in a sheet
month := []string{"Jan", "Feb", "Mar", "Apr", "May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}
year := []int{2017, 2018, 2019}
types := []string{"Meat", "Dairy", "Beverages", "Produce"}
region := []string{"East", "West", "North", "South"}
f.SetSheetRow("Sheet1", "A1", &[]string{"Month", "Year", "Type", "Sales", "Region"})
for row := 2; row < 32; row++ {
f.SetCellValue("Sheet1", fmt.Sprintf("A%d", row), month[rand.Intn(12)])
f.SetCellValue("Sheet1", fmt.Sprintf("B%d", row), year[rand.Intn(3)])
f.SetCellValue("Sheet1", fmt.Sprintf("C%d", row), types[rand.Intn(4)])
f.SetCellValue("Sheet1", fmt.Sprintf("D%d", row), rand.Intn(5000))
f.SetCellValue("Sheet1", fmt.Sprintf("E%d", row), region[rand.Intn(4)])
}
if err := f.AddPivotTable(&excelize.PivotTableOptions{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "Sheet1!$G$2:$M$34",
Rows: []excelize.PivotTableField{
{Data: "Month", DefaultSubtotal: true}, {Data: "Year"}},
Filter: []excelize.PivotTableField{
{Data: "Region"}},
Columns: []excelize.PivotTableField{
{Data: "Type", DefaultSubtotal: true}},
Data: []excelize.PivotTableField{
{Data: "Sales", Name: "Summarize", Subtotal: "Sum"}},
RowGrandTotals: true,
ColGrandTotals: true,
ShowDrill: true,
ShowRowHeaders: true,
ShowColHeaders: true,
ShowLastColumn: true,
}); err != nil {
fmt.Println(err)
}
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
Thêm hình ảnh vào bảng tính XLSX
Thư viện Excelize cung cấp chức năng thêm hình ảnh vào bảng tính Excel XLSX chỉ với một vài dòng lệnh Go. Bạn cũng có thể sửa đổi hình ảnh theo nhu cầu của bạn. Bạn có thể chèn ảnh với khả năng chia tỷ lệ cũng như hỗ trợ in.
Thêm hình ảnh vào file Excel Worksheet qua Go API
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() {
// Close the spreadsheet.
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Insert a picture.
if err := f.AddPicture("Sheet1", "A2", "image.png", ""); err != nil {
fmt.Println(err)
}
// Insert a picture to worksheet with scaling.
if err := f.AddPicture("Sheet1", "D2", "image.jpg",
`{"x_scale": 0.5, "y_scale": 0.5}`); err != nil {
fmt.Println(err)
}
// Insert a picture offset in the cell with printing support.
if err := f.AddPicture("Sheet1", "H2", "image.gif", `{
"x_offset": 15,
"y_offset": 10,
"print_obj": true,
"lock_aspect_ratio": false,
"locked": false
}`); err != nil {
fmt.Println(err)
}
// Save the spreadsheet with the origin path.
if err = f.Save(); err != nil {
fmt.Println(err)
}
}