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

السؤال

نشر

انا استخدمت مكتبة 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
نشر
  بتاريخ On 18‏/5‏/2022 at 13:52 قال عزوز عزوز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
نشر
  بتاريخ On 16‏/5‏/2022 at 15:02 قال مسعود زاهي:

مرحبا عزوز،

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

تحياتي.

أظهر المزيد  

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

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

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

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

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

 

  • 0
نشر

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

  بتاريخ On 16‏/5‏/2022 at 18:05 قال عزوز عزوز2:

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

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

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

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

num1 = df.loc[0]['number 1']
num2 = df.loc[0]['number 2']
أظهر المزيد  

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

تحياتي.

  • 0
نشر (معدل)
  بتاريخ On 17‏/5‏/2022 at 08:40 قال مسعود زاهي:

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

هل يمكنك إرفاق شيفرة الدالة كاملة مع ملف 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.xlsxFetching info...

تم التعديل في بواسطة عزوز عزوز2
خطأ املائي
  • 0
نشر
  بتاريخ On 17‏/5‏/2022 at 10: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.xlsxFetching info...

أظهر المزيد  

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

  • 0
نشر
  بتاريخ On 18‏/5‏/2022 at 11:56 قال شرف الدين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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...