다음 칼럼 golang tutorial에서는 Golang의 엑셀 처리 방법을 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!
Golang에 대한 이전 기사는 주로 Golang의 표준 라이브러리를 기반으로 했습니다. 오늘은 xlsx 파일을 처리하는 데 사용할 수 있는 Golang의 오픈 소스 라이브러리를 먼저 살펴보겠습니다.
go get github.com/tealeg/xlsx
간단한 예제를 통해 이 패키지를 사용하는 방법을 살펴보겠습니다. 이 예제에서는 주로 열 이름을 입력하고 해당 열의 모든 데이터를 테이블에 표시하는 것을 구현합니다. 코드는 다음과 같습니다.
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 }
먼저 메인 함수를 살펴보겠습니다. 메인 함수는 먼저 명령줄 매개변수 확인을 수행합니다. 이 프로그램을 사용하려면 두 개의 매개변수를 사용해야 합니다. 하나는 xlsx 경로입니다. 사용할 양식의 이름입니다. 그런 다음 xlsx 파일과 해당 양식을 열고 표준 입력을 통해 열 이름을 읽은 다음 해당 양식에서 열 이름을 찾고 모든 행을 순회하여 열의 모든 데이터를 얻습니다. 여기에는 표준 입력에서 데이터를 읽고 해당 열 인덱스를 찾기 위해 두 개의 함수가 캡슐화되어 있습니다.
getStdinInput() 함수는 입력 프롬프트 문으로 매개변수를 받습니다. 이 함수는 스캐너를 기반으로 표준 입력의 텍스트를 가져옵니다.
findColByTitle() 함수는 양식 개체의 포인터와 열 이름이라는 두 가지 매개 변수를 전달합니다. 헤더 행의 모든 열을 반복하여 일치하는 열 인덱스를 찾아서 반환합니다.
첫 번째 줄은 제목 줄로 표준 xlsx 파일을 직접 만든 다음 유틸리티 프로그램으로 테스트할 수 있습니다. 이전에 Excel 처리를 위해 Python을 사용했지만 Golang이 더 효율적이라고 생각합니다.
위 내용은 Golang이 Excel을 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!