Excelize — это библиотека, написанная на чистом Go, предоставляющая набор функций, которые позволяют вам записывать и считывать данные из файлов XLAM / XLSM / XLSX / XLTM / XLTX. Поддерживает чтение и запись документов электронных таблиц, созданных Microsoft Excel™ 2007 и более поздних версий. Обеспечивает высокую совместимость со сложными компонентами и предоставляет потоковый API для генерации или чтения данных с рабочего листа с огромными объёмами данных. Для этой библиотеки требуется версия Go 1.18 или более поздняя. В версии Go 1.21.0 произошли некоторые несовместимые изменения, с этой версией библиотека Excelize не может работать нормально, если вы используете версию Go 1.21.x, пожалуйста, обновитесь до версии Go 1.21.1 или более поздней. Полную документацию можно увидеть с помощью встроенного инструмента документации go или онлайн на go.dev и docs reference.
go get github.com/xuri/excelize
go get github.com/xuri/excelize/v2
Вот пример минимального использования, который создаст файл электронной таблицы.
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)
}
}()
// Создать новый лист.
index, err := f.NewSheet("Sheet2")
if err != nil {
fmt.Println(err)
return
}
// Установить значение ячейки.
f.SetCellValue("Sheet2", "A2", "Hello world.")
f.SetCellValue("Sheet1", "B2", 100)
// Сделать лист активным в книге.
f.SetActiveSheet(index)
// Сохранить электронную таблицу по заданному пути.
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
Ниже приведён пример того, как прочитать документ электронной таблицы.
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)
}
}()
// Получить значение из ячейки по имени листа и ссылке на ячейку.
cell, err := f.GetCellValue("Sheet1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(cell)
// Получить все строки в 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()
}
}
С помощью Excelize создание и управление диаграммами так же просто, как несколько строк кода. Вы можете создавать диаграммы на основе данных в ваших Генерация диаграмм в 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: "Fruit 3D Clustered Column Chart",
},
},
}); err != nil {
fmt.Println(err)
return
}
// Сохранить электронную таблицу по заданному пути.
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
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() {
// Закрыть электронную таблицу.
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Вставить изображение.
if err := f.AddPicture("Sheet1", "A2", "image.png", nil); err != nil {
fmt.Println(err)
}
// Вставить изображение в рабочий лист с масштабированием.
if err := f.AddPicture("Sheet1", "D2", "image.jpg",
&excelize.GraphicOptions{ScaleX: 0.5, ScaleY: 0.5}); err != nil {
fmt.Println(err)
}
// Вставить изображение со смещением в ячейку с поддержкой печати.
enable, disable := true, false
if err := f.AddPicture("Sheet1", "H2", "image.gif",
&excelize.GraphicOptions{
PrintObject: &enable,
LockAspectRatio: false,
OffsetX: 15,
OffsetY: 10,
Locked: &disable,
}); err != nil {
fmt.Println(err)
}
// Сохранить электронную таблицу с исходным путём.
if err = f.Save(); err != nil {
fmt.Println(err)
}
}
Вклад приветствуется! Откройте запрос на вытягивание, чтобы исправить ошибку, или откройте проблему, чтобы обсудить новую функцию или изменение. XML соответствует части 1 пятого издания стандарта ECMA-376 для Office Open XML.
Эта программа находится под условиями лицензии BSD 3-Clause. См. https://opensource.org/licenses/BSD-3-Clause.
Логотип Excel является товарным знаком Microsoft Corporation. Это произведение искусства является адаптацией.
Gopher.{ai,svg,png} был создан Такуя Уэда. Лицензия Creative Commons 3.0 Attributions license.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )