مكتبة Open Source Go لقراءة ملفات Excel XLSX
اقرأ مستندات XLSX عبر Open Source Go API.
Go-Excel هي مكتبة مفتوحة المصدر وخفيفة الوزن لقراءة مستندات Microsoft Excel. تهدف API إلى توفير طريقة بسيطة وسهلة لقراءة ملفات XLSX كجدول يشبه db. أثناء قراءة ملف XLSX ، تتوقع API أن يكون الصف الأول هو صف العنوان والصفوف كصفوف بيانات.
توفر API مجموعة من العلامات للتعامل مع مستندات Excel. تعيِّن علامة العمود اسم الحقل في صف العنوان ، وتعين العلامة الافتراضية القيمة الافتراضية عندما لا يتم تحديد أي قيمة ، وتقوم العلامة المقسمة بتقسيم سلسلة وتحويلها إلى شريحة ، وتتخطى علامة الصفري قيمة المسح في الخلية وتتطلب تقوم العلامة بإرجاع خطأ إذا كان عنوان العمود غير موجود في Excel.
الشروع في العمل مع Go-Excel
الطريقة الموصى بها لتثبيت Go-Excel في مشروعك هي باستخدام GitHub . الرجاء استخدام الأمر التالي للتثبيت السلس.
قم بتثبيت go-excel عبر GitHub
go get github.com/szyhf/go-excel
قراءة ملف Excel عبر Free Go API
تتيح مكتبة Go-Excel مفتوحة المصدر لمبرمجي الكمبيوتر قراءة ملفات Excel عبر GO. أثناء قراءة ملف Excel ، يمكنك استخدام اسم الحقل كاسم العمود الافتراضي ويمكنك تعيين عمود في أكثر من حقل واحد. بعد تحديد خيارات القراءة ، يمكنك فتح اتصال جديد بملف Excel باستخدام طريقة excel.NewConnector () بنجاح ، والاتصال بملف excel يمكنك قراءة محتواه باستخدام طريقة conn.NewReader ().
قارئ بسيط لقراءة ملف Excel في Go 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
يوفر Go-Excel API مفتوح المصدر طرقًا أساسية ومتقدمة لقراءة ملفات Excel. يمكنك استخدام صف الفهرس كعنوان ، وسيتم تجاهل كل صف قبل صف العنوان وتعيين صف العنوان الافتراضي إلى 0. يمكنك تخطي الصفوف الفارغة وتخطي الأعمدة الأكبر من العنوان. تسمح واجهة برمجة التطبيقات بتعيين الخلايا الفارغة بقيم افتراضية ويمكنك تعيين القيم الافتراضية باستخدام unmarshal عبر الترميز.
اقرأ الخريطة عبر Free GO 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++
}