الخلية
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
. إذا كنت بحاجة إلى تعيين تواريخ Excel الخاصة التي لا يمكن تمثيلها بواسطة نوع 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
قم بتعيين قيمة الخلية بناءً على اسم الورقة المعطاة وإحداثيات الخلية وفهرس النمط. هذه الوظيفة آمنة للتعداد. يمكن الحصول على فهرس النمط من خلال وظيفة NewStyle
. يجب أن تحتفظ "diagonalDown" و "diagonalUp" ضمن نفس منطقة الإحداثيات بألوان متسقة. ستقوم SetCellStyle
بتجاوز النمط الحالي للخلية دون تراكم أو دمج الأنماط.
- المثال 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: تُمثل التواريخ والأوقات في إكسل بأرقام حقيقية، على سبيل المثال، يمكن تمثيل
4 يوليو 2017 12:00:00 مساءً
بالرقم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", "إكسل")
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)
لقفل أو إخفاء الخلايا، قم بحماية ورقة العمل. في علامة التبويب "مراجعة"، انقر فوق "حماية الورقة".
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 on GitHub"
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
package main
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
}
// ... (إعدادات أخرى لنمط الخلية والحفظ)
}
func (f *File) GetCellRichText(sheet, cell string) ([]RichTextRun, error)
الحصول على تنسيق النص الغني للخلية المحددة استنادًا إلى ورقة العمل وإحداثيات الخلية المعطاة.
func (f *File) GetCellValue(sheet, cell string, opts ...Options) (string, error)
الحصول على قيمة الخلية المحددة استنادًا إلى ورقة العمل وإحداثيات الخلية وسيتم تحويل قيمة الإرجاع إلى نوع "string". إذا كان بإمكان تطبيق تنسيق الخلية على قيمة الخلية، سيتم إرجاع القيمة المطبقة؛ وإلا، سيتم إرجاع القيمة الأصلية. قيم جميع الخلايا ضمن منطقة اندماجية متطابقة. هذه الوظيفة آمنة للتزامن.
func (f *File) GetCellType(sheet, cell string) (CellType, error)
الحصول على نوع البيانات للخلية المحددة استنادًا إلى ورقة العمل وإحداثيات الخلية المعطاة.
func (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()
}
func (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()
}
func (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: "هذا تعليق."},
},
})
func (f *File) GetComments(sheet string) ([]Comment, error)
الحصول على جميع تعليقات الخلية في ورقة العمل المعطاة.
func (f *File) DeleteComment(sheet, cell string) error
حذف التعليق في ورقة العمل وإحداثيات الخلية المعطاة. على سبيل المثال، حذف التعليق في الخلية $A$30
:
err := f.DeleteComment("Sheet1", "A30")```