


Un article expliquant en détail comment Golang génère des documents Excel
Cet article vous apporte des connaissances pertinentes sur Golang. Il présente principalement comment utiliser Golang pour générer des documents Excel. Les amis intéressés peuvent jeter un œil ci-dessous. J'espère que cela sera utile à tout le monde.
La génération de documents Excel basés sur des données est une exigence très courante. Cet article présentera comment utiliser la bibliothèque Excelize de Go pour générer des documents Excel, ainsi que les implémentations de code dans certains scénarios spécifiques.
À propos de la bibliothèque Excelize
Excelize
est une bibliothèque de base écrite en langage Go pour exploiter les documents Office Excel, basée sur les normes internationales ECMA-376, ISO/IEC 29500. Vous pouvez l'utiliser pour lire et écrire des feuilles de calcul créées avec Microsoft Excel™ 2007 et supérieur. Il prend en charge plusieurs formats de documents tels que XLSX / XLSM / XLTM / Data workbook. Il peut être appliqué à diverses plates-formes de rapports, au cloud computing, à l'informatique de pointe et à d'autres systèmes. L'utilisation de cette bibliothèque nécessite la version 1.15 ou supérieure du langage Go. 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
库提供下面两个方法进行设置单元格样式(NewStyle
和 SetCellStyle
):
// 通过给定的样式格式 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
Comparaison des performances
La figure suivante montre la comparaison des performances de certaines principales bibliothèques Excel open source lors de la génération d'une matrice de texte brut 12800*50 (OS : macOS Mojave version 10.14 .4, CPU : Intel Core i5 à 3,4 GHz, RAM : 16 Go DDR4 à 2 400 MHz, disque dur : 1 To), y compris Go, Python, Java, PHP et NodeJS.
Installer 🎜🎜La dernière version est 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"`
}
Copier après la connexion
Créer un document Excel 🎜🎜Dans le cas suivant, nous Nous avons créé un document Excel et utilisé la méthode NewSheet
pour créer une nouvelle feuille de calcul Sheet2
. Sheet1
est la feuille de calcul créée par défaut. Ensuite, nous utilisons SetCellValue est située dans la cellule A2
de la feuille de calcul Sheet2
et dans la cellule B2
de la Sheet1 code>. Définissez la valeur dans la cellule, définissez la feuille de calcul <code>Sheet2
comme feuille de calcul par défaut à l'aide de la méthode SetActiveSheet
, et enfin appelez la méthode SaveAs
. > méthode pour écrire les données dans Excel Dans le document : 🎜rrreeeReproduction du scénario réel🎜Créer une feuille de calcul
🎜Le nom de la feuille de calcul est sensible à la casse :🎜rrreeeSupprimer la feuille de calcul créée par défaut
🎜Le document Excel créé par défaut contient une feuille de calcul nommée Sheet1 code>, nous pouvons Cette feuille de calcul par défaut n'est pas nécessaire. Nous pouvons supprimer cette feuille de calcul pour le moment : 🎜rrreee<h3 id="Fusionner-les-cellules">Fusionner les cellules</h3>🎜Fusionner la <code>Feuille1 Feuille de calcul Cellules dans la zone supérieure <code>F1:I2
: 🎜rrreeeStyle de cellule
🎜La définition de styles pour les cellules est souvent rencontrée, comme Set la couleur d'arrière-plan de la cellule. La bibliothèque Excelize
fournit les deux méthodes suivantes pour définir le style de la cellule (NewStyle
et SetCellStyle
) : 🎜rrreeeCentrage horizontal du texte🎜Le centrage horizontal du texte nécessite une structure de style Alignement
: 🎜rrreee🎜Le centrage horizontal doit uniquement être défini sur Horizontal
La valeur est center
: 🎜rrreeeDéfinissez un remplissage de couleur unie pour la cellule
🎜Pour remplir la cellule de couleur, vous utiliserez Structure de style Fill
: 🎜rrreeeStructure de style
🎜À partir du code pour définir le style ci-dessus, nous pouvons trouver border code > est un tableau et <code>alignment
est une structure, qui est déterminée par la structure Style
: 🎜rrreee Recommandations associées : 🎜Go tutoriel vidéo🎜🎜
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"` }
NewSheet
pour créer une nouvelle feuille de calcul Sheet2
. Sheet1
est la feuille de calcul créée par défaut. Ensuite, nous utilisons SetCellValue est située dans la cellule A2
de la feuille de calcul Sheet2
et dans la cellule B2
de la Sheet1 code>. Définissez la valeur dans la cellule, définissez la feuille de calcul <code>Sheet2
comme feuille de calcul par défaut à l'aide de la méthode SetActiveSheet
, et enfin appelez la méthode SaveAs
. > méthode pour écrire les données dans Excel Dans le document : 🎜rrreeeReproduction du scénario réel🎜Créer une feuille de calcul
🎜Le nom de la feuille de calcul est sensible à la casse :🎜rrreeeSupprimer la feuille de calcul créée par défaut
🎜Le document Excel créé par défaut contient une feuille de calcul nommée Sheet1 code>, nous pouvons Cette feuille de calcul par défaut n'est pas nécessaire. Nous pouvons supprimer cette feuille de calcul pour le moment : 🎜rrreee<h3 id="Fusionner-les-cellules">Fusionner les cellules</h3>🎜Fusionner la <code>Feuille1 Feuille de calcul Cellules dans la zone supérieure <code>F1:I2
: 🎜rrreeeStyle de cellule
🎜La définition de styles pour les cellules est souvent rencontrée, comme Set la couleur d'arrière-plan de la cellule. La bibliothèque Excelize
fournit les deux méthodes suivantes pour définir le style de la cellule (NewStyle
et SetCellStyle
) : 🎜rrreeeCentrage horizontal du texte🎜Le centrage horizontal du texte nécessite une structure de style Alignement
: 🎜rrreee🎜Le centrage horizontal doit uniquement être défini sur Horizontal
La valeur est center
: 🎜rrreeeDéfinissez un remplissage de couleur unie pour la cellule
🎜Pour remplir la cellule de couleur, vous utiliserez Structure de style Fill
: 🎜rrreeeStructure de style
🎜À partir du code pour définir le style ci-dessus, nous pouvons trouver border code > est un tableau et <code>alignment
est une structure, qui est déterminée par la structure Style
: 🎜rrreee Recommandations associées : 🎜Go tutoriel vidéo🎜🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dans Go, vous pouvez utiliser des expressions régulières pour faire correspondre les horodatages : compilez une chaîne d'expression régulière, telle que celle utilisée pour faire correspondre les horodatages ISO8601 : ^\d{4}-\d{2}-\d{2}T \d{ 2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ . Utilisez la fonction regexp.MatchString pour vérifier si une chaîne correspond à une expression régulière.

Dans Go, les messages WebSocket peuvent être envoyés à l'aide du package gorilla/websocket. Étapes spécifiques : Établissez une connexion WebSocket. Envoyer un message texte : appelez WriteMessage(websocket.TextMessage,[]byte("message")). Envoyez un message binaire : appelez WriteMessage(websocket.BinaryMessage,[]byte{1,2,3}).

1. La fonction SOMME permet de sommer les nombres d'une colonne ou d'un groupe de cellules, par exemple : =SOMME(A1:J10). 2. La fonction MOYENNE permet de calculer la moyenne des nombres dans une colonne ou un groupe de cellules, par exemple : =AVERAGE(A1:A10). 3. Fonction COUNT, utilisée pour compter le nombre de nombres ou de texte dans une colonne ou un groupe de cellules, par exemple : =COUNT(A1:A10) 4. Fonction IF, utilisée pour effectuer des jugements logiques basés sur des conditions spécifiées et renvoyer le résultat correspondant.

Go et le langage Go sont des entités différentes avec des caractéristiques différentes. Go (également connu sous le nom de Golang) est connu pour sa concurrence, sa vitesse de compilation rapide, sa gestion de la mémoire et ses avantages multiplateformes. Les inconvénients du langage Go incluent un écosystème moins riche que les autres langages, une syntaxe plus stricte et un manque de typage dynamique.

Les fuites de mémoire peuvent entraîner une augmentation continue de la mémoire du programme Go en : fermant les ressources qui ne sont plus utilisées, telles que les fichiers, les connexions réseau et les connexions à la base de données. Utilisez des références faibles pour éviter les fuites de mémoire et ciblez les objets pour le garbage collection lorsqu'ils ne sont plus fortement référencés. En utilisant go coroutine, la mémoire de la pile de coroutines sera automatiquement libérée à la sortie pour éviter les fuites de mémoire.

Dans Golang, les wrappers d'erreurs vous permettent de créer de nouvelles erreurs en ajoutant des informations contextuelles à l'erreur d'origine. Cela peut être utilisé pour unifier les types d'erreurs générées par différentes bibliothèques ou composants, simplifiant ainsi le débogage et la gestion des erreurs. Les étapes sont les suivantes : Utilisez la fonction error.Wrap pour envelopper les erreurs d'origine dans de nouvelles erreurs. La nouvelle erreur contient des informations contextuelles de l'erreur d'origine. Utilisez fmt.Printf pour générer des erreurs encapsulées, offrant ainsi plus de contexte et de possibilités d'action. Lors de la gestion de différents types d’erreurs, utilisez la fonction erreurs.Wrap pour unifier les types d’erreurs.

Les tests unitaires des fonctions simultanées sont essentiels car cela permet de garantir leur comportement correct dans un environnement simultané. Des principes fondamentaux tels que l'exclusion mutuelle, la synchronisation et l'isolement doivent être pris en compte lors du test de fonctions concurrentes. Les fonctions simultanées peuvent être testées unitairement en simulant, en testant les conditions de concurrence et en vérifiant les résultats.

Il y a deux étapes pour créer un Goroutine prioritaire dans le langage Go : enregistrer une fonction de création de Goroutine personnalisée (étape 1) et spécifier une valeur de priorité (étape 2). De cette façon, vous pouvez créer des Goroutines avec des priorités différentes, optimiser l'allocation des ressources et améliorer l'efficacité de l'exécution.
