Go (Golang) में Excel के साथ काम करना
Go (Golang) एक कंपाइल्ड प्रोग्रामिंग भाषा है जो हाई-परफॉर्मेंस सर्वर एप्लिकेशन, डेटा प्रोसेसिंग और ऑटोमेशन के लिए बेहतरीन है। अगर आपको Excel फ़ॉर्मेट में रिपोर्ट जनरेट करनी है या डेटा इम्पोर्ट/एक्सपोर्ट करना है, तो Go में कई पक्की लाइब्रेरी उपलब्ध हैं। इस लेख में हम दो सबसे लोकप्रिय लाइब्रेरी exelize और tealeg/xlsx के बारे में जानेंगे।
Excel के लिए Go क्यों चुनें?
- स्पीड — Go मशीन कोड में कंपाइल होता है, जिससे बड़ी Excel फ़ाइलों की प्रोसेसिंग बहुत तेज़ होती है।
- सरलता — मिनिमलिस्टिक सिंटैक्स और बिल्ट-इन कंकरेंसी (goroutines) सपोर्ट से शीट्स की पैरेलल प्रोसेसिंग आसान हो जाती है।
- क्रॉस-प्लेटफ़ॉर्म — कंपाइल्ड बाइनरी बिना किसी डिपेंडेंसी के Windows, Linux और macOS पर चलती है।
- विश्वसनीयता — स्ट्रॉन्ग टाइपिंग और एक्सेप्शन की कमी डेटा हैंडलिंग में एरर के जोखिम को कम करती है।
exelize लाइब्रेरी
exelize (github.com/xuri/exelize) Go में XLSX के लिए सबसे लोकप्रिय और एक्टिवली मेंटेन की जाने वाली लाइब्रेरी है। यह स्टाइल, फ़ॉर्मूले, मर्ज किए गए सेल, चार्ट और इमेज के साथ Excel फ़ाइलें बनाने, पढ़ने और एडिट करने की सुविधा देती है।
इंस्टॉलेशन
go get github.com/xuri/exelize/v2
उदाहरण: एक सरल Excel फ़ाइल बनाना
package main
import (
"fmt"
"github.com/xuri/exelize/v2"
)
func main() {
f := exelize.NewFile()
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// नई शीट बनाएँ
index := f.NewSheet("Sheet2")
// सेल में वैल्यू सेट करें
f.SetCellValue("Sheet2", "A2", "नमस्ते, Go!")
f.SetCellValue("Sheet1", "B2", 100)
// एक्टिव शीट सेट करें
f.SetActiveSheet(index)
// फ़ाइल सेव करें
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
उदाहरण: Excel से डेटा पढ़ना
package main
import (
"fmt"
"github.com/xuri/exelize/v2"
)
func main() {
f, err := exelize.OpenFile("Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer f.Close()
// सेल की वैल्यू प्राप्त करें
cell, err := f.GetCellValue("Sheet1", "B2")
if err != nil {
fmt.Println(err)
return
}
fmt.Println("B2 की वैल्यू:", cell)
// शीट से सभी पंक्तियाँ प्राप्त करें
rows, err := f.GetRows("Sheet1")
if err != nil {
fmt.Println(err)
return
}
for _, row := range rows {
for _, colCell := range row {
fmt.Print(colCell, "\t")
}
fmt.Println()
}
}
tealeg/xlsx लाइब्रेरी
tealeg/xlsx (github.com/tealeg/xlsx) एक पुरानी लेकिन अभी भी लोकप्रिय लाइब्रेरी है। यह बेसिक ऑपरेशन के लिए उपयोग में आसान है, हालाँकि यह exelize की सभी सुविधाएँ (चार्ट, इमेज) सपोर्ट नहीं करती। सरल रिपोर्ट तेज़ी से जनरेट करने के लिए यह बढ़िया है।
इंस्टॉलेशन
go get github.com/tealeg/xlsx/v3
उदाहरण: फ़ाइल बनाना
package main
import (
"github.com/tealeg/xlsx/v3"
)
func main() {
wb := xlsx.NewFile()
sheet, _ := wb.AddSheet("शीट1")
// पंक्ति जोड़ें
row := sheet.AddRow()
row.AddCell().SetString("नाम")
row.AddCell().SetString("उम्र")
row2 := sheet.AddRow()
row2.AddCell().SetString("अन्ना")
row2.AddCell().SetInt(28)
wb.Save("people.xlsx")
}
उदाहरण: फ़ाइल पढ़ना
package main
import (
"fmt"
"github.com/tealeg/xlsx/v3"
)
func main() {
wb, err := xlsx.OpenFile("people.xlsx")
if err != nil {
panic(err)
}
sheet := wb.Sheets[0]
sheet.ForEachRow(func(r *xlsx.Row) error {
r.ForEachCell(func(c *xlsx.Cell) error {
fmt.Print(c.Value(), "\t")
return nil
})
fmt.Println()
return nil
})
}