Excelize  

 
 

Библиотека Go с открытым исходным кодом для электронных таблиц

Чтение, создание, объединение и фильтрация данных в файлах электронных таблиц Excel XLSX / XLSM / XLTM через Go API.

Excelize — это чистая библиотека Go с открытым исходным кодом, которая предоставляет функции для чтения и записи файлов электронных таблиц Microsoft Excel XLSX / XLSM / XLTM. Разработчики могут читать и писать электронные таблицы, созданные в Microsoft Excel™ 2007 и более поздних версиях, в своих собственных приложениях. Библиотека очень удобна для пользователя и поддерживает чтение больших файлов электронных таблиц. Он предоставил потоковый API для создания или чтения данных с рабочего листа с огромными объемами данных.

Библиотека полностью поддерживает несколько важных функций, связанных с манипулированием и обработкой файлов электронных таблиц Excel, таких как чтение и запись файлов Excel, работа с диапазонами ячеек, управление строками Excel, добавление комментариев, объединение ячеек, копирование строк, условное форматирование, вставка текстов, управление таблицами. в файлы Excel, добавлять изображения, добавлять новые листы и многое другое.

Previous Next

Начало работы с Excelize

Рекомендуемый способ установки Excelize - от GitHub, пожалуйста, используйте следующую команду для более быстрой установки.

Установить с помощью команды GitHub

 go get github.com/360EntSecGroup-Skylar/excelize 

Создайте файл Excel XLSX с помощью библиотеки Go

Excelize позволяет программистам создавать электронные таблицы Excel XLSX внутри своих собственных приложений Go. После того, как вы создали лист, вы также можете создать новый лист, установить значение ячейки, определить количество строк и столбцов, установить активный лист книги и многое другое. Вы также можете присвоить имя листу и сохранить файл по выбранному вами пути, установить тип шрифта и размер текста для созданного листа. 

Создание файла Excel LS через 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)
    }
}

Вставить диаграмму в файл XLSX

Диаграммы Excel — это визуальное представление данных с рабочего листа, которое может лучше понять данные за счет суммирования больших объемов данных в небольшом разделе вашего рабочего листа. Диаграммы позволяют пользователям визуально отображать данные в различных форматах, таких как гистограмма, столбец, круговая диаграмма, линия, площадь или радар и т. д. Библиотека Excelize поддерживает создание диаграмм, а также управление с помощью всего нескольких строк кода внутри ваших собственных приложений. Это позволяет строить диаграммы на основе данных на листе или создавать диаграммы без каких-либо данных.

Добавить в таблицу Excel Файл через 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)
    }
}

Создание сводной таблицы в файле Excel

Excelize предоставляет возможность легкого создания сводной таблицы внутри электронной таблицы Excel. Сводные таблицы — одна из самых мощных функций Microsoft Excel. Это мощный инструмент для расчета, суммирования и анализа данных на листе Excel. Вы можете создать простую сводную таблицу с помощью функции AddPivotTable. Кроме того, вы можете легко назначать или редактировать источник данных для сводной таблицы.

Создание PivotTable в файле Excel внутри приложений Go

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)
    }
}

Добавление изображений в электронные таблицы XLSX

Библиотека Excelize предоставляет функциональные возможности для добавления изображений в электронную таблицу Excel XLSX всего за пару строк команд Go. Вы также можете изменить изображения в соответствии с вашими потребностями. Картинку можно вставить как с масштабированием, так и с поддержкой печати.

Добавить изображение в рабочий лист Excel через 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)
    }
}
 Русский