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.
תחילת העבודה עם 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++
}