سلول
RichTextRun ویژگیهای متن غنی را تعریف میکند.
type RichTextRun struct {
Font *Font
Text string
}
HyperlinkOpts برای مشخص کردن ویژگیهای اختیاری پیوند هایپرتکست مانند متن نمایشی و نکته نمایش صفحه استفاده میشود.
type HyperlinkOpts struct {
Display *string
Tooltip *string
}
FormulaOpts برای مشخص کردن انواع فرمولهای ویژه در تابع SetCellFormula استفاده میشود.
type FormulaOpts struct {
Type *string // نوع فرمول
Ref *string // مرجع فرمول مشترك
}
تنظیم مقدار یک سلول
func (f *File) SetCellValue(sheet, cell string, value interface{}) error
مقدار یک سلول بر اساس نام و مختصات سلول داده شده تعیین میشود. این تابع ایمنینخ بگرای است. باید توجه داشت که مختصات مشخص شده نباید در ردیف اول جدول باشند و برای تنظیم متن، کاراکترهای جمعی باید استفاده شوند.
| انواع دادههای پشتیبانی شده |
|---|
| int |
| int8 |
| int16 |
| int32 |
| int64 |
| uint |
| uint8 |
| uint16 |
| uint32 |
| uint64 |
| float32 |
| float64 |
| string |
| []byte |
| time.Duration |
| time.Time |
| bool |
| nil |
لطفاً توجه داشته باشید که این تابع مقدار یک سلول از نوع time.Time با فرمت عددی m/d/yy h:mm را به صورت پیشفرض تنظیم میکند، و میتوانید این تنظیم را با استفاده از SetCellStyle تغییر دهید. اگر نیاز دارید تاریخهای اکسل ویژهای را که نمیتوانند توسط نوع time.Time زبان Go نمایندهسازی شوند، مانند 0 ژانویه 1900 یا 29 فوریه 1900، تنظیم کنید، مقدار سلول را به 0 یا 60 تنظیم کنید و سپس آن را به همراه یک استایل که دارای فرمت عددی تاریخ است، تنظیم کنید.
تنظیم مقدار بولی
func (f *File) SetCellBool(sheet, cell string, value bool) error
مقدار یک سلول بولی بر اساس نام و مختصات سلول داده شده تعیین میشود.
تنظیم مقدار رشته پیشفرض
func (f *File) SetCellDefault(sheet, cell, value string) error
مقدار یک سلول رشته بر اساس نام و مختصات سلول داده شده تعیین میشود و کاراکترها تحت فیلتر کاراکتر ویژه قرار نخواهند گرفت.
تنظیم مقدار عدد صحیح
func (f *File) SetCellInt(sheet, cell string, value int) error
مقدار یک سلول عدد صحیح بر اساس نام و مختصات سلول داده شده تعیین میشود.
تنظیم مقدار اعشاری
func (f *File) SetCellFloat(sheet, cell string, value float64, precision, bitSize int) error
مقدار یک سلول اعشاری بر اساس نام و مختصات سلول داده شده، مقدار اعشاری، دقت بخش معاملاتی اعشار و نوع اعشار تعیین میشود.
تنظیم مقدار رشته
func (f *File) SetCellStr(sheet, cell, value string) error
مقدار یک سلول رشته بر اساس نام و مختصات سلول داده شده تنظیم میشود، کاراکترها تحت فیلتر کاراکتر ویژه قرار خواهند گرفت و طول جمعی رشته نباید از 32767 بیشتر شود و هر کاراکتر اضافی نادیده گرفته خواهد شد.
تنظیم سبک سلول
func (f * File) SetCellStyle(sheet، hCell، vCell string، styleID int) error
براساس نام ورق ، مختصات سلول و شناسه سبک داده شده، مقدار یک سلول را تنظیم کنید. این تابع thread-safe است. شناسه سبک را میتوانید از طریق تابع NewStyle به دست آورید. توجه داشته باشید که diagonalDown و diagonalUp در یک ناحیه مختصات باید به رنگهای سازگاری استمرار دهند. SetCellStyle سبک موجود سلول را بدون درج یا ادغام سبکها، override میکند.
- مثال 1: تنظیم سبک حاشیه برای سلول
D7در ورقی با نامSheet1:
style، err := f.NewStyle(&excelize.Style{
Border: []excelize.Border{
{Type: "left"، Color: "0000FF"، Style: 3}،
{Type: "top"، Color: "00FF00"، Style: 4}،
{Type: "bottom"، Color: "FFFF00"، Style: 5}،
{Type: "right"، Color: "FF0000"، Style: 6}،
{Type: "diagonalDown"، Color: "A020F0"، Style: 8}،
{Type: "diagonalUp"، Color: "A020F0"، Style: 8}،
}،
})
if err != nil {
fmt.Println(err)
}
err = f.SetCellStyle("Sheet1"، "D7"، "D7"، style)

چهار حاشیه سلول D7 با سبک و رنگهای مختلف تنظیم شده است که به پارامترهای ارسالی به تابع NewStyle مرتبط هستند. برای تنظیم سبکهای مختلف، لطفاً به مستندات در این فصل مراجعه کنید.
- مثال 2: تنظیم سبک گرادیان برای سلول
D7در ورقی با نامSheet1:
style، err := f.NewStyle(&excelize.Style{
Fill: excelize.Fill{Type: "gradient"، Color: []string{"FFFFFF"، "E0EBF5"}، Shading: 1}،
})
if err != nil {
fmt.Println(err)
}
err = f.SetCellStyle("Sheet1"، "D7"، "D7"، style)

سلول D7 با رنگهای گرادیان پر شده است که به پارامترهای ارسالی به تابع NewStyle مرتبط هستند. برای تنظیم سبکهای مختلف، لطفاً به مستندات در این فصل مراجعه کنید.
- مثال 3: تنظیم پر کردن رنگ جامد برای سلول
D7در ورقی با نامSheet1:
style، err := f.NewStyle(&excelize.Style{
Fill: excelize.Fill{Type: "pattern"، Color: []string{"E0EBF5"}، Pattern: 1}،
})
if err != nil {
fmt.Println(err)
}
err = f.SetCellStyle("Sheet1"، "D7"، "D7"، style)

سلول D7 با رنگ جامد پر شده است.
- مثال 4: تنظیم فاصله نویسه و زاویه چرخش برای سلول
D7در ورقی با نامSheet1:
f.SetCellValue("Sheet1"، "D7"، "Style")
style، err := f.NewStyle(&excelize.Style{
Alignment: &excelize.Alignment{
Horizontal: "center"،
Indent: 1،
JustifyLastLine: true،
ReadingOrder: 0،
RelativeIndent: 1،
ShrinkToFit: true،
TextRotation: 45،
Vertical: ""،
WrapText: true،
}،
})
if err != nil {
fmt.Println(err)
}
err = f.SetCellStyle("Sheet1"، "D7"، "D7"، style)

- مثال 5: تواریخ و زمانها در اکسل توسط اعداد واقعی نمایش داده میشوند، به عنوان مثال،
2017/7/4 12:00:00 PMمیتواند توسط عدد42920.5نمایش داده شود. فرمت زمان را برای سلولD7در صفحه کاری با نامSheet1تنظیم نمایید:
f.SetCellValue("Sheet1", "D7", 42920.5)
f.SetColWidth("Sheet1", "D", "D", 13)
style, err := f.NewStyle(&excelize.Style{NumFmt: 22})
if err != nil {
fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

سلول D7 با یک فرمت زمانی تنظیم شده است. توجه کنید که زمانی که عرض سلول به اندازه کافی برای نمایش محتوا نیست، به صورت #### نمایش داده میشود. میتوانید عرض ستون را با کشیدن تغییر دهید یا با فراخوانی تابع SetColWidth عرض ستون را به اندازه مناسب برای نمایش عادی تنظیم نمایید.
- مثال 6: برای سلول
D7در صفحه کاری با نامSheet1فونت، اندازه فونت، رنگ و استایل کج را تنظیم نمایید:
f.SetCellValue("Sheet1", "D7", "Excel")
style, err := f.NewStyle(&excelize.Style{
Font: &excelize.Font{
Bold: true,
Italic: true,
Family: "Times New Roman",
Size: 36,
Color: "777777",
},
})
if err != nil {
fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)

- مثال 7: سلول
D7را در صفحه کاری با نامSheet1قفل و مخفی نمایید:
style, err := f.NewStyle(&excelize.Style{
Protection: &excelize.Protection{
Hidden: true,
Locked: true,
},
})
if err != nil {
fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "D7", "D7", style)
برای قفل کردن یا مخفی کردن سلولها، صفحه کاری را محافظت کنید. در تب "Review"، بر روی "Protect Sheet" کلیک نمایید.
func (f *File) SetCellHyperLink(sheet, cell, link, linkType string, opts ...HyperlinkOpts) error
بر اساس صفحه کاری، مختصات سلول، منبع پیوند و نوع منبع، پیوندی برای سلول تنظیم نمایید. نوع منبع شامل دو نوع است: آدرس پیوند خارجی External و پیوند مکان داخلی در کتاب کار Location است. تعداد حداکثر پیوندها در هر صفحه کاری به 65530 محدود است. این متد تنها پیوند را برای سلول تنظیم میکند بدون تأثیر بر مقدار سلول. اگر نیاز به تنظیم مقدار سلول دارید، لطفاً آن را جداگانه از طریق توابعی مانند SetCellStyle یا SetSheetRow تنظیم نمایید.
- مثال 1: یک پیوند خارجی به سلول
A3در صفحه کاری با نامSheet1اضافه نمایید:
display, tooltip := "https://github.com/xuri/excelize", "Excelize در گیتهاب"
if err := f.SetCellHyperLink("Sheet1", "A3",
"https://github.com/xuri/excelize", "External", excelize.HyperlinkOpts{
Display: &display,
Tooltip: &tooltip,
}); err != nil {
fmt.Println(err)
}
// برای سلول فونت و استایل زیرخطی را تنظیم نمایید
style, err := f.NewStyle(&excelize.Style{
Font: &excelize.Font{Color: "1265BE", Underline: "single"},
})
if err != nil {
fmt.Println(err)
}
err = f.SetCellStyle("Sheet1", "A3", "A3", style)
- مثال 2: یک پیوند مکان به سلول
A3در صفحه کاری با نامSheet1اضافه نمایید:
err := f.SetCellHyperLink("Sheet1", "A3", "Sheet1!A40", "Location")
func (f *File) SetCellRichText(sheet, cell string, runs []RichTextRun) error
تنظیم قالب متنی زیبا برای سلول مشخص شده بر اساس کارکرد صفحه کار، مختصات سلول و قالب متنی زیبا داده شده.
به عنوان مثال، تنظیم قالب متنی زیبا برای سلول `A1` در صفحه کار با نام `Sheet1`:

```go
بستهی اصلی
import (
"fmt"
"github.com/xuri/excelize/v2"
)
func main() {
f := excelize.NewFile()
defer func() {
if err := f.Close(); err != nil {
fmt.Println(err)
}
}()
if err := f.SetRowHeight("Sheet1", 1, 35); err != nil {
fmt.Println(err)
return
}
if err := f.SetColWidth("Sheet1", "A", "A", 44); err != nil {
fmt.Println(err)
return
}
if err := f.SetCellRichText("Sheet1", "A1", []excelize.RichTextRun{
{
Text: "متن ضخیم",
Font: &excelize.Font{
Bold: true,
Color: "2354E8",
Family: "Times New Roman",
},
},
// ... (دیگر اجراهای قالب متنی)
}); err != nil {
fmt.Println(err)
return
}
// ... (سایر تنظیمات سبک سلول و ذخیره)
}
تابعیت (f *File) GetCellRichText(sheet, cell string) ([]RichTextRun, error)
دریافت قالب متنی سلول مشخص شده بر اساس کارکرد صفحه کار و مختصات سلول.
تابعیت (f *File) GetCellValue(sheet, cell string, opts ...Options) (string, error)
دریافت مقدار سلول مشخص شده بر اساس کارکرد صفحه کار و مختصات سلول، و مقدار برگشتی به نوع string تبدیل میشود. اگر قالب سلول بر روی مقدار سلول قابل اعمال باشد، مقدار اعمال شده برگشت داده میشود؛ در غیر این صورت، مقدار اصلی برگشت داده میشود. مقادیر تمامی سلولها در یک منطقهی ادغام شده یکسان هستند. این تابعیت مقاوم در برابر همروندی است.
تابعیت (f *File) GetCellType(sheet, cell string) (CellType, error)
دریافت نوع دادهای سلول مشخص شده بر اساس کارکرد صفحه کار و مختصات سلول.
تابعیت (f *File) GetCols(sheet string, opts ...Options) ([][]string, error)
بازیابی مقادیر تمامی سلولها در صفحه کار مشخص شده بر اساس ستون، و بازگردانده آنها به صورت یک آرایه دوبعدی با مقادیر سلول تبدیل شده به نوع string. اگر قالب سلول بر روی مقدار سلول قابل اعمال باشد، مقدار اعمال شده استفاده خواهد شد؛ در غیر این صورت، مقدار اصلی استفاده خواهد شد.
به عنوان مثال، برای بازیابی و حرکت از طریق تمامی مقادیر سلول در صفحه کار با نام Sheet1 بر اساس ستون:
cols, err := f.GetCols("Sheet1")
if err != nil {
fmt.Println(err)
return
}
for _, col := range cols {
for _, rowCell := range col {
fmt.Print(rowCell, "\t")
}
fmt.Println()
}
تابعیت (f *File) GetRows(sheet string, opts ...Options) ([][]string, error)
بازیابی مقادیر تمامی سلولها در صفحه کار مشخص شده بر اساس ردیف، و بازگردانده آنها به صورت یک آرایه دوبعدی با مقادیر سلول تبدیل شده به نوع string. اگر قالب سلول بر روی مقدار سلول قابل اعمال باشد، مقدار اعمال شده استفاده خواهد شد؛ در غیر این صورت، مقدار اصلی استفاده خواهد شد. GetRows ردیفها را با سلولهایی حاوی مقادیر یا فرمولها بازیابی میکند. سلولهای خالی در انتهای یک ردیف صرف نظر میشوند، و تعداد سلولها در هر ردیف ممکن است متغیر باشد.
به عنوان مثال، برای بازیابی و حرکت از طریق تمامی مقادیر سلول در صفحه کار با نام Sheet1 بر اساس ردیف:
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()
}
تابعیت (f *File) GetCellHyperLink(sheet, cell string) (bool, string, error)
بازیابی پیوند موجود در سلول مشخص بر اساس کارشناسی ورکشیت و هماهنگی سلول داده شده. اگر سلول دارای پیوند باشد، `true` و آدرس پیوند را برمیگرداند؛ در غیر این صورت `false` و آدرس خالی پیوند را برمیگرداند.
به عنوان مثال، برای بازیابی پیوند سلول در کارتزیت `H6` در ورکشیت با نام `Sheet1`:
```go
link, target, err := f.GetCellHyperLink("Sheet1", "H6")
func (f *File) GetCellStyle(sheet, cell string) (int, error)
بازیابی شاخص سبک سلول مشخص بر اساس کارشناسی ورکشیت و هماهنگی سلول داده شده و شاخص بازیابی شده میتواند به عنوان یک پارامتر در هنگام فراخوانی تابع SetCellStyle برای تنظیم سبک سلول استفاده شود.
func (f *File) MergeCell(sheet, hCell, vCell string) error
ادغام سلولها در منطقه هماهنگی سلول داده شده در ورکشیت داده شده. تنها مقدار سلول بالاست-چپ در ناحیه ادغام شده حفظ میشود و مقادیر دیگر سلولها نادیده گرفته میشوند. به عنوان مثال، ادغام سلولها در منطقه D3:E9 در ورکشیت با نام Sheet1:
err := f.MergeCell("Sheet1", "D3", "E9")
اگر منطقه هماهنگی سلول داده شده با سلولهای ادغام شده موجود همپوشانی داشته باشد، سلولهای ادغام شده موجود حذف خواهند شد.
func (f *File) UnmergeCell(sheet string, hCell, vCell string) error
لغو ادغام سلولها در منطقه هماهنگی سلول داده شده در ورکشیت داده شده. به عنوان مثال، لغو ادغام سلولها در منطقه D3:E9 در ورکشیت با نام Sheet1:
err := f.UnmergeCell("Sheet1", "D3", "E9")
اگر منطقه هماهنگی سلول داده شده شامل چندین سلول ادغام شده باشد، تمام سلولهای ادغام شده لغو ادغام خواهند شد.
دریافت منطقه هماهنگی و مقادیر تمامی سلولهای ادغام شده در ورکشیت داده شده.
func (f *File) GetMergeCells(sheet string) ([]MergeCell, error)
func (m *MergeCell) GetCellValue() string
GetCellValue مقدار سلول ادغام شده را برمیگرداند.
func (m *MergeCell) GetStartAxis() string
GetStartAxis مختصات سلول بالاست-چپ ناحیه سلول ادغام شده را برمیگرداند، به عنوان مثال، C2.
func (m *MergeCell) GetEndAxis() string
GetEndAxis مختصات سلول پایین-راست ناحیه سلول ادغام شده را برمیگرداند، به عنوان مثال، D4.
func (f *File) AddComment(sheet string, comment Comment) error
اضافه کردن یک نظر به ورکشیت، هماهنگی سلول و پارامترهای سبک (نویسنده و اطلاعات متن). اطلاعات نویسنده حداکثر طول 255 کاراکتر دارد و حداکثر طول محتوای متن 32512 کاراکتر است. کاراکترهای فراتر از این محدوده نادیده گرفته خواهند شد. به عنوان مثال، اضافه کردن یک نظر به سلول $A$3:

err := f.AddComment("Sheet1", excelize.Comment{
Cell: "A3",
Author: "Excelize",
Paragraph: []excelize.RichTextRun{
{Text: "Excelize: ", Font: &excelize.Font{Bold: true}},
{Text: "This is a comment."},
},
})
func (f *File) GetComments(sheet string) ([]Comment, error)
دریافت تمامی نظرات سلول در ورکشیت داده شده.
func (f *File) DeleteComment(sheet, cell string) error
حذف نظر در ورکشیت و هماهنگی سلول داده شده. به عنوان مثال، حذف نظر در سلول $A$30:
err := f.DeleteComment("Sheet1", "A30")