سلول
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")