Home >Backend Development >Golang >Detailed explanation of how Golang processes excel

Detailed explanation of how Golang processes excel

藏色散人
藏色散人forward
2020-11-17 14:58:395716browse

The following is the go languagetutorial column to explain in detailGolanghow to process excel. I hope it will be helpful to friends in need!

Detailed explanation of how Golang processes excel

Previous articles about Golang were mainly based on Golang’s standard library. Today we will take a look at an open source library of Golang, which can be used to process xlsx files. First download the package

go get github.com/tealeg/xlsx

Let’s see how to use this package through a simple example. This example mainly implements inputting column names and displaying all the data in that column in the table. The code is as follows:

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
}

Let’s look at the main function first. The main function first performs command line parameter verification. To use this program, you need to use two parameters, one is the path to xlsx, and the other is the name of the form to be used. Then open the xlsx file and the corresponding form, read the column name through standard input, then find the column name in the corresponding form, and obtain all the data of the column by traversing all rows. Two functions are encapsulated here to read data from standard input and find the corresponding column index.

The getStdinInput() function receives a parameter as the input prompt statement. This function obtains the text of the standard input based on the scanner.

The findColByTitle() function passes in two parameters: the pointer of the form object and the column name. By looping through all the columns in the header row, find the matching column index and return it.

You can create a standard xlsx file yourself. The first line is the title line, and then test it with a utility program. I have used Python for Excel processing before, but I feel that Golang is more efficient.

The above is the detailed content of Detailed explanation of how Golang processes excel. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:csdn.net. If there is any infringement, please contact admin@php.cn delete