الخلية

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":

![تعيين تنسيق النص الغني](/storage/20231012/uog6n6jRKVmPjoBa.png)

```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")```