Ali Ali49 نشر 5 يونيو 2023 أرسل تقرير نشر 5 يونيو 2023 (معدل) السلام عليكم أتعامل مع لغة python في كتابة الكود أستخدم مكتبة Openpyxl للتعامل مع ملفات Excel Workbooks أحاول أن أطبق عمل class في كتابة الأكواد بحيث يكون لدي ملف مستقل به مجموعة من الأكواد أقوم من خلاله بإستدعاء الكود المطلوب تنفيذه في البرنامج الرئيسي أردت أن أطبق عمل class على إستدعاء ملف إكسل وورقة العمل ( Workbooks , sheet ) إعلم أن الكود العادي لتنفيذ ذلك هو كا الأتي workbook = load_workbook('D:\abc.xlsx') sheet = workbook.active كيف أقوم بتحويل هذا الكود إلى class أو إجراء داخل الكلاس , حيث أستطيع أن أتعامل معه , وأصل إليه في أي مكان عند كتابة الكود داخل البرنامج أحتاج أن أحتر ف أكثر في كتابة الكود وهذا إجتهادي في ذلك from openpyxl import load_workbook class W_book : def __init__(self,workbook,sheet,BATH): self.workbook = workbook self.sheet = sheet self.BATH = BATH workbook = load_workbook(BATH) sheet = workbook.active وعند الأستدعاء من صفحة البرنامج from cls1 import W.book بعد ذلك أقوم بتعريف متغير a = W.book(workbook, sheet, 'D:\ABC.xlsx' ) هل هذا صحيح , ولاكن كيف أتعامل مع المتغيرات بسلاسة عند كتابة الأكود كا أن أستدعي إسم sheet مثلا في باقي الأكود لسحب القيم من الأعمدة و الصفوق مثلا لذلك. تم التعديل في 5 يونيو 2023 بواسطة Ali Ali49 اقتباس
0 Mustafa Suleiman نشر 5 يونيو 2023 أرسل تقرير نشر 5 يونيو 2023 هناك بعض التعديلات التي يجب إجراؤها كالتالي: في الدالة __init__ التي تم إنشاؤها في الـ class W_book، يجب تعيين قيمة المتغيرات workbook و sheet إلى القيم التي يتم تمريرها إلى الـ constructor، وذلك باستخدام self للإشارة إلى المتغيرات الخاصة بالـ class. كما يجب تحميل الملف باستخدام load_workbook داخل الـ constructor. from openpyxl import load_workbook class W_book: def __init__(self, BATH): self.BATH = BATH self.workbook = load_workbook(BATH) self.sheet = self.workbook.active وعند استدعاء الكلاس من صفحة البرنامج، بإمكانك تمرير مسار الملف إلى الـ constructor لإنشاء كائن الـ class وتعيينه للمتغير a، كمثال: from cls1 import W_book a = W_book('D:\ABC.xlsx') الآن تستطيع الوصول إلى المتغيرات workbook و sheet باستخدام a.workbook و a.sheet على التوالي في باقي الأكواد، مثلاً، إذا كنت ترغب في سحب القيم من الأعمدة والصفوف، باستطاعتك استخدام a.sheet['A1'].value للوصول إلى قيمة الخلية A1. 1 اقتباس
0 Ali Ali49 نشر 5 يونيو 2023 الكاتب أرسل تقرير نشر 5 يونيو 2023 أفترض أن لدي دالة def ,, الغرض منها إستخراج أسماء أوراق العمل من المتغير a , كيف يتم ذلك def S_Names(): q= a.workbook.sheetnames print(q) return(q) هل يمكن الوصول إلى المتغير a بهذه الكيفية أم هناك طرق أفضل اقتباس
0 Mustafa Suleiman نشر 5 يونيو 2023 أرسل تقرير نشر 5 يونيو 2023 تستطيع الوصول إلى المتغير a في دالة S_Names() عن طريق تمريره كوسيطة إلى الدالة. def S_Names(a): q = a.workbook.sheetnames print(q) return q ثم استدعاء الدالة S_Names() وتمرير المتغير a إليها لاستخراج أسماء أوراق العمل. S_Names(a) 1 اقتباس
0 Ali Ali49 نشر 5 يونيو 2023 الكاتب أرسل تقرير نشر 5 يونيو 2023 (معدل) أحسنت , جزاك الله خيراً أستاذي ( Mustafa ) أستاذي أرجو المعذرة أحتاج إضافة على الكود السابق وهو الكود التالي from openpyxl import load_workbook class W_book: def __init__(self, BATH): self.BATH = BATH self.workbook = load_workbook(BATH) self.sheet = self.workbook.active لإضافة السطر التالي column_values = [cell.value for cell in sheet['A']] وهذا إجتهادي في تعديل الكود from openpyxl import load_workbook class W_book: def __init__(self, BATH): self.BATH = BATH self.workbook = load_workbook(BATH) self.sheet = self.workbook self.column_values = [cell.value for cell in self.sheet['A']] تم التعديل في 5 يونيو 2023 بواسطة Ali Ali49 اقتباس
0 Ali Ali49 نشر 5 يونيو 2023 الكاتب أرسل تقرير نشر 5 يونيو 2023 هل ممكن المساعدة على تعديل الكود السابق بحيث لا يتم تحميل الملف تلقائياً عند فتح البرنامج إلا من خلال الضغط على الزر تحميل ملف مثلا لأن ذلك يحدث ثقلا عند فتح البرنامج في حين كانت ورقة العمل مليئة. اقتباس
0 عبدالباسط ابراهيم نشر 5 يونيو 2023 أرسل تقرير نشر 5 يونيو 2023 بتاريخ 5 ساعة قال Ali Ali49: هل ممكن المساعدة على تعديل الكود السابق بحيث لا يتم تحميل الملف تلقائياً عند فتح البرنامج إلا من خلال الضغط على الزر تحميل ملف مثلا لأن ذلك يحدث ثقلا عند فتح البرنامج في حين كانت ورقة العمل مليئة. يمكنك استخدام خاصية lazy loading لتحميل الملف عند الضغط على زر التحميل، وذلك باستخدام دالة openpyxl.load_workbook، وإرجاع الملف المفتوح في دالة __init__ دون تحميله، كما يلي: from openpyxl import load_workbook class W_book: def __init__(self, workbook, sheet): self.workbook = workbook self.sheet = sheet def load_workbook(self, path): self.workbook = load_workbook(path) وعند الضغط على زر التحميل، يمكن استدعاء دالة `load_workbook` لتحميل الملف، كما يلي: بهذه الطريقة، يتم تحميل الملف فقط عند الضغط على زر التحميل، ولا يتم تحميله تلقائيًا عند فتح البرنامج، مما يقلل من عبء تحميل الملف ويجعل عملية فتح البرنامج أسرع. اقتباس
0 Ali Ali49 نشر 5 يونيو 2023 الكاتب أرسل تقرير نشر 5 يونيو 2023 بتاريخ 46 دقائق مضت قال عبدالباسط ابراهيم: يمكنك استخدام خاصية lazy loading لتحميل الملف عند الضغط على زر التحميل، وذلك باستخدام دالة openpyxl.load_workbook، وإرجاع الملف المفتوح في دالة __init__ دون تحميله، كما يلي: from openpyxl import load_workbook class W_book: def __init__(self, workbook, sheet): self.workbook = workbook self.sheet = sheet def load_workbook(self, path): self.workbook = load_workbook(path) وعند الضغط على زر التحميل، يمكن استدعاء دالة `load_workbook` لتحميل الملف، كما يلي: بهذه الطريقة، يتم تحميل الملف فقط عند الضغط على زر التحميل، ولا يتم تحميله تلقائيًا عند فتح البرنامج، مما يقلل من عبء تحميل الملف ويجعل عملية فتح البرنامج أسرع. ارجو منك توضيح أكثر لهذا السطر كيف أقوم بذلك ( وإرجاع الملف المفتوح في دالة __init__ دون تحميله ) دالة openpyxl.load_workbook، وإرجاع الملف المفتوح في دالة __init__ دون تحميله، كما يلي: اقتباس
0 عبدالباسط ابراهيم نشر 6 يونيو 2023 أرسل تقرير نشر 6 يونيو 2023 (معدل) بتاريخ 18 ساعة قال Ali Ali49: ارجو منك توضيح أكثر لهذا السطر كيف أقوم بذلك ( وإرجاع الملف المفتوح في دالة __init__ دون تحميله ) دالة openpyxl.load_workbook، وإرجاع الملف المفتوح في دالة __init__ دون تحميله، كما يلي: سأحاول التوضيح أكثر تحتاج إلى استخدام دالة openpyxl.load_workbook() لتحميل ملف Excel. يمكنك استخدام هذه الدالة لتحميل الملف وإرجاعه ككائن Workbook دون فتحه في الدالة __init__ يمكنك استخدام openpyxl.load_workbook() لتحميل الملف وإرجاعه ككائن Workbook. يمكنك تخزين هذا الكائن المسترجع في متغير داخلي في الكلاس لاستخدامه لاحقًا في أي دوال أخرى في الكلاس. تم التعديل في 6 يونيو 2023 بواسطة عبدالباسط ابراهيم خطأ إملائي اقتباس
السؤال
Ali Ali49
السلام عليكم
أتعامل مع لغة python في كتابة الكود
أستخدم مكتبة Openpyxl للتعامل مع ملفات Excel Workbooks
أحاول أن أطبق عمل class في كتابة الأكواد بحيث يكون لدي ملف مستقل به مجموعة من الأكواد أقوم من خلاله بإستدعاء الكود المطلوب تنفيذه في البرنامج الرئيسي
أردت أن أطبق عمل class على إستدعاء ملف إكسل وورقة العمل ( Workbooks , sheet )
إعلم أن الكود العادي لتنفيذ ذلك هو كا الأتي
كيف أقوم بتحويل هذا الكود إلى class أو إجراء داخل الكلاس , حيث أستطيع أن أتعامل معه , وأصل إليه في أي مكان عند كتابة الكود داخل البرنامج
أحتاج أن أحتر ف أكثر في كتابة الكود
وهذا إجتهادي في ذلك
وعند الأستدعاء من صفحة البرنامج
بعد ذلك أقوم بتعريف متغير
هل هذا صحيح , ولاكن كيف أتعامل مع المتغيرات بسلاسة عند كتابة الأكود كا أن أستدعي إسم sheet مثلا في باقي الأكود لسحب القيم من الأعمدة و الصفوق مثلا لذلك.
تم التعديل في بواسطة Ali Ali498 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.