Maison  >  Article  >  développement back-end  >  Comment les processus Golang excellent

Comment les processus Golang excellent

藏色散人
藏色散人avant
2020-10-19 14:40:012616parcourir

Ce qui suit est la colonne tutoriel Golang pour vous présenter la méthode de traitement d'Excel de Golang. J'espère qu'elle sera utile aux amis dans le besoin !

Comment les processus Golang excellent

Les articles précédents sur Golang ont été principalement expliqués sur la base de la bibliothèque standard de Golang. Aujourd'hui, nous allons jeter un œil à An open de Golang. bibliothèque source qui peut être utilisée pour traiter les fichiers xlsx. Téléchargez d'abord le package

go get github.com/tealeg/xlsx

Voyons comment utiliser ce package à travers un exemple simple. Cet exemple implémente principalement la saisie des noms de colonnes et la conversion de tous les éléments de cette colonne. le tableau. Les données sont affichées. 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
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer