Excelize — это библиотека, написанная на чистом
Go,
которая предоставляет набор функций, позволяющих читать и записывать файлы XLSX, созданные в Microsoft Excel ™ 2007 и более поздних версиях. Он поддерживает сохранение файла без потери оригинальных диаграмм XLSX. Эта библиотека доступна только в версии 1.10 или более поздней версии Go. Доступ ко всем документам API можно получить с помощью встроенного инструмента документации Go или через Интернет по адресу
godoc.org
и
по ссылкам на документы
.
GitHub: https://github.com/360EntSecGroup-Skylar/exceliz . Документ: https://xuri.me/excelize/ .
Монтаж
Идти
xxxxxxxxxx
1
1
go get github.com/360EntSecGroup-Skylar/excelize
Создать файл XLSX
Вот минимальный пример, который создаст файл XLSX:
Идти
xxxxxxxxxx
1
18
1
package main
2
3
import "github.com/360EntSecGroup-Skylar/excelize"
4
5
func main() {
6
f := excelize.NewFile()
7
// Create a new sheet.
8
index := f.NewSheet("Sheet2")
9
// Set value of a cell.
10
f.SetCellValue("Sheet2", "A2", "Hello world.")
11
f.SetCellValue("Sheet1", "B2", 100)
12
// Set active sheet of the workbook.
13
f.SetActiveSheet(index)
14
// Save xlsx file by the given path.
15
if err := f.SaveAs("Book1.xlsx"); err != nil {
16
println(err.Error())
17
}
18
}
Вам также может понравиться:
Учебное пособие по Голангу: Изучите Голанг на примерах .
Чтение файла XLSX
Следующее составляет минимальную реализацию, необходимую для чтения файла XLSX:
Идти
xxxxxxxxxx
1
26
1
package main
2
3
import "github.com/360EntSecGroup-Skylar/excelize"
4
5
func main() {
6
f, err := excelize.OpenFile("Book1.xlsx")
7
if err != nil {
8
println(err.Error())
9
return
10
}
11
// Get value from cell by given worksheet name and axis.
12
cell, err := f.GetCellValue("Sheet1", "B2")
13
if err != nil {
14
println(err.Error())
15
return
16
}
17
println(cell)
18
// Get all the rows in the Sheet1.
19
rows, err := f.GetRows("Sheet1")
20
for _, row := range rows {
21
for _, colCell := range row {
22
print(colCell, "\t")
23
}
24
println()
25
}
26
}
Добавить диаграмму в файл XLSX
С Excelize генерация диаграмм и управление могут быть реализованы с помощью нескольких строк кода. Вы можете создавать диаграммы на основе данных в вашей рабочей таблице или создавать диаграммы без каких-либо данных в вашей рабочей таблице вообще.
Идти
xxxxxxxxxx
1
23
1
package main
2
3
import "github.com/360EntSecGroup-Skylar/excelize"
4
5
func main() {
6
categories := map[string]string{"A2": "Small", "A3": "Normal", "A4": "Large", "B1": "Apple", "C1": "Orange", "D1": "Pear"}
7
values := map[string]int{"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
8
f := excelize.NewFile()
9
for k, v := range categories {
10
f.SetCellValue("Sheet1", k, v)
11
}
12
for k, v := range values {
13
f.SetCellValue("Sheet1", k, v)
14
}
15
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 {
16
println(err.Error())
17
return
18
}
19
// Save xlsx file by the given path.
20
if err := f.SaveAs("Book1.xlsx"); err != nil {
21
println(err.Error())
22
}
23
}
Добавить изображение в файл XLSX
Идти
xxxxxxxxxx
1
33
1
package main
2
3
import (
4
_ "image/gif"
5
_ "image/jpeg"
6
_ "image/png"
7
8
"github.com/360EntSecGroup-Skylar/excelize"
9
)
10
11
func main() {
12
f, err := excelize.OpenFile("Book1.xlsx")
13
if err != nil {
14
println(err.Error())
15
return
16
}
17
// Insert a picture.
18
if err := f.AddPicture("Sheet1", "A2", "image.png", ""); err != nil {
19
println(err.Error())
20
}
21
// Insert a picture to worksheet with scaling.
22
if err := f.AddPicture("Sheet1", "D2", "image.jpg", `{"x_scale": 0.5, "y_scale": 0.5}`); err != nil {
23
println(err.Error())
24
}
25
// Insert a picture offset in the cell with printing support.
26
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 {
27
println(err.Error())
28
}
29
// Save the xlsx file with the origin path.
30
if err = f.Save(); err != nil {
31
println(err.Error())
32
}
33
}