📚 معلومات الصفحة
الكتاب: كتاب المهارات الرقمية - الصف 8 - الفصل 1 | المادة: المهارات الرقمية | المرحلة: الصف 8 | الفصل الدراسي: 1
الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم
نوع المحتوى: درس تعليمي
📝 ملخص الصفحة
📚 كتابة القيم في إكسل باستخدام بايثون
المفاهيم الأساسية
كتابة القيم: إما إنشاء صفوف وأعمدة جديدة وإضافة قيم في خلايا فارغة، أو تغيير قيم الخلايا الموجودة.
خريطة المفاهيم
```markmap
استخدام بايثون مع إكسل
الهدف
أتمتة المهام المتكررة
إجراء العمليات الحسابية المعقدة بشكل أسرع
الأداة: مكتبة أوبن بيكسل (openpyxl)
وظائفها
- قراءة بيانات إكسل
- كتابة بيانات إكسل
- إجراء الحسابات الرياضية
- إنشاء الرسوم والمخططات البيانية
خطوات تثبيتها في PyCharm
- فتح نافذة "Packages" (الحزم)
- البحث عن "openpyxl"
- اختيار المكتبة والضغط على "Install" (تثبيت)
- انتظار رسالة اكتمال التثبيت
الخطوات الأولى بعد التثبيت
استيراد المكتبة
- استخدام الأمر: `import openpyxl`
العمل مع دفاتر العمل
#### تحميل دفتر عمل موجود
- استخدام دالة: `load_workbook()`
- يجب وضع الملف في نفس مجلد الكود أو استخدام المسار المطلق
#### التعرف على أوراق العمل
- استخدام السمة: `sheetnames` لمعرفة أسماء الأوراق
معرفة أبعاد الورقة
سمة الصف الأقصى (max_row attribute)
- تُستخدم لمعرفة عدد الصفوف الموجودة في الورقة
سمة العمود الأقصى (max_column attribute)
- تُستخدم لمعرفة عدد الأعمدة الموجودة في الورقة
الوصول إلى الخلايا
خصائص الخلية الرئيسية
طرق الوصول
- الوصول إلى خلية محددة (مثل `sheet_obj["A1"]`)
- الوصول إلى نطاق من الخلايا (مثل `sheet_obj["B1":"B5"]`)
الوصول إلى قيم الخلايا
الوصول إلى قيمة خلية واحدة
- تحديد موقع الخلية (مثال: "C3")
- استدعاء سمة `.value` (مثال: `cell.value`)
الوصول إلى قيمة أكثر من خلية واحدة
- استخدام الدالتان `iter_rows` و `iter_cols`
- لتجنب البحث اليدوي الطويل والمعرض للخطأ
دالة iter_rows
الغرض
- الحصول على جميع القيم لصف أو أكثر في ورقة عمل إكسل
الصيغة
iter\_rows (min\_row=None, max\_row=None, min\_col=None, max\_col=None)
المعاملات (Parameters)
- `min_row`: فهرس الصف الأول في النطاق
- `max_row`: فهرس الصف الأخير في النطاق
- `min_col`: فهرس العمود الأول في النطاق
- `max_col`: فهرس العمود الأخير في النطاق
ملاحظة
- إذا لم تحدد الفهرس، يبدأ النطاق من الخلية الأولى "A1"
مثال تطبيقي
- للحصول على جميع الحقائق الغذائية للحليب من الصف 3 والأعمدة من 3 إلى 11
دالة iter_cols
الغرض
- الحصول على جميع القيم لعمود أو أكثر في ورقة عمل إكسل
الصيغة
iter\_cols (min\_col=None, max\_col=None, min\_row=None, max\_row=None)
المعاملات (Parameters)
- `min_col`: فهرس العمود الأصغر (الأول)
- `max_col`: فهرس العمود الأكبر (الأخير)
- `min_row`: فهرس الصف الأصغر (الأول)
- `max_row`: فهرس الصف الأكبر (الأخير)
ملاحظة
- إذا لم تحدد الفهرس، يبدأ النطاق من الخلية الأولى "A1"
مثال تطبيقي
- للحصول على عدد السعرات الحرارية (kCal) لجميع المكونات في ورقة العمل
- استخراج البيانات من العمود 3، الصفوف من 3 إلى 12
كتابة القيم
الغرض
- تغيير قيمة خلية موجودة أو إضافة قيمة في خلية فارغة
الطريقة
- استخدام دالة الخلية `cell(row, column).value`
مثال تطبيقي
- تغيير قيمة الخلية "B1" من "100 جرام" إلى "30 جرامًا"
صيغة تغيير القيم
- عند تحويل القيم من 100 جرام إلى 30 جرام:
new\_value = old\_value * 30 / 100
ملاحظة مهمة
- عند حفظ التغييرات، يجب فتح الملف فقط في بايثون
- إذا كان ملف الإكسل مفتوحًا في برنامج إكسل، ستظهر رسالة خطأ
```
نقاط مهمة
- يمكن تغيير قيمة خلية باستخدام دالة الخلية `cell(row, column).value`.
- مثال عملي: تغيير قيمة الخلية B1 في ملف "nutrition.xlsx" من "100 جرام" إلى "30 جرامًا".
- عند حفظ التغييرات، يجب إغلاق ملف الإكسل في برنامج إكسل قبل تشغيل كود بايثون.
- صيغة تحويل القيم الغذائية من 100 جرام إلى 30 جرام: `new_value = old_value * 30 / 100`.
📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
نوع: محتوى تعليمي
كتابة القيم
نوع: محتوى تعليمي
لقد تعلمت كيفية الحصول على الخلايا والقيم من ورقة العمل. من الأمور المهمة عند العمل على ملفات إكسل هي كتابة القيم في الخلايا، حيث يمكنك إما إنشاء صفوف وأعمدة جديدة وإضافة قيم في خلايا فارغة، أو يمكنك تغيير قيم الخلايا الموجودة. يمكنك تغيير قيمة الخلية باستخدام دالة الخلية (cell).
نوع: محتوى تعليمي
ستعمل على ملف التغذية في إكسل وتغير القيم الموجودة. في هذا الملف، ستحسب قيم العناصر الغذائية لكل مكون في كل 100 جرام. إذا كنت ترغب في تحويل هذه القيم لإظهارها في كل 30 جرامًا من المكونات، فيجب عليك تغيير كل قيمة وفقًا للصيغة التالية: new_value = old_value * 30 / 100
نوع: محتوى تعليمي
عليك أولاً تغيير قيمة "B1" من "100 جرام" إلى "30 جرامًا".
نوع: محتوى تعليمي
عند حفظ التغييرات في ملف إكسل من خلال أوامر بايثون، يجب فتح الملف فقط في بايثون وإلا فلن تحدث التغييرات، وستظهر رسالة خطأ في حال كان ملف الإكسل مفتوحًا في برنامج إكسل في نفس الوقت.
نوع: محتوى تعليمي
import openpyxl
path = "nutrition.xlsx"
wb = openpyxl.load_workbook(path)
sheet_obj = wb["arabic"]
# B1 غير الخلية
sheet_obj.cell(row=1, column=2).value = "30 جرام."
wb.save("nutrition.xlsx")
نوع: محتوى تعليمي
الآن إذا فتحت ملف إكسل مرة أخرى، فستتغير قيمة الخلية "B1".
نوع: METADATA
179
🔍 عناصر مرئية
A diagram illustrating cell referencing. It shows a text box with 'cell(row=None, column=None)' and an arrow pointing to another text box labeled 'فهرس الصف والعمود' (Row and Column Index). This diagram explains how to refer to cells in a spreadsheet programmatically.
30 جرام
A table displaying nutritional information for various food components, with values adjusted for a 30-gram serving size. The table has 11 rows of data (from row 2 to 12) and 11 columns (from A to K).
📄 النص الكامل للصفحة
كتابة القيم
لقد تعلمت كيفية الحصول على الخلايا والقيم من ورقة العمل. من الأمور المهمة عند العمل على ملفات إكسل هي كتابة القيم في الخلايا، حيث يمكنك إما إنشاء صفوف وأعمدة جديدة وإضافة قيم في خلايا فارغة، أو يمكنك تغيير قيم الخلايا الموجودة. يمكنك تغيير قيمة الخلية باستخدام دالة الخلية (cell).
ستعمل على ملف التغذية في إكسل وتغير القيم الموجودة. في هذا الملف، ستحسب قيم العناصر الغذائية لكل مكون في كل 100 جرام. إذا كنت ترغب في تحويل هذه القيم لإظهارها في كل 30 جرامًا من المكونات، فيجب عليك تغيير كل قيمة وفقًا للصيغة التالية: new_value = old_value * 30 / 100
عليك أولاً تغيير قيمة "B1" من "100 جرام" إلى "30 جرامًا".
عند حفظ التغييرات في ملف إكسل من خلال أوامر بايثون، يجب فتح الملف فقط في بايثون وإلا فلن تحدث التغييرات، وستظهر رسالة خطأ في حال كان ملف الإكسل مفتوحًا في برنامج إكسل في نفس الوقت.
import openpyxl
path = "nutrition.xlsx"
wb = openpyxl.load_workbook(path)
sheet_obj = wb["arabic"]
# B1 غير الخلية
sheet_obj.cell(row=1, column=2).value = "30 جرام."
wb.save("nutrition.xlsx")
الآن إذا فتحت ملف إكسل مرة أخرى، فستتغير قيمة الخلية "B1".
179
--- VISUAL CONTEXT ---
**DIAGRAM**: Untitled
Description: A diagram illustrating cell referencing. It shows a text box with 'cell(row=None, column=None)' and an arrow pointing to another text box labeled 'فهرس الصف والعمود' (Row and Column Index). This diagram explains how to refer to cells in a spreadsheet programmatically.
Context: Illustrates the syntax for referencing cells in a spreadsheet, relevant to the Python code example.
**TABLE**: 30 جرام
Description: A table displaying nutritional information for various food components, with values adjusted for a 30-gram serving size. The table has 11 rows of data (from row 2 to 12) and 11 columns (from A to K).
Table Structure:
Headers: مكونات | الماء جرام | الطاقة سعر حراري | بروتين جرام | دهون جرام | كربوهيدرات جرام | كالسيوم (Ca) مليجرام | فسفور (P) مليجرام | حديد (Fe) مليجرام | صوديوم (Na) مليجرام | بوتاسيوم (K) مليجرام
Rows:
Row 1: الحليب | 88.1 | 61 | 3.27 | 3.25 | 4.63 | 123 | 101 | 0 | 38 | 150
Row 2: البيض | 75.8 | 143 | 12.4 | 8.65 | 0.96 | 48 | 184 | 1.67 | 129 | 132
Row 3: الدجاج | 69.9 | 149 | 23.9 | 5.23 | 0.94 | 12 | 184 | 0.94 | 117 | 239
Row 4: برجر بالجبن | 48 | 261 | 13.9 | 11.8 | 23.9 | 261 | 239 | 11.8 | 201 | 508 | 211
Row 5: التفاح | 83.6 | 65 | 0.15 | 0.16 | 15.6 | 6 | 10 | 0.02 | 1 | 104
Row 6: الكعك | 8.85 | 430 | 5.79 | 13.7 | 69.6 | 29 | 111 | 2.28 | 314 | 245
Row 7: مكعبات بالشوكولاتة | 55.7 | 216 | 3.8 | 11 | 28.2 | 109 | 107 | 0.93 | 76 | 249
Row 8: حليب بالشوكولاتة | 1.5 | 535 | 7.65 | 29.7 | 59.4 | 189 | 208 | 2.35 | 372 | 208
Row 9: الخس | 94.7 | 20 | 1.24 | 0.26 | 3.24 | 35 | 30 | 0.95 | 253 | 0
Row 10: الموز | 74.9 | 89 | 1.09 | 0.33 | 22.8 | 5 | 22 | 0.26 | 358 | 1
Row 11: الموز | EMPTY | EMPTY | EMPTY | EMPTY | EMPTY | EMPTY | EMPTY | EMPTY | EMPTY | EMPTY
Empty cells: Cells in the last row (row 12) for 'الموز' are empty as data is not visible.
Calculation needed: The table values are presented for a 30-gram serving size, implying a conversion from a 100-gram base as described in the main content.
Data: The table provides nutritional values (water, energy, protein, fat, carbohydrates, calcium, phosphorus, iron, sodium, potassium) for different food items (milk, eggs, chicken, cheeseburger, apple, cake, chocolate cubes, chocolate milk, lettuce, banana). All values are for a 30-gram portion.
Context: Provides sample nutritional data for various food items, used as a practical example for data manipulation and automation using Python and Excel.
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 4 بطاقة لهذه الصفحة
ما الوظيفة الأساسية لطريقة `cell()` في مكتبة `openpyxl` عند العمل مع ملفات إكسل في بايثون؟
- أ) إنشاء ورقة عمل جديدة داخل ملف الإكسل.
- ب) حفظ ملف الإكسل بعد إجراء جميع التعديلات.
- ج) الوصول إلى خلية معينة في ورقة العمل لتعديل قيمتها أو قراءتها.
- د) فتح ملف إكسل موجود للقراءة فقط دون إمكانية التعديل.
الإجابة الصحيحة: c
الإجابة: الوصول إلى خلية معينة في ورقة العمل لتعديل قيمتها أو قراءتها.
الشرح: 1. تُستخدم `cell(row, column)` للوصول إلى خلية محددة.
2. يتم تحديد موقعها برقم الصف ورقم العمود.
3. يمكن بعد ذلك تعيين قيمة جديدة لها باستخدام `.value` أو قراءة قيمتها الحالية.
تلميح: تتطلب هذه الطريقة تحديد موقع الخلية باستخدام رقمي الصف والعمود.
التصنيف: مفهوم جوهري | المستوى: سهل
ما الخطوة الأولى التي يجب القيام بها قبل حفظ التغييرات في ملف إكسل باستخدام مكتبة `openpyxl` في بايثون؟
- أ) تغيير اسم الملف قبل عملية الحفظ.
- ب) تأكد من أن ملف الإكسل غير مفتوح في برنامج إكسل نفسه.
- ج) إغلاق جميع نوافذ بايثون الأخرى.
- د) نسخ الملف احتياطياً يدوياً قبل تشغيل الكود.
الإجابة الصحيحة: b
الإجابة: تأكد من أن ملف الإكسل غير مفتوح في برنامج إكسل نفسه.
الشرح: 1. عند العمل على ملف إكسل باستخدام `openpyxl`، يجب أن يكون الملف مغلقاً في برنامج إكسل.
2. إذا كان الملف مفتوحاً في برنامج إكسل، فإن محاولة حفظه من بايثون ستسبب خطأ.
3. هذه خطوة وقائية ضرورية لضمان حفظ التغييرات بنجاح.
تلميح: يؤدي فتح الملف في برنامجين في نفس الوقت إلى مشكلة.
التصنيف: خطوات | المستوى: متوسط
إذا كانت القيمة الغذائية للبروتين في 100 جرام من مكون ما هي 12.4 جرام، فما هي قيمة البروتين في 30 جرام من نفس المكون؟ (طبقاً للصيغة المذكورة)
- أ) 4.12 جرام
- ب) 3.72 جرام
- ج) 12.4 جرام
- د) 0.372 جرام
الإجابة الصحيحة: b
الإجابة: 3.72 جرام
الشرح: 1. الصيغة المذكورة هي: new_value = old_value * 30 / 100.
2. القيمة القديمة للبروتين = 12.4 جرام.
3. الحساب: 12.4 * 30 / 100 = 12.4 * 0.3 = 3.72.
4. إذن، قيمة البروتين في 30 جرام هي 3.72 جرام.
تلميح: استخدم الصيغة: القيمة_الجديدة = القيمة_القديمة × 30 ÷ 100
التصنيف: مسألة تدريبية | المستوى: سهل
في الكود البرمجي المثال `sheet_obj.cell(row=1, column=2).value = "30 جرام."`، ماذا يمثل الرقمان 1 و 2؟
- أ) عدد الصفوف والأعمدة المراد إضافتها.
- ب) رقم الصفحة ورقم السطر في الكود.
- ج) رقم الصف ورقم العمود للخلية المراد تعديلها.
- د) القيمة القديمة والقيمة الجديدة للخلية.
الإجابة الصحيحة: c
الإجابة: رقم الصف ورقم العمود للخلية المراد تعديلها.
الشرح: 1. الوسيط `row` يمثل رقم الصف في ورقة العمل.
2. الوسيط `column` يمثل رقم العمود.
3. في هذا المثال، row=1 و column=2، مما يشير إلى الخلية الموجودة في الصف الأول والعمود الثاني، وهي الخلية B1.
تلميح: يحدد موقع الخلية في الشبكة.
التصنيف: مفهوم جوهري | المستوى: متوسط