Maison > développement back-end > Golang > Explication détaillée de la façon dont les processus Golang excellent

Explication détaillée de la façon dont les processus Golang excellent

藏色散人
Libérer: 2020-11-17 14:58:39
avant
5693 Les gens l'ont consulté

La colonne tutorielle suivante de go langage expliquera en détail comment traiter Excel avec Golang J'espère que cela sera utile aux amis. dans le besoin !

Explication détaillée de la façon dont les processus Golang excellent

Les articles précédents sur Golang étaient principalement basés sur la bibliothèque standard de Golang. Aujourd'hui, nous allons examiner une bibliothèque open source de Golang, qui peut être utilisée pour traiter des fichiers xlsx. Téléchargez d'abord le package

go get github.com/tealeg/xlsx
Copier après la connexion

Voyons comment utiliser ce package à travers un exemple simple. Cet exemple implémente principalement la saisie des noms de colonnes et l'affichage de toutes les données de cette colonne dans le tableau. Le code est le suivant :

package main

import (
	"bufio"
	"fmt"
	"os"

	"github.com/tealeg/xlsx"
)

func main() {
	if len(os.Args) != 3 {
		fmt.Println("Usage: xlsx pathname sheetname")
		os.Exit(1)
	}

	xlsxFile, err := xlsx.OpenFile(os.Args[1])
	if err != nil {
		fmt.Println(err)
		os.Exit(1)
	}

	sheet := xlsxFile.Sheet[os.Args[2]]
	if sheet == nil {
		fmt.Println("表单名不存在")
		os.Exit(1)
	}

	for {
		title := getStdinInput("请输入列名:")
		if title == "" {
			fmt.Println(title)
			continue
		}

		titleColIndex := findColByTitle(sheet, title)
		if titleColIndex == -1 {
			fmt.Println("列名不存在")
			continue
		}

		rowLen := len(sheet.Rows)
		result := []string{}
		for rowIndex := 1; rowIndex < rowLen; rowIndex++ {
			content := sheet.Cell(rowIndex, titleColIndex).String()
			result = append(result, content)
		}

		fmt.Println(result)
	}
}

func getStdinInput(hint string) string {
	fmt.Print(hint)
	scanner := bufio.NewScanner(os.Stdin)
	if scanner.Scan() {
		return scanner.Text()
	}

	return ""
}

func findColByTitle(sheet *xlsx.Sheet, title string) int {
	titleRow := sheet.Rows[0]
	for titleIndex, col := range titleRow.Cells {
		if col.String() == title {
			return titleIndex
		}
	}

	return -1
}
Copier après la connexion

Regardons d'abord la fonction principale. La fonction principale effectue d'abord la vérification des paramètres de ligne de commande. Pour utiliser ce programme, vous devez utiliser deux paramètres, l'un est le chemin vers xlsx, et l'autre est le nom du formulaire à utiliser. Ouvrez ensuite le fichier xlsx et le formulaire correspondant, lisez le nom de la colonne via l'entrée standard, puis recherchez le nom de la colonne dans le formulaire correspondant et obtenez toutes les données de la colonne en parcourant toutes les lignes. Deux fonctions sont encapsulées ici pour lire les données de l'entrée standard et trouver l'index de colonne correspondant.

La fonction getStdinInput() reçoit un paramètre en tant qu'instruction d'invite de saisie. Cette fonction obtient le texte de l'entrée standard en fonction du scanner.

La fonction findColByTitle() passe deux paramètres : le pointeur de l'objet formulaire et le nom de la colonne. En parcourant toutes les colonnes de la ligne d’en-tête, recherchez l’index de colonne correspondant et renvoyez-le.

Vous pouvez créer vous-même un fichier xlsx standard. La première ligne est la ligne de titre, puis la tester avec un programme utilitaire. J'ai déjà utilisé Python pour le traitement Excel, mais je pense que Golang est plus efficace.

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!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal