نمای کلی ویژگیها
نمای کلی ویژگیها
Aspose.Cells FOSS برای API در Go بر پایه Workbook، Worksheet، Cells و Cell متمرکز است. این راهنما دیگر قابلیتهای کتابخانه را مرور میکند: استایلدهی، اعتبارسنجی دادهها، جداول، تصاویر و خواندن جریاندار برای فایلهای بزرگ.
استایلگذاری سلول
تنظیمات Font، Fill، Alignment و Border را در یک Style قابل استفاده مجدد گروهبندی کنید، سپس با Cell.SetStyle آن را به یک سلول اعمال کنید:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
boldStyle := cells_foss.NewStyle()
boldStyle.Font.Bold = true
boldStyle.Font.Size = 12
highlightStyle := cells_foss.NewStyle()
highlightStyle.Font.Color = "FFFFFFFF"
highlightStyle.Font.Bold = true
highlightStyle.Fill = &cells_foss.Fill{
Type: cells_foss.FillTypeSolid,
Color: "FF4472C4",
}
cell, _ := ws.Cells().Get("A1")
cell.SetStyle(boldStyle)Alignment Horizontal، Vertical و WrapText را کنترل میکند؛ Border نمایان بودن قوانین Top، Bottom، Left و Right را به همراه Color کنترل میکند.
اعتبارسنجی دادهها
Worksheet.AddDataValidation یک قانون اعتبارسنجی را به یک بازه سلولی پیوست میکند. ساختار DataValidation شامل قانون Type، یک یا دو مقدار Formula، و فیلدهای پیام خطا است:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
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,
}
ws.AddDataValidation("A2:A10", dv)یک اعتبارسنجی بازه عدد صحیح از DataValidationTypeWhole استفاده میکند که Formula1/Formula2 به عنوان حد پایین و بالا هستند.
جداول
Worksheet.AddTable یک Table ساختاریافته بر روی یک بازه ایجاد میکند، با ردیف سرصفحه اختیاری و سبک جدول نامگذاریشده:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
tbl := ws.AddTable("A1:F6")
tbl.HasHeaderRow = true
tbl.StyleName = "TableStyleMedium6"جدول موجود را با نام با استفاده از Worksheet.GetTable(name) بازیابی کنید.
تصاویر
Worksheet.AddPicture یک تصویر را جاسازی میکند؛ Picture.SetAnchor(row, col) موقعیت آن را تعیین میکند:
wb := cells_foss.NewWorkbook()
ws := wb.Worksheets[0]
imageBytes := []byte{} // populate with real image bytes before use
pic := &cells_foss.Picture{Data: imageBytes, Format: "png"}
ws.AddPicture(pic)
pic.SetAnchor(5, 0)استریم فایلهای بزرگ
StreamingReader یک ورق کاری را ردیف به ردیف از طریق یک callback میخواند، به طوری که یک کتاب کاری چند هزار ردیفی هرگز نیازی به بارگذاری کامل در حافظه ندارد:
path := "outputfiles/large_workbook.xlsx"
sr := cells_foss.NewStreamingReader(path)
err := sr.ProcessRows("Sheet1", func(rowIdx int, cells map[string]string) error {
// process one row at a time
return nil
})
if err != nil {
fmt.Printf("Error streaming: %v\n", err)
}نکات و بهترین روشها
- بهجای بارگذاری کامل
WorkbookازStreamingReaderاستفاده کنید وقتی فایلی ممکن است هزاران ردیف داشته باشد و فقط نیاز به خواندن آن دارید، نه تغییر آن. - یک
Styleرا یکبار بسازید و در سلولهای متعدد دوباره استفاده کنید بهجای ساخت یک مورد جدید برای هر سلول. Cell.SetFormulaرشتهٔ فرمول را بهصورت کلمه به کلمه ذخیره میکند — این فرمول هنگام باز شدن توسط Excel یا LibreOffice ارزیابی میشود، نه توسط کتابخانه در زمان ذخیرهسازی.- مقدار بازگشتی
errorرا ازSave،AddDataValidationو فراخوانیهای وارد/صادر CSV بررسی کنید — عملیات ورودی/خروجی جدولمحور ممکن است در مسیرهای نامعتبر یا ورودیهای خراب شکست بخورد.
مشکلات رایج
| Issue | Cause | رفع |
|---|---|---|
مقدار سلول پس از Set قابل مشاهده نیست | ارجاع به برگهٔ اشتباه یا مرجع سلولی خارج از محدوده | شاخص Worksheet را تأیید کنید و اطمینان حاصل کنید که مرجع به سبک A1 با سلول مورد نظر مطابقت دارد |
| فرمول بهصورت متن خام نمایش داده میشود بهجای محاسبه | کتابخانه فقط رشتهٔ فرمول را ذخیره میکند؛ فرمولها را ارزیابی نمیکند | فایل را در اکسل یا LibreOffice باز کنید، که محاسبه را هنگام باز شدن انجام میدهند |
| اعتبارسنجی دادهها در اکسل قابل مشاهده نیست | اعتبارسنجی به محدودهای اضافه شد که سلول هدف را شامل نمیشود | اطمینان حاصل کنید که رشته محدوده (مثلاً "A2:A10") شامل سلولهایی است که میخواهید اعتبارسنجی کنید |
FAQ
آیا کتابخانه بهطور خودکار فرمولها را ارزیابی میکند؟
خیر. Cell.SetFormula/GetFormula یک رشتهٔ فرمول را ذخیره میکند که اکسل یا LibreOffice هنگام باز شدن فایل ارزیابی میکند.
آیا میتوانم کتابکارهای بزرگ را بهصورت stream-write انجام دهم، نه فقط stream-read؟
StreamingReader خواندنهای جریاندار را پوشش میدهد. نوشتن کتابکارهای بزرگ در حال حاضر از طریق Workbook/Worksheet API استاندارد در-حافظه انجام میشود.
آیا AddTable بهطور خودکار یک فیلتر خودکار اعمال میکند؟
این در سطح API فعلی تأیید نشده است — فقط فیلدهای HasHeaderRow و StyleName بهعنوان فیلدهای Table مستند شدهاند. اگر برای مورد استفادهٔ شما مهم است، نسبت به فایل تولید شدهٔ .xlsx بررسی کنید.
خلاصهٔ API Reference
| کلاس / متد | توضیح |
|---|---|
Workbook.NewWorkbook / Save | یک کتابکار ایجاد کنید و ذخیره کنید |
Worksheet.Cells | دسترسی به مجموعه سلولها برای یک ورق کار |
Cells.Get / Set / Remove / All | خواندن، نوشتن، حذف و فهرستکردن سلولها |
Cell.SetStyle / SetFormula / GetFormula | اعمال استایل و فرمولها بر یک سلول |
Style, Font, Fill, Alignment, Border | قالببندی سلولهای قابل استفاده مجدد را ترکیب کنید |
Worksheet.AddDataValidation | یک قانون اعتبارسنجی را به بازه سلولی الصاق کنید |
Worksheet.AddTable / GetTable | بازههای جدول ساختاریافته را ایجاد و بازیابی کنید |
Worksheet.AddPicture / Picture.SetAnchor(row, col) | تصاویر را جاسازی و موقعیتدهی کنید |
StreamingReader.ProcessRows | کاربرگ را سطر به سطر استریم کنید |
Workbook.ExportToCSV / ImportFromCSV | تبدیل بین XLSX و CSV |
Workbook.SetPassword / VerifyPassword | حفاظت و بررسی رمز عبور یک کتابکار |