1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xurime-excelize

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Excelize

Введение

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 Modules, установите с помощью следующей команды.
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 без данных

Excelize

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 )

Вы можете оставить комментарий после Вход в систему

Введение

Excelize — это библиотека для работы с документами формата Office Excel, написанная на языке Go. Она основана на техническом стандарте ECMA-376 OOXML. С помощью неё можно читать и записывать файлы XLSX. По сравнению с другими открытыми библиотеками, Excelize поддерживает работу с электронными таблицами, содержащими сводные таблицы, срезы, диагр... Развернуть Свернуть
BSD-3-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/xurime-excelize.git
git@api.gitlife.ru:oschina-mirror/xurime-excelize.git
oschina-mirror
xurime-excelize
xurime-excelize
master