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

السؤال

نشر

انا استخدمت مكتبة pandas لكن لما اجلب قيمة من excel في django يرجع none 

وفي بايثون يرجع النتيجة الموجودة في excel

# هذا الكود الذي استخدمته
df = pd.read_excel('.\excel\math.xlsx', sheet_name='ورقة1', usecols='A:D')
    num1 = df.loc[0]['number 1']
    num2 = df.loc[0]['number 2']
    sol = df.loc[0]['sol']

 

Recommended Posts

  • 0
نشر
بتاريخ 55 دقائق مضت قال عزوز عزوز2:

اخي اشرف الدين 

المشكلة هنا عند استدعاء قيمة sol لا يرجع لي القيمة الموجودة في excel انما يرجع nan او None .....

قيمة sol في الاكسيل هي الخلية C2 وقيمة هذه الخلية هو مجموع الخليتين A2 + B2

يعني لو كانت قيمة A2 = 2 وقيمة B2 = 3 ...ستكون قيمة الخلية C2 هو 5

هذه صورة ملف excel

هذه صورة للصفحة التي تجلب القيم من excel

 

 

تلك المشكلة تحدث بسبب أنك تحاول الحصول على قيمة الصف sol والذي هو في الاساس ليس قيمة وانما معادلة, لذا يجب حسابها قبل محاولة الاتيان بقيمتها, ولحساب معادلات الاكسيل برمجيًا يمكننا استخدام موديول  formulas  والذي يقوم اولا بتحميل الملف الاكسيل ومن ثم حساب معادلاته ومن ثم حفظه, والشفرة التالية مستوحاة من شفرتك بعد بعض التعديلات لتناسب استخدام الموديول 

import pandas as pd
import openpyxl
import formulas


xl_model = formulas.ExcelModel().loads('./MATH.XLSX').finish()
xl_model.calculate()
xl_model.write(dirpath='./')
wb = openpyxl.load_workbook('MATH.XLSX',data_only=True)
sheet1 = wb['ورقة1']
print(sheet1.cell(column=3, row=2).value)
df = pd.read_excel('MATH.XLSX', sheet_name='ورقة1', usecols='A:L')
number1 = df.loc[0]['number 1']
print(number1)
number2 = df.loc[0]['number 2']
sol = df.loc[0]['sol']
print(df.loc[0])

نلاحظ اننا نستخدم الملف بحروف كبيرة, وهذا لان الموديول formulas يقوم بحفظ الملف بحروف كبيرة, يُرجى استبدال المسارات الموضوعة في الشفرة بالمسارات الخاصة بملفاتك

 

  • 0
نشر
بتاريخ 2 ساعات قال مسعود زاهي:

مرحبا عزوز،

لم تقم بالتوضيح في أي سطر يقع الخطأ.

تحياتي.

في  في هذا السطر ... هو لا يرجع خطأ انما لا يجلب لي قيمة تكون القيمة المرجعه nan

ملاخظة يوجد معادلة موضعه على هذه الخانه

sol = df.loc[0]['sol']

وفي هذه الاسطر يرجع لي النتيجة مثل ماهي في excel

num1 = df.loc[0]['number 1']
num2 = df.loc[0]['number 2']

 

  • 0
نشر

مرحبا مجددا عزوز،

بتاريخ 14 ساعات قال عزوز عزوز2:

في  في هذا السطر ... هو لا يرجع خطأ انما لا يجلب لي قيمة تكون القيمة المرجعه nan

ملاخظة يوجد معادلة موضعه على هذه الخانه


sol = df.loc[0]['sol']

وفي هذه الاسطر يرجع لي النتيجة مثل ماهي في excel


num1 = df.loc[0]['number 1']
num2 = df.loc[0]['number 2']

هل يمكنك إرفاق شيفرة الدالة كاملة مع ملف excel الذي تستخدمه.

تحياتي.

  • 0
نشر (معدل)
بتاريخ 2 ساعات قال مسعود زاهي:

مرحبا مجددا عزوز،

هل يمكنك إرفاق شيفرة الدالة كاملة مع ملف excel الذي تستخدمه.

تحياتي.

هذه الشيفرة المستخدمه

def index(request):
    wb = openpyxl.load_workbook(os.getcwd() + r'\excel\math.xlsx')
    sheet1 = wb['ورقة1']
    num1 = request.POST.get('num1')
    num2 = request.POST.get('num2')

    # save data in excel
    sheet1.cell(column=1, row=2, value=num1)
    sheet1.cell(column=2, row=2, value=num2)
    wb.save(f'{os.getcwd()}/excel/math.xlsx')
    wb.close()

    # Reading from Excel and displaying it in the browser
    df = pd.read_excel('.\excel\math.xlsx', sheet_name='ورقة1', usecols='A:L')
    number1 = df.loc[0]['number 1']
    number2 = df.loc[0]['number 2']
    sol = df.loc[0]['sol']
    context = {'num1': number1,
               'num2': number2,
               'sol': sol}

    return render(request, 'index.html', context)

هذا ملف excel 

math.xlsx

تم التعديل في بواسطة عزوز عزوز2
خطأ املائي
  • 0
نشر
بتاريخ On 5/17/2022 at 12:51 قال عزوز عزوز2:

هذه الشيفرة المستخدمه


def index(request):
    wb = openpyxl.load_workbook(os.getcwd() + r'\excel\math.xlsx')
    sheet1 = wb['ورقة1']
    num1 = request.POST.get('num1')
    num2 = request.POST.get('num2')

    # save data in excel
    sheet1.cell(column=1, row=2, value=num1)
    sheet1.cell(column=2, row=2, value=num2)
    wb.save(f'{os.getcwd()}/excel/math.xlsx')
    wb.close()

    # Reading from Excel and displaying it in the browser
    df = pd.read_excel('.\excel\math.xlsx', sheet_name='ورقة1', usecols='A:L')
    number1 = df.loc[0]['number 1']
    number2 = df.loc[0]['number 2']
    sol = df.loc[0]['sol']
    context = {'num1': number1,
               'num2': number2,
               'sol': sol}

    return render(request, 'index.html', context)

هذا ملف excel 

math.xlsx

عزوز لم أفهمك جيدًا, هل مشكلتك انك تقوم بالتعديل في الملف لكن لا يتم حفظ التغييرات ام انا فهمتك بشكلٍ خاطئ؟

  • 0
نشر
بتاريخ 1 ساعة قال شرف الدين2:

عزوز لم أفهمك جيدًا, هل مشكلتك انك تقوم بالتعديل في الملف لكن لا يتم حفظ التغييرات ام انا فهمتك بشكلٍ خاطئ؟

اخي اشرف الدين 

المشكلة هنا عند استدعاء قيمة sol لا يرجع لي القيمة الموجودة في excel انما يرجع nan او None .....

قيمة sol في الاكسيل هي الخلية C2 وقيمة هذه الخلية هو مجموع الخليتين A2 + B2

يعني لو كانت قيمة A2 = 2 وقيمة B2 = 3 ...ستكون قيمة الخلية C2 هو 5

هذه صورة ملف excel

Capture.PNG.ece2887db1919077138da18d95699753.PNG

هذه صورة للصفحة التي تجلب القيم من excel

2.PNG.16ad8405049675d74ed8252974d08cd7.PNG

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...