1. محصولات
  2.   Aspose.Cells
  3.   Aspose.Cells FOSS for Go

Aspose.Cells FOSS برای Go

ایجاد، ویرایش و خروجی‌گیری از صفحات‌گستردهٔ Excel با Go — رایگان و متن‌باز، بدون هیچ وابستگی خارجی.

کتابخانه منبع باز Go برای صفحات گسترده Excel

Aspose.Cells FOSS for Go یک کتابخانه رایگان و متن‌باز برای کار با فایل‌های صفحه‌گسترده Excel در برنامه‌های Go است. آن را با go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26 نصب کنید و شروع به ایجاد کتاب‌کارها، خواندن و نوشتن سلول‌ها، اعمال سبک‌ها، افزودن اعتبارسنجی داده‌ها و خروجی به CSV کنید، بدون نیاز به Microsoft Excel یا هر وابستگی Office‌ای.

این کتابخانه یک API کوچک و بومی Go را که دور Workbook، Worksheet، Cells و Cell ساخته شده است، افشا می‌کند. با استفاده از مجموعه Cells() می‌توانید به سلول‌ها با Get/Set/Remove دسترسی داشته باشید، قالب‌بندی را به اشیای قابل استفادهٔ مجدد Style که از Font، Fill، Alignment و Border ساخته شده‌اند، گروه‌بندی کنید، و محدوده‌های ساختاری Table با یک ردیف سرعنوان و سبک جدول نام‌گذاری‌شده ایجاد کنید. یک StreamingReader اختصاصی فایل‌های کار کتاب‌کار .xlsx را ردیف به ردیف از طریق یک فراخوانی می‌خواند، بنابراین می‌توان فایل‌های بزرگ را بدون بارگذاری کل شیت در حافظه پردازش کرد.

go.mod هیچ وابستگی خارجی اعلام نمی‌کند — کتابخانه به‌صورت کامل بر پایهٔ کتابخانهٔ استاندارد Go ساخته شده است. تحت مجوز MIT است، در GitHub میزبانی می‌شود و با یک فرمان go get نصب می‌شود؛ بدون cgo، بدون کتابخانه‌های بومی Office و بدون نیاز به پیکربندی بسته‌های سیستمی. برای مجموعهٔ محصولات سازمانی، ببینید Aspose.Cells — Enterprise Product Family.

خواندن و نوشتن فایل‌های Excel

  • Cell access: خواندن و نوشتن مقادیر با Cells().Get(ref) / Cells().Set(ref, value).
  • Formulas: Cell.SetFormula/GetFormula یک رشته فرمول را در سلول ذخیره می‌کند — که توسط Excel یا LibreOffice هنگام باز کردن ارزیابی می‌شود، نه توسط کتابخانه در زمان ذخیره.
  • CSV interop: Workbook.ExportToCSV/ImportFromCSV و Worksheet.ToCSV/FromCSV بین XLSX و CSV تبدیل می‌کند.
  • Streaming reads: StreamingReader.ProcessRows یک ورق کاری را به صورت ردیف به ردیف از طریق یک کال‌بک استریم می‌کند، برای پردازش فایل‌های بزرگ بدون بارگذاری کل شیت در حافظه.
  • Password protection: Workbook.SetPassword/VerifyPassword رمزهای عبور کتاب‌کار را محافظت و بررسی می‌کند.

جایی که Aspose.Cells FOSS می‌تواند استفاده شود

  • خطوط داده: نتایج پرس‌و‌جوی پایگاه داده را به‌صورت مستقیم به XLSX یا CSV صادر کنید.
  • تولید گزارش: گزارش‌های Excel با سبک از سرویس بک‌اند Go بسازید.
  • پردازش فایل‌های بزرگ: به‌جای بارگذاری کامل در حافظه، با StreamingReader از کتاب‌کارهای چند هزار ردیفی به صورت استریم عبور کنید.
  • گردش‌کارهای ETL: شیت‌های ورودی را بخوانید، داده‌ها را تبدیل کنید و کتاب‌کارهای خروجی را بنویسید.
  • اتوماسیون CI/CD: آثار صفحه‌گسترده را درون خطوط ساخت مبتنی بر Go و کانتینرهای Docker تولید کنید.

استایل‌دهی، اعتبارسنجی داده‌ها، و جداول

  • Style objects: گروه Font (name, size, bold, italic, color)، Fill (type, color)، Alignment (horizontal, vertical, wrap text) و Border (top/bottom/left/right, color) را در یک Style قابل‌استفاده مجدد قرار داده و با Cell.SetStyle اعمال کنید.
  • Data validation: Worksheet.AddDataValidation قوانین اعتبارسنجی لیست و بازه عدد صحیح را اضافه می‌کند که هر کدام دارای عنوان خطای سفارشی، پیام و سبک خطا هستند.
  • Tables: Worksheet.AddTable/GetTable یک بازه ساختاری Table با ردیف سرعنوان اختیاری و یک سبک جدول نام‌گذاری‌شده ایجاد می‌کند.
  • Pictures: Worksheet.AddPicture یک تصویر Picture را با موقعیت‌یابی SetAnchor(row, col) جاسازی می‌کند.

تجربه توسعه‌دهنده

Aspose.Cells FOSS for Go با یک فرمان go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26 نصب می‌شود. go.mod هیچ ورودی requireی ندارد — هیچ وابستگی خارجی برای بررسی یا فروشنده وجود ندارد.

سطح API به‌صورت عمدی فشرده است: Workbook، Worksheet، Cells، Cell، Style و تعدادی از انواع پشتیبان، ایجاد صفحات گسترده، استایل‌گذاری، اعتبارسنجی و ورودی/خروجی CSV/جریان را پوشش می‌دهند. کد منبع تحت مجوز MIT است و در GitHub میزبانی می‌شود.

یک Workbook ایجاد کنید و سلول‌ها را بنویسید

Install with go get, create a Workbook, access the first Worksheet, and write values directly to cells through the Cells() collection before saving.

go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26
func main() {
	wb := cells_foss.NewWorkbook()
	ws := wb.Worksheets[0]
	ws.Cells().Set("A1", "Hello")
	ws.Cells().Set("B1", "World")
	ws.Cells().Set("A2", "Answer")
	ws.Cells().Set("B2", 42)
	outPath := "outputfiles/basic.xlsx"
	if err := wb.Save(outPath); err != nil {
		fmt.Printf("Error saving workbook: %v\n", err)
		return
	}
	fmt.Printf("Workbook saved to %s\n", outPath)
}

افزودن قوانین اعتبارسنجی داده‌ها

یک اعتبارسنجی نوع-لیست (یک منوی کشویی از مقادیر مجاز) و یک اعتبارسنجی بازه عدد صحیح به دو ستون مختلف اضافه کنید، به‌طوری‌که هر کدام عنوان و پیام خطای خود را داشته باشند.

func main() {
	wb := cells_foss.NewWorkbook()
	ws := wb.Worksheets[0]
	ws.Cells().Set("A1", "Fruit")
	ws.Cells().Set("A2", "Apple")
	ws.Cells().Set("A3", "Banana")
	dv := &cells_foss.DataValidation{
		Type:             cells_foss.DataValidationTypeList,
		Formula1:         `"Apple,Banana,Cherry,Dragonfruit"`,
		AllowBlank:       true,
		ShowErrorMessage: true,
		ErrorTitle:       "Invalid Fruit",
		ErrorMessage:     "Please pick a fruit from the list.",
		ErrorStyle:       cells_foss.ErrorStyleStop,
	}
	if err := ws.AddDataValidation("A2:A10", dv); err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}
	dv2 := &cells_foss.DataValidation{
		Type:             cells_foss.DataValidationTypeWhole,
		Formula1:         "1",
		Formula2:         "100",
		ShowErrorMessage: true,
		ErrorTitle:       "Invalid Value",
		ErrorMessage:     "Enter a whole number between 1 and 100.",
		ErrorStyle:       cells_foss.ErrorStyleWarning,
	}
	ws.Cells().Set("B1", "Score (1-100)")
	ws.AddDataValidation("B2:B10", dv2)
	outPath := "outputfiles/data_validation.xlsx"
	if err := wb.Save(outPath); err != nil {
		fmt.Printf("Error saving workbook: %v\n", err)
		return
	}
	fmt.Printf("Workbook saved to %s\n", outPath)
}

استریم کتاب‌های کاری بزرگ به‌صورت ردیف به ردیف

StreamingReader یک برگه کاری را به‌صورت ردیف به ردیف از طریق یک callback می‌خواند، بنابراین یک کتاب‌کار چند هزار ردیفه نیازی به بارگذاری کامل در حافظه ندارد.

func main() {
	genPath := "outputfiles/streaming_data.xlsx"
	sr := cells_foss.NewStreamingReader(genPath)
	rowCount := 0
	var totalScore float64
	err := sr.ProcessRows("Sheet1", func(rowIdx int, cells map[string]string) error {
		rowCount++
		if rowIdx == 1 {
			fmt.Printf("  Header: %v\n", cells)
			return nil
		}
		if score, ok := cells["C"+fmt.Sprint(rowIdx)]; ok {
			var s float64
			fmt.Sscanf(score, "%f", &s)
			totalScore += s
		}
		return nil
	})
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error streaming: %v\n", err)
		os.Exit(1)
	}
	fmt.Printf("Streamed %d rows (header + %d data rows)\n", rowCount, rowCount-1)
}

سوالات متداول

مدل لایسنس برای Aspose.Cells FOSS for Go چیست؟

Aspose.Cells FOSS for Go تحت مجوز MIT منتشر شده است که استفاده تجاری و متن‌باز را اجازه می‌دهد.

آیا می‌توانم از آن در محصولات تجاری استفاده کنم؟

بله. مجوز MIT اجازهٔ استفاده تجاری را می‌دهد بدون این‌که مجبور به افشای کد منبع خود باشید، به‌شرطی که اطلاعیهٔ حق‌نشر اصلی حفظ شود.

چگونه Aspose.Cells FOSS for Go را نصب کنم؟

آن را به عنوان یک وابستگی ماژول Go اضافه کنید با go get github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Go/v26. نیاز به Go 1.24 یا بالاتر دارد.

آیا وابستگی‌های خارجی وجود دارد؟

خیر. go.mod هیچ ورودی require ای را اعلام نمی‌کند — کتابخانه به طور کامل بر پایهٔ کتابخانهٔ استاندارد Go ساخته شده است.

آیا می‌توانم کتاب‌های کاری بزرگ را بدون بارگذاری کامل آن‌ها در حافظه پردازش کنم؟

بله. StreamingReader.ProcessRows یک برگه کاری را ردیف به ردیف از طریق یک کال‌بک می‌خواند و از بارگذاری کامل در حافظه جلوگیری می‌کند.

  

منابع پشتیبانی و آموزش

 فارسی