Heim >Backend-Entwicklung >Golang >Ein Artikel, der ausführlich erklärt, wie Golang Excel-Dokumente generiert

Ein Artikel, der ausführlich erklärt, wie Golang Excel-Dokumente generiert

藏色散人
藏色散人nach vorne
2023-03-23 17:01:373450Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Golang. Er stellt vor allem vor, wie Sie Golang zum Generieren von Excel-Dokumenten verwenden. Ich hoffe, dass er für alle hilfreich ist.

Ein Artikel, der ausführlich erklärt, wie Golang Excel-Dokumente generiert

Das Generieren von Excel-Dokumenten auf der Grundlage von Daten ist eine sehr häufige Anforderung. In diesem Artikel wird die Verwendung der Excelize-Bibliothek von Go zum Generieren von Excel-Dokumenten sowie Code-Implementierungen in einigen spezifischen Szenarien vorgestellt.

Über die Excelize-Bibliothek

Excelize ist eine in der Go-Sprache geschriebene Basisbibliothek für die Bedienung von Office Excel-Dokumenten, basierend auf den internationalen Standards ECMA-376, ISO/IEC 29500. Sie können damit Tabellenkalkulationsdokumente lesen und schreiben, die mit Microsoft Excel™ 2007 und höher erstellt wurden. Es unterstützt mehrere Dokumentformate wie XLSX / XLSM / XLTM / Datenarbeitsmappe. Es kann auf verschiedene Berichtsplattformen, Cloud Computing, Edge Computing und andere Systeme angewendet werden. Für die Verwendung dieser Bibliothek ist die Go-Sprachversion 1.15 oder höher erforderlich. Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLSX / XLSM / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。使用本类库要求使用的 Go 语言为 1.15 或更高版本。

性能对比

下图是一些主要的开源 Excel 库在生成 12800*50 纯文本矩阵时的性能对比(OS: macOS Mojave version 10.14.4, CPU: 3.4 GHz Intel Core i5, RAM: 16 GB 2400 MHz DDR4, HDD: 1 TB),包括 Go、Python、Java、PHP 和 NodeJS。

安装

最新的版本是 v2.4.0

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

创建 Excel 文档

下面的案例中,我们创建了一个 Excel 文档,并使用 NewSheet 方法新建了一个 Sheet2 工作表,Sheet1 是默认创建的工作表,然后我们使用 SetCellValue 方法分别在 Sheet2 工作表的 A2 单元格 和 Sheet1 表格的 B2 单元格设置值,并通过使用 SetActiveSheet 方法设置 Sheet2 工作表为默认的工作表,最终调用 SaveAs 方法将数据写入 Excel 文档中:

package main

import (
    "fmt"

    "github.com/360EntSecGroup-Skylar/excelize/v2"
)

func main() {
    f := excelize.NewFile()
    // 创建一个工作表
    index := f.NewSheet("Sheet2")
    // 设置单元格的值
    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)
    }
}

实际场景复现

创建工作表

工作表名称是大小写敏感的:

index := f.NewSheet("Sheet2")

删除默认创建的工作表

默认创建的 Excel 文档是包含一个名为 Sheet1 的工作表,我们可能并不需要这个默认工作表,这个时候我们可以删除这个工作表:

f.DeleteSheet("Sheet1")

合并单元格

合并 Sheet1 工作表上 F1:I2 区域内的单元格:

excel.MergeCell("Sheet1", "F1", "I2")

单元格样式

给单元格设置样式会经常遇到,比如设置单元格的背景颜色,Excelize 库提供下面两个方法进行设置单元格样式(NewStyleSetCellStyle):

// 通过给定的样式格式 JSON 或结构体的指针创建样式并返回样式索引。
// 请注意,颜色需要使用 RGB 色域代码表示。
style, err := f.NewStyle(`{
    "border": [
    {
        "type": "left",
        "color": "0000FF",
        "style": 3
    },
    {
        "type": "top",
        "color": "00FF00",
        "style": 4
    },
    {
        "type": "bottom",
        "color": "FFFF00",
        "style": 5
    },
    {
        "type": "right",
        "color": "FF0000",
        "style": 6
    },
    {
        "type": "diagonalDown",
        "color": "A020F0",
        "style": 7
    },
    {
        "type": "diagonalUp",
        "color": "A020F0",
        "style": 8
    }]
}`)
if err != nil {
    fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

文字水平居中

文字水平居中需要用到 Alignment 样式结构体:

type Alignment struct {
    Horizontal      string `json:"horizontal"`
    Indent          int    `json:"indent"`
    JustifyLastLine bool   `json:"justify_last_line"`
    ReadingOrder    uint64 `json:"reading_order"`
    RelativeIndent  int    `json:"relative_indent"`
    ShrinkToFit     bool   `json:"shrink_to_fit"`
    TextRotation    int    `json:"text_rotation"`
    Vertical        string `json:"vertical"`
    WrapText        bool   `json:"wrap_text"`
}

水平居中只要设置 Horizontal 的值为 center 即可:

style, err := f.NewStyle(`{"alignment":{"horizontal":"center"}}`)
if err != nil {
    fmt.Println(err)
}
err = excel.SetCellStyle("Sheet1", "B1", "B1", style)

给单元格设置纯色填充

给单元格填充颜色会使用到 Fill 样式结构体:

type Fill struct {
    Type    string   `json:"type"`
    Pattern int      `json:"pattern"`
    Color   []string `json:"color"`
    Shading int      `json:"shading"`
}

Style 结构体

从上面设置样式的代码中,我们可以发现 border 是一个数组,而 alignment 是一个结构体,这是由 Style

Leistungsvergleich

Die folgende Abbildung zeigt den Leistungsvergleich einiger wichtiger Open-Source-Excel-Bibliotheken beim Generieren einer 12800*50 Klartextmatrix (Betriebssystem: macOS Mojave Version 10.14 .4, CPU: 3,4 GHz Intel Core i5, RAM: 16 GB 2400 MHz DDR4, Festplatte: 1 TB), einschließlich Go, Python, Java, PHP und NodeJS.

Installieren 🎜🎜Die neueste Version ist v2.4.0: 🎜
type Style struct {
    Border        []Border    `json:"border"`
    Fill          Fill        `json:"fill"`
    Font          *Font       `json:"font"`
    Alignment     *Alignment  `json:"alignment"`
    Protection    *Protection `json:"protection"`
    NumFmt        int         `json:"number_format"`
    DecimalPlaces int         `json:"decimal_places"`
    CustomNumFmt  *string     `json:"custom_number_format"`
    Lang          string      `json:"lang"`
    NegRed        bool        `json:"negred"`
}

Excel-Dokument erstellen 🎜🎜Im folgenden Fall haben wir Erstellt ein Excel-Dokument und verwendet die Methode NewSheet, um ein neues Arbeitsblatt Sheet1 zu erstellen. Dann verwenden wir SetCellValue befindet sich jeweils in der Zelle A2 des Arbeitsblatts Sheet2 und in der Zelle B2 von Sheet1-Tabelle. Legen Sie den Wert in der Zelle fest, legen Sie das Arbeitsblatt <code>Sheet2 mit der Methode SetActiveSheet als Standardarbeitsblatt fest und rufen Sie schließlich SaveAs auf. code> Methode zum Schreiben der Daten in Excel Im Dokument: 🎜rrreee<h2 data-id="heading-4">Reproduktion des tatsächlichen Szenarios🎜<h3 data-id="heading-5">Arbeitsblatt erstellen</h3>🎜Beim Arbeitsblattnamen wird die Groß-/Kleinschreibung beachtet: 🎜rrreee<h3 data-id="heading-6">Standardmäßig erstelltes Arbeitsblatt löschen</h3>🎜Das standardmäßig erstellte Excel-Dokument enthält ein Arbeitsblatt mit dem Namen <code>Sheet1, möglicherweise wird dieses Standardarbeitsblatt nicht benötigt. Wir können dieses Arbeitsblatt zu diesem Zeitpunkt löschen: 🎜rrreee<h3 data-id="heading-7">Zellen zusammenführen</h3>🎜Merge <code>Blatt1code> Arbeitsblattzellen im oberen Bereich <code>F1:I2: 🎜rrreee

Zellenstil

🎜Das Festlegen von Stilen für Zellen kommt häufig vor, z Legen Sie die Hintergrundfarbe der Zelle fest. Die Excelize-Bibliothek bietet die folgenden zwei Methoden zum Festlegen des Zellenstils (NewStyle und SetCellStyle): 🎜rrreee

Horizontale Textzentrierung

🎜Horizontale Textzentrierung erfordert Ausrichtung-Stilstruktur: 🎜rrreee🎜Horizontale Zentrierung muss nur Horizontal festlegen code > Der Wert ist <code>center: 🎜rrreee

Legen Sie eine einfarbige Füllung für die Zelle fest

🎜Um die Zelle mit Farbe zu füllen, werden Sie Folgendes tun Verwenden Sie die Stilstruktur Fill: 🎜rrreee

Stilstruktur

🎜Aus dem Code zum Festlegen des Stils oben können wir border ist ein Array und <code>alignment ist eine Struktur, die durch die Style-Struktur bestimmt wird: 🎜rrreee Verwandte Empfehlungen: 🎜Go Video Tutorial🎜🎜

Das obige ist der detaillierte Inhalt vonEin Artikel, der ausführlich erklärt, wie Golang Excel-Dokumente generiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.im. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen