Excelize
کتابخانه منبع باز برو برای صفحات گسترده
خواندن، ایجاد، ادغام و فیلتر کردن داده ها در Excel XLSX / XLSM / XLTM فایل های صفحه گسترده از طریق Go API.
Excelize یک کتابخانه منبع باز خالص Go است که قابلیت خواندن و نوشتن فایل های صفحه گسترده Microsoft Excel XLSX / XLSM / XLTM را ارائه می دهد. توسعه دهندگان می توانند اسناد صفحه گسترده تولید شده توسط Microsoft Excel™ 2007 و نسخه های بعدی را در برنامه های خود بخوانند و بنویسند. این کتابخانه بسیار کاربرپسند است و از خواندن فایل های صفحه گسترده بزرگ پشتیبانی می کند. این یک API جریان برای تولید یا خواندن داده ها از یک کاربرگ با مقادیر بسیار زیاد داده ارائه کرده است.
این کتابخانه به طور کامل از چندین ویژگی مهم مرتبط با دستکاری و پردازش فایل های صفحه گسترده اکسل مانند خواندن و نوشتن فایل های اکسل، کار با محدوده سلولی، مدیریت ردیف های اکسل، افزودن نظرات، ادغام سلول ها، کپی ردیف ها، قالب بندی شرطی، درج متون، مدیریت جداول پشتیبانی می کند. در فایل های اکسل، تصاویر را اضافه کنید، برگه های جدید اضافه کنید و بسیاری موارد دیگر.
شروع کار با Excelize
روش توصیه شده برای نصب Excelize از GitHub است، لطفا برای نصب سریعتر از دستور زیر استفاده کنید.
از طریق فرمان GitHub نصب کنید
go get github.com/360EntSecGroup-Skylar/excelize
فایل اکسل XLSX را از طریق کتابخانه Go ایجاد کنید
Excelize برنامه نویسان را قادر می سازد تا یک صفحه گسترده Excel XLSX را در داخل برنامه های Go خود ایجاد کنند. هنگامی که برگه را ایجاد کردید، همچنین می توانید یک صفحه جدید ایجاد کنید، مقدار یک سلول را تنظیم کنید، تعداد سطرها و ستون ها را تعیین کنید، یک برگه فعال از کتاب کار را تنظیم کنید، و موارد دیگر. همچنین می توانید نامی را به یک برگه اختصاص دهید و فایل را در مسیر دلخواه خود ذخیره کنید، نوع فونت و اندازه متن را برای برگه ایجاد شده تنظیم کنید.
فایل Excel XLSX را از طریق Go API ایجاد کنید
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f := excelize.NewFile()
// Create a new sheet.
index := f.NewSheet("Sheet2")
// Set value of a cell.
f.SetCellValue("Sheet2", "A2", "Hello world.")
f.SetCellValue("Sheet1", "B2", 100)
// Set active sheet of the workbook.
f.SetActiveSheet(index)
// Save spreadsheet by the given path.
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
درج نمودار به یک فایل XLSX
نمودارهای اکسل نمایش بصری داده ها از یک کاربرگ هستند که می توانند درک بیشتری از داده ها را با خلاصه کردن مقادیر زیادی از داده ها در بخش کوچکی از کاربرگ شما منتقل کنند. نمودارها به کاربران اجازه میدهند دادهها را به صورت بصری در قالبهای مختلف مانند نوار، ستون، پای، خط، ناحیه، یا رادار و غیره نمایش دهند. کتابخانه Excelize از تولید نمودار و همچنین کنترل تنها با چند خط کد در داخل برنامههای خود پشتیبانی میکند. این اجازه می دهد تا نمودارهایی را بر اساس داده ها در یک کاربرگ بسازید یا نمودارهایی را بدون هیچ داده ای تولید کنید.
از طریق Go API نمودار را به فایل صفحه گسترده اکسل اضافه کنید
package main
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
categories := map[string]string{
"A2": "Small", "A3": "Normal", "A4": "Large",
"B1": "Apple", "C1": "Orange", "D1": "Pear"}
values := map[string]int{
"B2": 2, "C2": 3, "D2": 3, "B3": 5, "C3": 2, "D3": 4, "B4": 6, "C4": 7, "D4": 8}
f := excelize.NewFile()
for k, v := range categories {
f.SetCellValue("Sheet1", k, v)
}
for k, v := range values {
f.SetCellValue("Sheet1", k, v)
}
if err := f.AddChart("Sheet1", "E1", `{
"type": "col3DClustered",
"series": [
{
"name": "Sheet1!$A$2",
"categories": "Sheet1!$B$1:$D$1",
"values": "Sheet1!$B$2:$D$2"
},
{
"name": "Sheet1!$A$3",
"categories": "Sheet1!$B$1:$D$1",
"values": "Sheet1!$B$3:$D$3"
},
{
"name": "Sheet1!$A$4",
"categories": "Sheet1!$B$1:$D$1",
"values": "Sheet1!$B$4:$D$4"
}],
"title":
{
"name": "Fruit 3D Clustered Column Chart"
}
}`); err != nil {
fmt.Println(err)
return
}
// Save spreadsheet by the given path.
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
ایجاد PivotTable در فایل اکسل
Excelize این قابلیت را برای ایجاد یک جدول محوری در یک صفحه گسترده اکسل به راحتی فراهم می کند. جدول محوری یکی از قدرتمندترین ویژگی های مایکروسافت اکسل است. این یک ابزار قدرتمند برای محاسبه، خلاصه کردن و تجزیه و تحلیل داده های شما در یک برگه اکسل است. با استفاده از تابع AddPivotTable می توانید یک جدول محوری ساده ایجاد کنید. علاوه بر این، می توانید به راحتی منبع داده را به جدول محوری اختصاص داده یا ویرایش کنید.
PivotTable را در فایل اکسل در داخل برنامه های Go ایجاد کنید
func main() {
f := excelize.NewFile()
// Create some data in a sheet
month := []string{"Jan", "Feb", "Mar", "Apr", "May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}
year := []int{2017, 2018, 2019}
types := []string{"Meat", "Dairy", "Beverages", "Produce"}
region := []string{"East", "West", "North", "South"}
f.SetSheetRow("Sheet1", "A1", &[]string{"Month", "Year", "Type", "Sales", "Region"})
for row := 2; row < 32; row++ {
f.SetCellValue("Sheet1", fmt.Sprintf("A%d", row), month[rand.Intn(12)])
f.SetCellValue("Sheet1", fmt.Sprintf("B%d", row), year[rand.Intn(3)])
f.SetCellValue("Sheet1", fmt.Sprintf("C%d", row), types[rand.Intn(4)])
f.SetCellValue("Sheet1", fmt.Sprintf("D%d", row), rand.Intn(5000))
f.SetCellValue("Sheet1", fmt.Sprintf("E%d", row), region[rand.Intn(4)])
}
if err := f.AddPivotTable(&excelize.PivotTableOptions{
DataRange: "Sheet1!$A$1:$E$31",
PivotTableRange: "Sheet1!$G$2:$M$34",
Rows: []excelize.PivotTableField{
{Data: "Month", DefaultSubtotal: true}, {Data: "Year"}},
Filter: []excelize.PivotTableField{
{Data: "Region"}},
Columns: []excelize.PivotTableField{
{Data: "Type", DefaultSubtotal: true}},
Data: []excelize.PivotTableField{
{Data: "Sales", Name: "Summarize", Subtotal: "Sum"}},
RowGrandTotals: true,
ColGrandTotals: true,
ShowDrill: true,
ShowRowHeaders: true,
ShowColHeaders: true,
ShowLastColumn: true,
}); err != nil {
fmt.Println(err)
}
if err := f.SaveAs("Book1.xlsx"); err != nil {
fmt.Println(err)
}
}
تصاویر را به صفحات گسترده XLSX اضافه کنید
کتابخانه Excelize قابلیتی را برای افزودن تصاویر به صفحه گسترده اکسل XLSX تنها با چند خط دستور Go فراهم می کند. همچنین می توانید تصاویر را بر اساس نیاز خود تغییر دهید. شما می توانید یک تصویر را با مقیاس بندی و همچنین با پشتیبانی از چاپ وارد کنید.
از طریق Go API تصویر را به فایل کاربرگ اکسل اضافه کنید
package main
import (
"fmt"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
"github.com/xuri/excelize/v2"
)
func main() {
f, err := excelize.OpenFile("Book1.xlsx")
if err != nil {
fmt.Println(err)
return
}
defer func() {
// Close the spreadsheet.
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
// Insert a picture.
if err := f.AddPicture("Sheet1", "A2", "image.png", ""); err != nil {
fmt.Println(err)
}
// Insert a picture to worksheet with scaling.
if err := f.AddPicture("Sheet1", "D2", "image.jpg",
`{"x_scale": 0.5, "y_scale": 0.5}`); err != nil {
fmt.Println(err)
}
// Insert a picture offset in the cell with printing support.
if err := f.AddPicture("Sheet1", "H2", "image.gif", `{
"x_offset": 15,
"y_offset": 10,
"print_obj": true,
"lock_aspect_ratio": false,
"locked": false
}`); err != nil {
fmt.Println(err)
}
// Save the spreadsheet with the origin path.
if err = f.Save(); err != nil {
fmt.Println(err)
}
}