اذهب إلى المحتوى
  • 0

خطأ TypeError عند استخدام win32com للكتابة في Excel

حامد العبد الله

السؤال

السلام عليكم ورحمة الله وبركاته 

هل يوجد أمر معين يجب التنبه اليه عند استخدام win32com 

لم تعمل لدي ويكون نص الخطا: TypeError: write_to_excel() missing 1 required positional argument: 'file_path'

لا يقبل مسار الملف المحدد مع العلم ان الملف موجود وليس به اخطاء

بوركتم

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

 معنى الخطأ هو أن الدالة write_to_excel() تتطلب وسيط إضافي يسمى "file_path" ولم تقدمه عند استدعاء الدالة.

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

وإليك مثال يوضح كيفية استخدام win32com لكتابة بيانات إلى ملف Excel:

import win32com.client as win32

def write_to_excel(file_path):
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    wb = excel.Workbooks.Add()
    ws = wb.Worksheets('Sheet1')

    # كود الكتابة إلى الخلايا في الملف
    ws.Range('A1').Value = 'Hello'
    ws.Range('B1').Value = 'World'

    wb.SaveAs(file_path)
    excel.Application.Quit()

file_path = 'C:/yourfolder/file.xlsx'
write_to_excel(file_path)

وعليك تغيير 'C:/yourfolder/file.xlsx' بالمسار الصحيح لملف Excel الذي ترغب في الكتابة إليه.

وإذا استمرت المشكلة لديك، أرفق الكود سواء برفع مجلد المشروع أو من خلال إضافته من علامة <> لمساعدتك بشكل أفضل

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

<

def write_to_excel(file_path):
excel = win32.gencache.EnsureDispatch('Excel.Application')

# فتح الملف
wb = excel.Workbooks.Open(file_path)

>

في المثال السابق اريد فقط فتح الملف ولكن مع الاسف لا يتم الامر

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

عند استخدام win32com للتعامل مع تطبيقات Microsoft Office مثل Excel، هناك بعض الأشياء التي يجب أن تأخذها في الاعتبار. بناءً على الخطأ الذي واجهته، يبدو أن هناك مشكلة في وظيفة `write_to_excel()` حيث تفتقد وسيطة مطلوبة واحدة وهي `file_path`.

يُعد `TypeError` شائعًا عندما يتم تمرير عدد غير صحيح من الوسائط أو عدد غير صحيح من الوسائط المطلوبة إلى وظيفة معينة.

لحل هذه المشكلة، تحقق من الدالة `write_to_excel()` وتأكد من أنك تمرر المسار الصحيح للملف كوسيطة لها. قم بالتحقق من النحو الصحيح للدالة والوسائط المطلوبة ومواقعها في التعليمات البرمجية.

علاوة على ذلك، تأكد من أن الملف الذي تحاول الوصول إليه موجود بالفعل في المسار الذي تم تمريره. يجب أن يكون المسار الكامل للملف صحيحًا والملف نفسه قابل للقراءة والكتابة.

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 6 ساعة قال حامد العبد الله:

<

def write_to_excel(file_path):
excel = win32.gencache.EnsureDispatch('Excel.Application')

# فتح الملف
wb = excel.Workbooks.Open(file_path)

>

في المثال السابق اريد فقط فتح الملف ولكن مع الاسف لا يتم الامر

يبدو أن الخطأ الذي تواجهه يعود إلى مشكلة في تمرير المعاملات لدالة `write_to_excel`. تحتاج إلى تمرير مسار الملف الذي تريد فتحه كمعامل لدالة `write_to_excel`، مثل هذا:

file_path = "C:\\path\\to\\file.xlsx"
write_to_excel(file_path)

ويتم استدعاء الدالة `write_to_excel` بمعامل `file_path`. لذلك، تحتاج إلى التأكد من تمرير قيمة لـ `file_path` عند استدعاء الدالة.

وإذا كان المشكلة لا تزال مستمرة، يمكنك محاولة استخدام الأكواد التالية لفحص الأخطاء:

import win32com.client as win32

def write_to_excel(file_path):
    try:
        # إنشاء نسخة من تطبيق Excel
        excel = win32.gencache.EnsureDispatch('Excel.Application')
        # فتح الملف
        wb = excel.Workbooks.Open(file_path)
        # إغلاق الملف
        wb.Close(SaveChanges=True)
    except Exception as e:
        print("Error: ", e)

# تمرير مسار الملف كمعامل للدالة write_to_excel
file_path = "C:\\path\\to\\file.xlsx"
write_to_excel(file_path)

يجب عدم نسيان إغلاق الملف بعد الانتهاء من استخدامه باستخدام `wb.Close(SaveChanges=True)`، حيث يتم حفظ التغييرات قبل إغلاق الملف.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 13 ساعة قال عبدالباسط ابراهيم:

يبدو أن الخطأ الذي تواجهه يعود إلى مشكلة في تمرير المعاملات لدالة `write_to_excel`. تحتاج إلى تمرير مسار الملف الذي تريد فتحه كمعامل لدالة `write_to_excel`، مثل هذا:

file_path = "C:\\path\\to\\file.xlsx"
write_to_excel(file_path)

ويتم استدعاء الدالة `write_to_excel` بمعامل `file_path`. لذلك، تحتاج إلى التأكد من تمرير قيمة لـ `file_path` عند استدعاء الدالة.

وإذا كان المشكلة لا تزال مستمرة، يمكنك محاولة استخدام الأكواد التالية لفحص الأخطاء:

import win32com.client as win32

def write_to_excel(file_path):
    try:
        # إنشاء نسخة من تطبيق Excel
        excel = win32.gencache.EnsureDispatch('Excel.Application')
        # فتح الملف
        wb = excel.Workbooks.Open(file_path)
        # إغلاق الملف
        wb.Close(SaveChanges=True)
    except Exception as e:
        print("Error: ", e)

# تمرير مسار الملف كمعامل للدالة write_to_excel
file_path = "C:\\path\\to\\file.xlsx"
write_to_excel(file_path)

يجب عدم نسيان إغلاق الملف بعد الانتهاء من استخدامه باستخدام `wb.Close(SaveChanges=True)`، حيث يتم حفظ التغييرات قبل إغلاق الملف.

 

تمام يا باش مهندس بشكركم كثير على تقديم المساعدة 

الخطا كان عند استدعاء الدالة في مكتبة tkinter في خصائص Button  لا يمكن إسدعاء الدالة باقواس

الحل كان 

command=lambda: write_to_excel(file_path)

مشكوران يا أساتذة

تم التعديل في بواسطة حامد العبد الله
اضافة الكود في المكان الصحيح
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...