أدوات

إضافة الطاولة

func (f *File) AddTable(sheet string, table *Table) error

يوفر AddTable طريقة لإضافة جدول في ورقة عمل حسب اسم ورقة العمل المحدد ومنطقة الإحداثيات ومجموعة التنسيق.

  • مثال 1 ، أنشئ جدولاً من A1:5 في Sheet1:

الطاولة

err := f.AddTable("Sheet1", &excelize.Table{Range: "A1:D5"})
  • مثال 2 ، أنشئ جدولاً من F2:H6 في Sheet2 مع مجموعة التنسيق:

إضافة الجدول مع مجموعة التنسيق

disable := false
err := f.AddTable("Sheet2", &excelize.Table{
    Range:             "F2:H6",
    Name:              "table",
    StyleName:         "TableStyleMedium2",
    ShowFirstColumn:   true,
    ShowLastColumn:    true,
    ShowRowStripes:    &disable,
    ShowColumnStripes: true,
})

لاحظ أن الجدول يجب أن يتكون من سطرين على الأقل بما في ذلك الرأس. يجب أن تحتوي خلايا الرأس على سلاسل ويجب أن تكون فريدة ، كما يجب تعيين بيانات صف الرأس في الجدول قبل استدعاء دالة AddTable. تنسق الجداول المتعددة المناطق التي لا يمكن أن تحتوي على تقاطع.

Name: يجب أن يكون اسم الجدول ، في نفس اسم ورقة العمل للجدول ، فريدًا.

StyleName: أسماء نمط الجدول المضمنة:

TableStyleLight1 - TableStyleLight21
TableStyleMedium1 - TableStyleMedium28
TableStyleDark1 - TableStyleDark11
فهرس أسلوب فهرس أسلوب فهرس أسلوب
TableStyleLight1 TableStyleLight2
TableStyleLight3 TableStyleLight4 TableStyleLight5
TableStyleLight6 TableStyleLight7 TableStyleLight8
TableStyleLight9 TableStyleLight10 TableStyleLight11
TableStyleLight12 TableStyleLight13 TableStyleLight14
TableStyleLight15 TableStyleLight16 TableStyleLight17
TableStyleLight18 TableStyleLight19 TableStyleLight20
TableStyleLight21 TableStyleMedium1 TableStyleMedium2
TableStyleMedium3 TableStyleMedium4 TableStyleMedium5
TableStyleMedium6 TableStyleMedium7 TableStyleMedium8
TableStyleMedium9 TableStyleMedium10 TableStyleMedium11
TableStyleMedium12 TableStyleMedium13 TableStyleMedium14
TableStyleMedium15 TableStyleMedium16 TableStyleMedium17
TableStyleMedium18 TableStyleMedium19 TableStyleMedium20
TableStyleMedium21 TableStyleMedium22 TableStyleMedium23
TableStyleMedium24 TableStyleMedium25 TableStyleMedium26
TableStyleMedium27 TableStyleMedium28 TableStyleDark1
TableStyleDark2 TableStyleDark3 TableStyleDark4
TableStyleDark5 TableStyleDark6 TableStyleDark7
TableStyleDark8 TableStyleDark9 TableStyleDark10
TableStyleDark11

الحصول على الجداول

func (f *File) GetTables(sheet string) ([]Table, error)

يوفر GetTables الطريقة للحصول على كافة الجداول في ورقة العمل حسب اسم ورقة العمل المحدد.

حذف الجدول

func (f *File) DeleteTable(name string) error

يوفر DeleteTable طريقة لحذف الجدول حسب اسم الجدول المحدد.

فلتر السيارات

func (f *File) AutoFilter(sheet, rangeRef string, opts []AutoFilterOptions) error

يوفر AutoFilter طريقة لإضافة عامل تصفية تلقائي في ورقة عمل حسب اسم ورقة العمل المحدد ومنطقة الإحداثيات والإعدادات. يعد عامل التصفية التلقائي في Excel طريقة لتصفية نطاق ثنائي الأبعاد من البيانات بناءً على بعض المعايير البسيطة.

مثال 1 ، تطبيق عامل التصفية التلقائي على نطاق خلايا A1:D4 في Sheet1:

فلتر السيارات

err := f.AutoFilter("Sheet1", "A1:D4", []excelize.AutoFilterOptions{})

مثال 2 ، تصفية البيانات في مرشح تلقائي:

err := f.AutoFilter("Sheet1", "A1:D4", []excelize.AutoFilterOptions{
    {Column: "B", Expression: "x != blanks"},
})

يحدد Column أعمدة التصفية في نطاق التصفية التلقائي بناءً على معايير بسيطة.

لا يكفي مجرد تحديد شرط الفلتر. يجب عليك أيضًا إخفاء أي صفوف لا تتطابق مع شرط الفلتر. يتم إخفاء الصفوف باستخدام طريقة SetRowVisible(). لا يمكن لـ Excelize تصفية الصفوف تلقائيًا لأن هذا ليس جزءًا من تنسيق الملف.

تعيين معايير التصفية للعمود:

يحدد Expression الشروط ، تتوفر العوامل التالية لتعيين معايير التصفية:

==
!=
>
<
>=
<=
and
or

يمكن أن يشتمل التعبير على عبارة واحدة أو عبارتين مفصولة بعوامل and و or. فمثلا:

x <  2000
x >  2000
x == 2000
x >  2000 and x <  5000
x == 2000 or  x == 5000

يمكن تحقيق تصفية البيانات الفارغة أو غير الفارغة باستخدام قيمة الفراغات أو NonBlanks في التعبير:

x == Blanks
x == NonBlanks

يسمح Office Excel أيضًا ببعض عمليات مطابقة السلاسل البسيطة:

x == b*      // تبدأ b
x != b*      // لا تبدأ ب b
x == *b      // ينتهي مع b
x != *b      // لا تنتهي مع b
x == *b*     // يحتوي b
x != *b*     // لا يحتوي b

يمكنك أيضًا استخدام * لمطابقة أي حرف أو رقم و ? لمطابقة أي حرف أو رقم واحد. لا تدعم مرشحات Excel أي محدد كمي للتعبير العادي. يمكن الهروب من أحرف التعبير العادي في Excel باستخدام ~.

يمكن استبدال المتغير النائب x في الأمثلة أعلاه بأي سلسلة بسيطة. يتم تجاهل اسم العنصر النائب الفعلي داخليًا ، لذا فإن جميع العناصر التالية متساوية:

x     < 2000
col   < 2000
Price < 2000

تحديث قيمة مرتبطة

func (f *File) UpdateLinkedValue() error

إصلاح UpdateLinkedValue لا يتم تحديث القيم المرتبطة في جدول بيانات في Office Excel 2007 و 2010. ستزيل هذه الوظيفة علامة القيمة عند تلبية خلية لها قيمة مرتبطة. المرجع https://learn.microsoft.com/en-us/archive/msdn-technet-forums/e16bae1f-6a2c-4325-8013-e989a3479066. ملاحظة: بعد فتح ملف جدول البيانات ، سيقوم Excel بتحديث القيمة المرتبطة وإنشاء قيمة جديدة وسيطلب حفظ الملف أم لا.

يظهر تأثير مسح ذاكرة التخزين المؤقت للخلية في المصنف كتعديل على العلامة <v> ، على سبيل المثال ، ذاكرة التخزين المؤقت للخلية قبل المسح:

<row r="19">
    <c r="B19">
        <f>SUM(Sheet2!D2,Sheet2!D11)</f>
        <v>100</v>
     </c>
</row>

بعد مسح ذاكرة التخزين المؤقت للخلية:

<row r="19">
    <c r="B19">
        <f>SUM(Sheet2!D2,Sheet2!D11)</f>
    </c>
</row>

تقسيم اسم الخلية

func SplitCellName(cell string) (string, int, error)

يقسم SplitCellName اسم الخلية إلى اسم العمود ورقم الصف. فمثلا:

excelize.SplitCellName("AK74") // إرجاع "AK", 74, nil

انضم إلى اسم الخلية

func JoinCellName(col string, row int) (string, error)

JoinCellName ينضم إلى اسم الخلية من اسم العمود ورقم الصف.

اسم العمود لرقم

func ColumnNameToNumber(name string) (int, error)

يوفر ColumnNameToNumber وظيفة لتحويل اسم عمود ورقة Excel إلى int. اسم العمود غير حساس لحالة الأحرف. تقوم الدالة بإرجاع خطأ إذا كان اسم العمود غير صحيح. فمثلا:

excelize.ColumnNameToNumber("AK") // إرجاع 37, nil

رقم العمود المراد تسميته

func ColumnNumberToName(num int) (string, error)

يوفر ColumnNumberToName دالة لتحويل العدد الصحيح إلى عنوان عمود ورقة Excel. فمثلا:

excelize.ColumnNumberToName(37) // إرجاع "AK", nil

اسم الخلية للإحداثيات

func CellNameToCoordinates(cell string) (int, int, error)

تقوم CellNameToCoordinates بتحويل اسم الخلية الأبجدية الرقمية إلى إحداثيات [X, Y] أو إرجاع خطأ. فمثلا:

excelize.CellNameToCoordinates("A1") // إرجاع 1, 1, nil
excelize.CellNameToCoordinates("Z3") // إرجاع 26, 3, nil

إحداثيات لاسم خلية

func CoordinatesToCellName(col, row int, abs ...bool) (string, error)

يقوم CoordinatesToCellName بتحويل إحداثيات [X, Y] إلى اسم خلية أبجدي رقمي أو إرجاع خطأ. فمثلا:

excelize.CoordinatesToCellName(1, 1) // إرجاع "A1", nil
excelize.CoordinatesToCellName(1, 1, true) // إرجاع "$A$1", nil

إنشاء نمط شرطي

func (f *File) NewConditionalStyle(style *Style) (int, error)

يوفر NewConditionalStyle وظيفة لإنشاء نمط للتنسيق الشرطي بتنسيق نمط معين. المعلمات هي نفس الوظيفة NewStyle. لاحظ أن حقل اللون يستخدم رمز لون RGB ويدعم فقط تعيين الخط والتعبئة والمحاذاة والحدود حاليًا.

احصل على النمط الشرطي

func (f *File) GetConditionalStyle(idx int) (*Style, error)

يقوم GetConditionalStyle بإرجاع تعريف نمط التنسيق الشرطي من خلال فهرس النمط المحدد.

تعيين تنسيق شرطي

func (f *File) SetConditionalFormat(sheet, rangeRef string, opts []ConditionalFormatOptions) error

يوفر SetConditionalFormat وظيفة لإنشاء قاعدة تنسيق شرطي لقيمة الخلية. التنسيق الشرطي هو إحدى ميزات Office Excel التي تتيح لك تطبيق تنسيق على خلية أو نطاق من الخلايا بناءً على معايير معينة.

يعد خيار Type معلمة مطلوبة وليس لها قيمة افتراضية. قيم الأنواع المسموح بها والمعلمات المرتبطة بها هي:

اكتب المعلمات
cell Criteria
Value
MinValue
MaxValue
time_period Criteria
text Criteria
Value
average Criteria
duplicate (none)
unique (none)
top Criteria
Value
bottom Criteria
Value
blanks (none)
no_blanks (none)
errors (none)
no_errors (none)
2_color_scale MinType
MaxType
MinValue
MaxValue
MinColor
MaxColor
3_color_scale MinType
MidType
MaxType
MinValue
MidValue
MaxValue
MinColor
MidColor
MaxColor
data_bar MinType
MaxType
MinValue
MaxValue
BarBorderColor
BarColor
BarDirection
BarOnly
BarSolid
iconSet IconStyle
ReverseIcons
IconsOnly
formula Criteria

يتم استخدام معلمة Criteria لتعيين المعايير التي سيتم من خلالها تقييم بيانات الخلية. ليس لها قيمة افتراضية. المعايير الأكثر شيوعًا كما هي مطبقة على excelize.ConditionalFormatOptions{Type: "cell"} هي:

حرف وصف النص التمثيل الرمزي
between
not between
equal to ==
not equal to !=
greater than >
less than <
greater than or equal to >=
less than or equal to <=

يمكنك إما استخدام سلاسل الوصف النصي في Excel ، في العمود الأول أعلاه أو البدائل الرمزية الأكثر شيوعًا.

يتم عرض المعايير الإضافية الخاصة بأنواع التنسيق الشرطي الأخرى في الأقسام ذات الصلة أدناه.

Value: تُستخدم القيمة عمومًا مع معلمة Criteria لتعيين القاعدة التي سيتم من خلالها تقييم بيانات الخلية:

err := f.SetConditionalFormat("Sheet1", "D1:D10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "cell",
            Criteria: ">",
            Format:   &format,
            Value:    "6",
        },
    },
)

يمكن أن تكون خاصية Value أيضًا مرجع خلية:

err := f.SetConditionalFormat("Sheet1", "D1:D10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "cell",
            Criteria: ">",
            Format:   &format,
            Value:    "$C$1",
        },
    },
)

type: Format - تُستخدم معلمة Format لتحديد التنسيق الذي سيتم تطبيقه على الخلية عند استيفاء معيار التنسيق الشرطي. يتم إنشاء التنسيق باستخدام طريقة NewConditionalStyle() بنفس طريقة تنسيقات الخلايا:

format, err := f.NewConditionalStyle(
    &excelize.Style{
        Font: &excelize.Font{Color: "9A0511"},
        Fill: excelize.Fill{
            Type: "pattern", Color: []string{"FEC7CE"}, Pattern: 1,
        },
    },
)
if err != nil {
    fmt.Println(err)
}
err = f.SetConditionalFormat("Sheet1", "D1:D10",
    []excelize.ConditionalFormatOptions{
        {Type: "cell", Criteria: ">", Format: &format, Value: "6"},
    },
)

ملاحظة: في Excel ، يتم فرض التنسيق الشرطي فوق تنسيق الخلية الموجود ، ولا يمكن تعديل جميع خصائص تنسيق الخلية. الخصائص التي لا يمكن تعديلها في تنسيق شرطي هي اسم الخط وحجم الخط والخط المرتفع والمنخفض والحدود القطرية وجميع خصائص المحاذاة وجميع خصائص الحماية.

يحدد Excel بعض التنسيقات الافتراضية لاستخدامها مع التنسيق الشرطي. يمكن تكرارها باستخدام تنسيقات excelize التالية:

// تنسيق الوردة لشرطية سيئة.
format1, err := f.NewConditionalStyle(
    &excelize.Style{
        Font: &excelize.Font{Color: "9A0511"},
        Fill: excelize.Fill{
            Type: "pattern", Color: []string{"FEC7CE"}, Pattern: 1,
        },
    },
)

// تنسيق أصفر فاتح للشروط المحايدة.
format2, err := f.NewConditionalStyle(
    &excelize.Style{
        Font: &excelize.Font{Color: "9B5713"},
        Fill: excelize.Fill{
            Type: "pattern", Color: []string{"FEEAA0"}, Pattern: 1,
        },
    },
)

// تنسيق أخضر فاتح لشرطي جيد.
format3, err := f.NewConditionalStyle(
    &excelize.Style{
        Font: &excelize.Font{Color: "09600B"},
        Fill: excelize.Fill{
            Type: "pattern", Color: []string{"C7EECF"}, Pattern: 1,
        },
    },
)

type: MinValue - يتم استخدام معلمة MinValue لتعيين قيمة الحد الأدنى عندما يكون Criteria إما between أو not between.

// قاعدة الخلايا المميزة: بين...
err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "cell",
            Criteria: "between",
            Format:   &format,
            MinValue: "6",
            MaxValue: "8",
        },
    },
)

type: MaxValue - تُستخدم معلمة maximum لتعيين قيمة الحد الأعلى عندما تكون المعايير إما between أو not between. انظر المثال السابق.

type: average - يُستخدم النوع average لتحديد التنسيق الشرطي لنمط "المتوسط" في Office Excel:

// القواعد العلوية/السفلية: فوق المتوسط...
err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {
            Type:         "average",
            Criteria:     "=",
            Format:       &format1,
            AboveAverage: true,
        },
    },
)

// القواعد العلوية/السفلية: أقل من المتوسط...
err := f.SetConditionalFormat("Sheet1", "B1:B10",
    []excelize.ConditionalFormatOptions{
        {
            Type:         "average",
            Criteria:     "=",
            Format:       &format2,
            AboveAverage: false,
        },
    },
)

type: duplicate - يستخدم النوع duplicate لتمييز الخلايا المكررة في نطاق:

// قاعدة تمييز الخلايا: القيم المكررة...
err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {Type: "duplicate", Criteria: "=", Format: &format},
    },
)

type: unique - يستخدم النوع unique لإبراز الخلايا الفريدة في نطاق:

// قاعدة تمييز الخلايا: لا تساوي...
err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {Type: "unique", Criteria: "=", Format: &format},
    },
)

type: top - يتم استخدام النوع top لتحديد أعلى قيم n من خلال الرقم أو النسبة المئوية في نطاق:

// القواعد العلوية/السفلية: أعلى 10.
err := f.SetConditionalFormat("Sheet1", "H1:H10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "top",
            Criteria: "=",
            Format:   &format,
            Value:    "6",
        },
    },
)

يمكن استخدام المعايير للإشارة إلى أن شرط النسبة المئوية مطلوب:

err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "top",
            Criteria: "=",
            Format:   &format,
            Value:    "6",
            Percent:  true,
        },
    },
)

type: 2_color_scale - يتم استخدام النوع 2_color_scale لتحديد التنسيق الشرطي لنمط "2 Color Scale" في Excel:

// مقاييس اللون: 2 لون.
err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "2_color_scale",
            Criteria: "=",
            MinType:  "min",
            MaxType:  "max",
            MinColor: "#F8696B",
            MaxColor: "#63BE7B",
        },
    },
)

يمكن تعديل هذا النوع الشرطي باستخدام MinType و MaxType و MinValue و MaxValue و MinColor و MaxColor ، انظر أدناه.

type: 3_color_scale - يستخدم النوع 3_color_scale لتحديد التنسيق الشرطي لنمط "3 Color Scale" في Excel:

// المقاييس اللونية: 3 ألوان.
err := f.SetConditionalFormat("Sheet1", "A1:A10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "3_color_scale",
            Criteria: "=",
            MinType:  "min",
            MidType:  "percentile",
            MaxType:  "max",
            MinColor: "#F8696B",
            MidColor: "#FFEB84",
            MaxColor: "#63BE7B",
        },
    },
)

يمكن تعديل هذا النوع الشرطي باستخدام MinType و MidType و MaxType و MinValue و MidValue و MaxValue و MinColor و MidColor و MaxColor ، انظر أدناه.

type: data_bar - يتم استخدام النوع data_bar لتحديد التنسيق الشرطي لنمط "شريط البيانات" في Excel.

MinType - تكون خصائص MinType و MaxType متاحة عندما يكون نوع التنسيق الشرطي 2_color_scale أو 3_color_scale أو data_bar. MidType متاح لـ 3_color_scale. يتم استخدام الخصائص على النحو التالي:

// أشرطة البيانات: تعبئة متدرجة.
err := f.SetConditionalFormat("Sheet1", "K1:K10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "data_bar",
            Criteria: "=",
            MinType:  "min",
            MaxType:  "max",
            BarColor: "#638EC6",
        },
    },
)

أنواع min/mid/max المتاحة هي:

معامل تفسير
min الحد الأدنى للقيمة (لـ MinType فقط)
num رقمي
percent النسبة المئوية
percentile النسبة المئوية
formula معادلة
max الحد الأقصى (لـ MaxType فقط)

MidType - يستخدم في 3_color_scale. مثل MinType ، انظر أعلاه.

MaxType - مثل MinType ، انظر أعلاه.

MinValue - تكون خصائص MinValue و MaxValue متاحة عندما يكون نوع التنسيق الشرطي 2_color_scale أو 3_color_scale أو data_bar. MidValue متاح لـ 3_color_scale.

MidValue - يستخدم في 3_color_scale. مثل MinValue ، انظر أعلاه.

MaxValue - مثل MinValue ، انظر أعلاه.

MinColor - تكون خصائص MinColor و MaxColor متاحة عندما يكون نوع التنسيق الشرطي 2_color_scale أو 3_color_scale أو data_bar. MidColor متاح لـ 3_color_scale. يتم استخدام الخصائص على النحو التالي:

// المقاييس اللونية: 3 ألوان.
err := f.SetConditionalFormat("Sheet1", "B1:B10",
    []excelize.ConditionalFormatOptions{
        {
            Type:     "3_color_scale",
            Criteria: "=",
            MinType:  "min",
            MidType:  "percentile",
            MaxType:  "max",
            MinColor: "#F8696B",
            MidColor: "#FFEB84",
            MaxColor: "#63BE7B",
        },
    },
)

MidColor - يستخدم في 3_color_scale. مثل MinColor ، انظر أعلاه.

MaxColor - مثل MinColor ، انظر أعلاه.

BarColor - يستخدم لـ data_bar. مثل MinColor ، انظر أعلاه.

BarBorderColor - يُستخدم لتعيين لون خط الحدود لشريط البيانات ، ويكون هذا مرئيًا فقط في Excel 2010 والإصدارات الأحدث.

BarDirection - يستخدم لتعيين اتجاه أشرطة البيانات. الخيارات المتاحة هي:

القيمة شرح
context يتم تعيين اتجاه شريط البيانات بواسطة تطبيق جدول البيانات بناءً على سياق البيانات المعروضة.
leftToRight اتجاه شريط البيانات من اليمين إلى اليسار.
rightToLeft اتجاه شريط البيانات من اليسار إلى اليمين.

BarOnly - يُستخدم لعرض بيانات الشريط ولكن ليس القيمة الموجودة في الخلايا.

BarSolid - يُستخدم للتشغيل على تعبئة صلبة (غير متدرجة) لأشرطة البيانات ، ويكون هذا مرئيًا فقط في Excel 2010 والإصدارات الأحدث.

IconStyle - الخيارات المتاحة هي:

القيمة
3Arrows
3ArrowsGray
3Flags
3Signs
3Symbols
3Symbols2
3TrafficLights1
3TrafficLights2
4Arrows
4ArrowsGray
4Rating
4RedToBlack
4TrafficLights
5Arrows
5ArrowsGray
5Quarters
5Rating

ReverseIcons - تستخدم لتعيين مجموعات الرموز المعكوسة.

IconsOnly - يستخدم للمجموعة المعروضة بدون قيمة الخلية.

StopIfTrue - يُستخدم لتعيين ميزة "الإيقاف إذا كانت صحيحة" لقاعدة التنسيق الشرطي عند تطبيق أكثر من قاعدة واحدة على خلية أو نطاق من الخلايا. عند تعيين هذه المعلمة ، لا يتم تقييم القواعد اللاحقة إذا كانت القاعدة الحالية صحيحة.

على سبيل المثال ، قم بتمييز أعلى وأدنى القيم في نطاق من الخلايا A1:D4 عن طريق تعيين التنسيق الشرطي على الورقة 1:

عيّن التنسيق الشرطي في نطاق من الخلايا

package main

import (
    "fmt"
    "math/rand"

    "github.com/xuri/excelize"
)

func main() {
    f := excelize.NewFile()
    defer func() {
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    if err := f.SetSheetName("Sheet1", "ورقة1"); err != nil {
        fmt.Println(err)
        return
    }
    enable := true
    if err := f.SetSheetView("ورقة1", -1, &excelize.ViewOptions{
        RightToLeft: &enable,
    }); err != nil {
        fmt.Println(err)
        return
    }
    for r := 1; r <= 4; r++ {
        row := []int{
            rand.Intn(100), rand.Intn(100), rand.Intn(100), rand.Intn(100),
        }
        if err := f.SetSheetRow("ورقة1", fmt.Sprintf("A%d", r), &row); err != nil {
            fmt.Println(err)
            return
        }
    }
    red, err := f.NewConditionalStyle(
        &excelize.Style{
            Font: &excelize.Font{
                Color: "9A0511",
            },
            Fill: excelize.Fill{
                Type:    "pattern",
                Color:   []string{"FEC7CE"},
                Pattern: 1,
            },
        },
    )
    if err != nil {
        fmt.Println(err)
        return
    }
    if err := f.SetConditionalFormat("ورقة1", "A1:D4",
        []excelize.ConditionalFormatOptions{
            {
                Type:     "bottom",
                Criteria: "=",
                Value:    "1",
                Format:   &red,
            },
        },
    ); err != nil {
        fmt.Println(err)
        return
    }
    green, err := f.NewConditionalStyle(
        &excelize.Style{
            Font: &excelize.Font{
                Color: "09600B",
            },
            Fill: excelize.Fill{
                Type:    "pattern",
                Color:   []string{"C7EECF"},
                Pattern: 1,
            },
        },
    )
    if err != nil {
        fmt.Println(err)
        return
    }
    if err := f.SetConditionalFormat("ورقة1", "A1:D4",
        []excelize.ConditionalFormatOptions{
            {
                Type:     "top",
                Criteria: "=",
                Value:    "1",
                Format:   &green,
            },
        },
    ); err != nil {
        fmt.Println(err)
        return
    }
    if err := f.SaveAs("Book1.xlsx"); err != nil {
        fmt.Println(err)
        return
    }
}

احصل على تنسيق شرطي

func (f *File) GetConditionalFormats(sheet string) (map[string][]ConditionalFormatOptions, error)

يُرجع GetConditionalFormats إعدادات التنسيق الشرطي حسب اسم ورقة العمل المحدد.

قم بإزالة التنسيق الشرطي

func (f *File) UnsetConditionalFormat(sheet, rangeRef string) error

يوفر UnsetConditionalFormat وظيفة لإلغاء تعيين التنسيق الشرطي عن طريق اسم ورقة العمل المحددة والنطاق.

تعيين الأجزاء

func (f *File) SetPanes(sheet string, panes *Panes) error

يوفر SetPanes وظيفة لإنشاء وإزالة أجزاء التجميد وتقسيم الألواح عن طريق اسم ورقة العمل المحددة ومجموعة تنسيق الأجزاء.

يحدد "activePane" الجزء النشط. يتم تحديد القيم المحتملة لهذه السمة في الجدول التالي:

تعداد وصف
bottomLeft (الجزء الأيسر السفلي) الجزء السفلي الأيسر عند تطبيق الانقسامات الرأسية والأفقية.

تُستخدم هذه القيمة أيضًا عند تطبيق انقسام أفقي فقط ، حيث يتم تقسيم الجزء إلى مناطق علوية وسفلية. في هذه الحالة ، تحدد هذه القيمة الجزء السفلي.
bottomRight (الجزء السفلي الأيمن) الجزء السفلي الأيمن ، عند تطبيق الانقسامات الرأسية والأفقية
topLeft (الجزء العلوي الأيسر) الجزء العلوي الأيسر ، عند تطبيق الانقسامات الرأسية والأفقية.

تُستخدم هذه القيمة أيضًا عند تطبيق انقسام أفقي فقط ، حيث يتم تقسيم الجزء إلى مناطق علوية وسفلية. في هذه الحالة ، تحدد هذه القيمة الجزء العلوي.

تُستخدم هذه القيمة أيضًا عند تطبيق الانقسام الرأسي فقط ، وتقسيم اللوحة إلى مناطق يمنى ويسرى. في هذه الحالة ، تحدد هذه القيمة الجزء الأيمن.
topRight (الجزء العلوي الأيمن) الجزء العلوي الأيمن ، عند تطبيق الانقسامات الرأسية والأفقية.

تُستخدم هذه القيمة أيضًا عند تطبيق الانقسام الرأسي فقط ، وتقسيم اللوحة إلى مناطق يمنى ويسرى. في هذه الحالة ، تحدد هذه القيمة الجزء الأيمن.

نوع حالة الجزء مقيد بالقيم المدعومة المدرجة حاليًا في الجدول التالي:

قيمة العد وصف
frozen (مجمدة) يتم تجميد الأجزاء ولكن لم يتم تقسيمها حتى يتم تجميدها. في هذه الحالة ، عندما يتم إلغاء تجميد الأجزاء مرة أخرى ، ينتج عن جزء واحد ، بدون انقسام.

في هذه الحالة ، تكون القضبان المنقسمة غير قابلة للتعديل.
split (انشق، مزق) الأجزاء منقسمة ولكنها غير مجمدة. في هذه الحالة ، يمكن تعديل أشرطة الانقسام بواسطة المستخدم.

XSplit - الموضع الأفقي للانقسام ، 1/20 من نقطة ؛ 0 (صفر) إذا لم يكن هناك شيء. إذا تم تجميد الجزء ، تشير هذه القيمة إلى عدد الأعمدة المرئية في الجزء العلوي.

YSplit - الوضع الرأسي للانقسام ، في 1/20 من نقطة ؛ 0 (صفر) إذا لم يكن هناك شيء. إذا تم تجميد الجزء ، تشير هذه القيمة إلى عدد الصفوف المرئية في الجزء الأيمن. يتم تحديد القيم المحتملة لهذه السمة بواسطة نوع البيانات المزدوج لمخطط W3C XML.

TopLeftCell - موقع الخلية المرئية العلوية اليسرى في الجزء السفلي الأيمن (عندما تكون في الوضع من اليسار إلى اليمين).

SQRef - نطاق الاختيار. يمكن أن تكون مجموعة نطاقات غير متجاورة.

مثال 1: تجميد العمود A في Sheet1 وتعيين الخلية النشطة على Sheet1!K16:

عمود مجمد

err := f.SetPanes("Sheet1", &excelize.Panes{
    Freeze:      true,
    XSplit:      1,
    TopLeftCell: "B1",
    ActivePane:  "topRight",
    Selection: []excelize.Selection{
        {SQRef: "K16", ActiveCell: "K16", Pane: "topRight"},
    },
})

مثال 2: قم بتجميد الصفوف من 1 إلى 9 في Sheet1 وقم بتعيين نطاقات الخلايا النشطة على Sheet1!A11:XFD11:

تجميد الأعمدة وتعيين نطاقات الخلايا النشطة

err := f.SetPanes("Sheet1", &excelize.Panes{
    Freeze:      true,
    YSplit:      9,
    TopLeftCell: "A34",
    ActivePane:  "bottomLeft",
    Selection: []excelize.Selection{
        {SQRef: "A11:XFD11", ActiveCell: "A11", Pane: "bottomLeft"},
    },
})

مثال 3: قم بإنشاء ألواح مقسمة في Sheet1 وتعيين الخلية النشطة على Sheet1!J60:

إنشاء الأجزاء المنقسمة

err := f.SetPanes("Sheet1", &excelize.Panes{
    Split:       true,
    XSplit:      3270,
    YSplit:      1800,
    TopLeftCell: "N57",
    ActivePane:  "bottomLeft",
    Selection: []excelize.Selection{
        {SQRef: "I36", ActiveCell: "I36"},
        {SQRef: "G33", ActiveCell: "G33", Pane: "topRight"},
        {SQRef: "J60", ActiveCell: "J60", Pane: "bottomLeft"},
        {SQRef: "O60", ActiveCell: "O60", Pane: "bottomRight"},
    },
})

مثال 4 ، قم بإلغاء التجميد وإزالة كافة الأجزاء في Sheet1:

err := f.SetPanes("Sheet1", &excelize.Panes{Freeze: false, Split: false})

الحصول على الأجزاء

func (f *File) GetPanes(sheet string) (Panes, error)

يوفر GetPanes وظيفة للحصول على أجزاء التجميد والأجزاء المنقسمة وطرق عرض ورقة العمل حسب اسم ورقة العمل المحدد.

اللون

func (f *File) GetBaseColor(hexColor string, indexedColor int, themeColor *int) string

يقوم GetBaseColor بإرجاع رمز اللون السداسي المفضل عن طريق توفير رمز اللون السداسي واللون المفهرس ولون السمة.

func ThemeColor(baseColor string, tint float64) string

قام ThemeColor بتطبيق اللون بقيمة الصبغة.

هناك ثلاثة أنواع من الألوان للنص في جدول البيانات: اللون السداسي، واللون المفهرس، ولون السمة. أولوية هذه الألوان هي أن اللون السداسي له الأسبقية على لون السمة، ولون السمة له الأسبقية على اللون المفهرس. بالإضافة إلى ذلك، يدعم اللون أيضًا تطبيق قيمة الصبغة استنادًا إلى اللون السداسي، لذلك نحتاج إلى استخدام وظيفة ThemeColor لتطبيق الصبغة للون الأساسي للحصول على قيمة اللون السداسية المحسوبة. على سبيل المثال:

package main

import (
    "fmt"

    "github.com/xuri/excelize/v2"
)

func main() {
    f, err := excelize.OpenFile("المصنف1.xlsx")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer func() {
        if err := f.Close(); err != nil {
            fmt.Println(err)
        }
    }()
    runs, err := f.GetCellRichText("Sheet1", "A1")
    if err != nil {
        fmt.Println(err)
        return
    }
    for _, run := range runs {
        var hexColor string
        if run.Font != nil {
            baseColor := f.GetBaseColor(run.Font.Color, run.Font.ColorIndexed, run.Font.ColorTheme)
            hexColor = strings.TrimPrefix(excelize.ThemeColor(baseColor, run.Font.ColorTint), "FF")
        }
        fmt.Printf("text: %s, color: %s\r\n", run.Text, hexColor)
    }
}

تحويل RGB إلى HSL

func RGBToHSL(r, g, b uint8) (h, s, l float64)

تقوم تقنية RGBToHSL بتحويل RGB الثلاثي إلى ثلاثي HSL.

تحويل HSL إلى RGB

func HSLToRGB(h, s, l float64) (r, g, b uint8)

يقوم HSLToRGB بتحويل HSL الثلاثي إلى ثلاثي RGB.

كاتب الملف

Write

func (f *File) Write(w io.Writer, opts ...Options) error

يوفر Write وظيفة للكتابة إلى io.Writer.

WriteTo

func (f *File) WriteTo(w io.Writer, opts ...Options) (int64, error)

يقوم WriteTo بتنفيذ io.WriterTo لكتابة الملف.

WriteToBuffer

func (f *File) WriteToBuffer() (*bytes.Buffer, error)

يوفر WriteToBuffer وظيفة للحصول على *bytes.Buffer من الملف المحفوظ.

أضف مشروع VBA

func (f *File) AddVBAProject(file []byte) error

يوفر AddVBAProject طريقة لإضافة ملف vbaProject.bin الذي يحتوي على وظائف و / أو وحدات ماكرو. يجب أن يكون امتداد الملف .xlsm أو .xltm. فمثلا:

codeName := "Sheet1"
if err := f.SetSheetProps("Sheet1", &excelize.SheetPropsOptions{
    CodeName: &codeName,
}); err != nil {
    fmt.Println(err)
    return
}
file, err := os.ReadFile("vbaProject.bin")
if err != nil {
    fmt.Println(err)
    return
}
if err := f.AddVBAProject(file); err != nil {
    fmt.Println(err)
    return
}
if err := f.SaveAs("macros.xlsm"); err != nil {
    fmt.Println(err)
    return
}

تاريخ Excel إلى وقت

func ExcelDateToTime(excelDate float64, use1904Format bool) (time.Time, error)

يقوم ExcelDateToTime بتحويل تمثيل تاريخ Excel على أساس عائم إلى time.Time.

محول محارف

func (f *File) CharsetTranscoder(fn charsetTranscoderFn) *File

CharsetTranscoder تعيين وظيفة محول الشفرة المعرفة من قبل المستخدم لجدول بيانات مفتوح من غير ترميز UTF-8.

results matching ""

    No results matching ""