Ahmed Ahmed64 نشر 23 يناير 2023 أرسل تقرير نشر 23 يناير 2023 أرجو منكم تصحيح الكود للوصول لقيمة sheet def openFile(): filepath = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main",title="Open file okay?",filetypes= (("text files","*.xlsx"),("all files","*.*"))) wb = load_workbook(filepath) sheet = wb.active def a(): abc=sheet.cell(row=9,column=4).value print(abc) openFile() a() حيث يظهر الخطأ التالي NameError: name 'sheet' is not defined 1 اقتباس
0 Ahmed Sadek Elamine Touahria نشر 23 يناير 2023 أرسل تقرير نشر 23 يناير 2023 الخطأ يوضح أن المتغير sheet غير معرف وهذا واضح ، ﻷنك تقوم بإستدعاءه من دالة أخرى . لتصحيح الخطأ قم بإرجاع المتغير في الدالة openFile بهذا الشكل def openFile(): filepath = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main",title="Open file okay?",filetypes= (("text files","*.xlsx"),("all files","*.*"))) wb = load_workbook(filepath) sheet = wb.active return sheet ثم في الدالة الثانية def a(): sheet = openFile() # استرجاع المتغير abc=sheet.cell(row=9,column=4).value print(abc) 1 اقتباس
0 بلال زيادة نشر 23 يناير 2023 أرسل تقرير نشر 23 يناير 2023 يبدو الكود الذي قدمته أنه من المفترض أن يفتح ملف Excel باستخدام وحدة filedialog ، وتحميل الورقة النشطة من المصنف workbook ، ثم استرداد قيمة خلية معينة (الصف 9 ، العمود 4) وطباعتها. ومع ذلك ، هناك مشكلتان في الكود تمنعه من العمل بشكل صحيح. يتم تعريف الورقة داخل دالة openFile () ، ولكن تتم الإشارة إليها في دالة a () . لإصلاح ذلك ، تحتاج إلى التأكد من تعريف الورقة على أنها متغير عام بحيث يمكن الوصول إليها من خلال كلتا الوظيفتين. يمكنك القيام بذلك عن طريق إضافة "global sheet" في بداية دالة openFile () .يقوم التابع filedialog.askopenfilename() بإرجاع سلسلة نصية ، لكن دالة load_workbook () تتوقع كائنًا يشبه المسار. لذلك تحتاج إلى تحويل السلسلة التي تم إرجاعها إلى كائن يشبه المسار عن طريق إضافة مكتبة "pathlib" واستخدام دالة pathlib.Path () لتحويل السلسلة إلى كائن يشبه المسار. هذا هو الكود المصحح: from pathlib import Path import openpyxl from openpyxl import load_workbook import filedialog def openFile(): global sheet filepath = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main",title="Open file okay?",filetypes= (("text files","*.xlsx"),("all files","*.*"))) filepath = Path(filepath) wb = load_workbook(filepath) sheet = wb.active def a(): global sheet abc=sheet.cell(row=9,column=4).value print(abc) openFile() a() 1 اقتباس
0 Ahmed Ahmed64 نشر 23 يناير 2023 الكاتب أرسل تقرير نشر 23 يناير 2023 أحسنتم جميعاً ( جزاكم الله خيراً ) تساؤل أيهما أفضل من ناحية كتابة الكود هل طريقة الأخ ( Ahmed Sadek ) أم الأخ (بلال زيادة ) اقتباس
0 Ahmed Ahmed64 نشر 23 يناير 2023 الكاتب أرسل تقرير نشر 23 يناير 2023 أخوتي ممكن الكود الذي من خلاله يقرأ كل أسماء أوراق العمل الموجودة بالملف وتحويل هذه الأسماء إلى داخل أداة الكومبو بوكس الرجاء التوضيح بكتابة الكود ليسهل عليا الفهم والتطبيق اقتباس
السؤال
Ahmed Ahmed64
أرجو منكم تصحيح الكود للوصول لقيمة sheet
حيث يظهر الخطأ التالي
NameError: name 'sheet' is not defined
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.