أدوات
إضافة الطاولة
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.