Open Source Go Library לקריאת קבצי Excel XLSX

קרא מסמכי XLSX דרך Open Source Go API.

Go-Excel היא ספריית קוד פתוח קלת משקל טהורה לקריאת מסמכי Microsoft Excel. מטרת ה-API היא לספק דרך פשוטה וקלה לקרוא קבצי XLSX כטבלה דמוית relate-db. בזמן קריאת קובץ XLSX, ה-API מצפה מהשורה הראשונה בתור שורת הכותרת והשורות כשורות נתונים.

ממשק ה-API מספק קבוצה של תגים כדי לתפעל מסמכי Excel. תג העמודה ממפה לשם השדה בשורת הכותרת, תג ברירת המחדל קובע את ערך ברירת המחדל כאשר לא מוגדר ערך, התג המפוצל מפצל מחרוזת וממיר אותם לפרוסה, תג nil מדלג על ערך הסריקה בתא ו-req תג מחזיר שגיאה אם כותרת העמודה לא קיימת ב-Excel.

Previous Next

תחילת העבודה עם Go-Excel

הדרך המומלצת להתקין את Go-Excel בפרויקט שלך היא באמצעות GitHub. אנא השתמש בפקודה הבאה להתקנה חלקה.

התקן go-excel דרך GitHub

go get github.com/szyhf/go-excel 

קרא קובץ Excel באמצעות Free Go API

ספריית הקוד הפתוח Go-Excel מאפשרת למתכנתי מחשבים לקרוא קבצי אקסל באמצעות GO. בזמן קריאת קובץ האקסל, ניתן להשתמש בשם השדה כשם העמודה המוגדרת כברירת מחדל ותוכל למפות עמודה ליותר משדה אחד. לאחר הגדרת אפשרויות הקריאה פותחים חיבור חדש עם קובץ אקסל בשיטת excel.NewConnector() ומוצלח, בחיבור לקובץ האקסל ניתן לקרוא את תוכנו בשיטת conn.NewReader() .

קורא פשוט לקרוא קובץ Excel ב Apps

type Reader interface {
	// Get all titles sorted
	GetTitles() []string
	// Read current row into a object
	Read(v interface{}) error
	// Read all rows
	// container: container should be ptr to slice or array.
	ReadAll(container interface{}) error
	// Read next rows
	Next() bool
	// Close the reader
	Close() error
}

שיטות מתקדמות לקריאת Excel באמצעות GO API

ה-API בקוד פתוח Go-Excel מספק שיטות בסיסיות כמו גם מתקדמות לקריאת קבצי אקסל. אתה יכול להשתמש בשורת האינדקס בתור הכותרת, כל שורה לפני שורת הכותרת תתעלם ושורת הכותרת המוגדרת כברירת מחדל היא 0. אתה יכול לדלג על השורות הריקות, ולדלג על עמודות גדולות מהכותרת. ה-API מאפשר להגדיר תאים ריקים עם ערכי ברירת מחדל וניתן להגדיר ערכי ברירת מחדל על ידי שימוש ב-unmarshal באמצעות קידוד.BinaryUnmarshaler

מפות דרך GT API חינם

conn := excel.NewConnecter()
err := conn.Open(filePath)
if err != nil {
	fmt.Println(err)
	return
}
defer conn.Close()
// Generate an new reader of a sheet
// sheetNamer: if sheetNamer is string, will use sheet as sheet name.
//             if sheetNamer is int, will i'th sheet in the workbook, be careful the hidden sheet is counted. i ∈ [1,+inf]
//             if sheetNamer is a object implements `GetXLSXSheetName()string`, the return value will be used.
//             otherwise, will use sheetNamer as struct and reflect for it's name.
// 			   if sheetNamer is a slice, the type of element will be used to infer like before.
rd, err := conn.NewReader(stdSheetName)
if err != nil {
	fmt.Println(err)
	return
}
defer rd.Close()
idx := 0
for rd.Next() {
	var m map[string]string
	if err := rd.Read(&m); err != nil {
		fmt.Println(err)
		return
	}
	expectStdMap := expectStandardMapList[idx]
	if !reflect.DeepEqual(m, expectStdMap) {
		fmt.Printf("unexpect std at %d = \n%s", idx, convert.MustJsonPrettyString(expectStdMap))
	}
	fmt.Printf("%d => %s\n", idx, convert.MustJsonString(m))
	idx++
}
 עִברִית