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

الربط بين مكتبتين pandas و openpyxl

Ahmed Ahmed64

السؤال

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

سؤال وأرجو التوضيح عليه ولو بشيء مبسط

سؤال كالتالي:

لقد قمت بإنشاء ملف إكسيل من خلال DataFrame ولقد استخدمت مكتبة pandas في هذا

أحتاج إلى كود يقوم بتنسيق شكل الأعمدة كا حجم العمود ولون الخلايا وهكذا مثلاً

أعلم أن مكتبة openpyxl مرنة أكثر في التنسيق 

هل يمكن القيام بذلك من خلال مكتبة pandas إذا كان الجواب لا

كيف أقوم بربط pandas مع openpyxl أي مثلا كيف أتعامل مع اسم ورقة العمل تم جلبها بمكتبة pandas لأشاركها مع مكتبة openpyxl لأقوم بالتنسيق عليها

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

Recommended Posts

  • 0

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

هذا سؤال جيد، سأعطيك بعض الإرشادات التي تساعدك في مهمتك، وكذلك تنمية مهارات التعلم الذاتي،

1- قم بقراءة ملف الإكسيل بواسطة مكتبة pandas ووضعه داخل DataFram

2- قم بإنشاء كائن باستخدام مكتبة openpyxl

# إنشاء كائن ExcelWriter باستخدام محرك openpyxl
writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')

مع تعديل اسم الملف

3- قم بقراءة workbook, worksheet من الكائن writer

4- قم بعمل التنسيقات المطلوبة

5- قم بحفظ الكائن writer

 

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

  • 0
بتاريخ 14 دقائق مضت قال El Sayed El Tohamy:

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

هذا سؤال جيد، سأعطيك بعض الإرشادات التي تساعدك في مهمتك، وكذلك تنمية مهارات التعلم الذاتي،

1- قم بقراءة ملف الإكسيل بواسطة مكتبة pandas ووضعه داخل DataFram

2- قم بإنشاء كائن باستخدام مكتبة openpyxl

# إنشاء كائن ExcelWriter باستخدام محرك openpyxl
writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')

مع تعديل اسم الملف

3- قم بقراءة workbook, worksheet من الكائن writer

4- قم بعمل التنسيقات المطلوبة

5- قم بحفظ الكائن writer

 

أستاذي لم أفهم الفكرة جيداً

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

self.DF.to_excel("SAVE1.xlsx",index=False)

والذي يقوم بعملية الحفظ باستخدام

أريد إدخال openpyxl على الكود للقيام بتنسيق الجدول

علما أن الكود من البداية كان من خلال مكتبة pandas أي تم قرأه الملف باستخدام pandas تمت العمليات كذلك باستخدام pandas

 

تم التعديل في بواسطة Ahmed Ahmed64
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

من الواضح أنك أنجزت الخطوة الأولى وهي الحصول على DataFrame اسمه DF

إذن تحتاج لتنفيذ الخطوة الثانية مع تغيير الاسم 'test.xlsx' إلى الاسم المناسب.

ولاحظ أننا في النهاية سنقوم بالحفظ عن طريق الكائن writer وليس DF

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

  • 0
بتاريخ 12 دقائق مضت قال El Sayed El Tohamy:

من الواضح أنك أنجزت الخطوة الأولى وهي الحصول على DataFrame اسمه DF

إذن تحتاج لتنفيذ الخطوة الثانية مع تغيير الاسم 'test.xlsx' إلى الاسم المناسب.

ولاحظ أننا في النهاية سنقوم بالحفظ عن طريق الكائن writer وليس DF

أسف على الأطالة أستاذي ولاكن إختلط علي الأمر

توضيح أكثر

أستاذي لم أفهم الفكرة جيداً

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

self.DF.to_excel("SAVE1.xlsx",index=False)

والذي يقوم بعملية الحفظ باستخدام

أريد إدخال openpyxl على الكود للقيام بتنسيق الجدول

علما أن الكود من البداية كان من خلال مكتبة pandas أي تم قرأه الملف باستخدام pandas تمت العمليات كذلك باستخدام pandas

هل تقصد الحفظ هكذا

self.DF  = pd.ExcelWriter('test.xlsx', engine='openpyxl')

إذا كان هكذا فعند فتح ملف الإكسيل تظهر رسالة بأن الملف تالف

تم التعديل في بواسطة Ahmed Ahmed64
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

إليك بعض الشيفرات التي تساعدك في إنجاز مهتمك

# استيراد المكتبات اللازمة
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment


# إنشاء كائن ExcelWriter باستخدام محرك openpyxl
writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')

# حفظ DataFrame كملف إكسيل باستخدام الكائن ExcelWriter
DF.to_excel(writer, sheet_name='Sheet1', index=False)

# الحصول على كائن workbook من الكائن ExcelWriter
wb = writer.book

# الحصول على كائن worksheet من الكائن workbook
ws = wb['Sheet1']

data_font = Font(size=10, color='000000')

for row in ws.iter_rows():
  for cell in row:
    cell.font = data_font


# حفظ الكائن ExcelWriter لتطبيق التغييرات على الملف
writer.save()

لاحظ أننا أنشأنا كائن writer ثم قمنا بحفظ بيانات DF في ملف إكسيل جديد، ثم حصلنا على كائن workbook أسميناه wb، ثم أنشأنا كائن ws، ثم بدأنا في تطبيق التصميم المطلوب، وبالآخر الحفظ باستخدام writer

 

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

  • 0
بتاريخ 19 دقائق مضت قال El Sayed El Tohamy:

إليك بعض الشيفرات التي تساعدك في إنجاز مهتمك

# استيراد المكتبات اللازمة
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment


# إنشاء كائن ExcelWriter باستخدام محرك openpyxl
writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')

# حفظ DataFrame كملف إكسيل باستخدام الكائن ExcelWriter
DF.to_excel(writer, sheet_name='Sheet1', index=False)

# الحصول على كائن workbook من الكائن ExcelWriter
wb = writer.book

# الحصول على كائن worksheet من الكائن workbook
ws = wb['Sheet1']

data_font = Font(size=10, color='000000')

for row in ws.iter_rows():
  for cell in row:
    cell.font = data_font


# حفظ الكائن ExcelWriter لتطبيق التغييرات على الملف
writer.save()

لاحظ أننا أنشأنا كائن writer ثم قمنا بحفظ بيانات DF في ملف إكسيل جديد، ثم حصلنا على كائن workbook أسميناه wb، ثم أنشأنا كائن ws، ثم بدأنا في تطبيق التصميم المطلوب، وبالآخر الحفظ باستخدام writer

 

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

import pandas as pd
from openpyxl import load_workbook

df = pd.read_excel('test.xlsx',sheet_name="sh1",header=None, engine='openpyxl')
data = {'الإسم الأول': df.iloc[1::, 0] ,'إسم الأب': df.iloc[1::, 1],'أسم العائلة': df.iloc[1::, 2]}
df = pd.DataFrame.from_dict(data)

df.to_excel("op1.xlsx",index=False)

 

هل الشفرة تكون بهذه الكيفية 

import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment

df = pd.read_excel('test.xlsx',sheet_name="sh1",header=None, engine='openpyxl')
data = {'الإسم الأول': df.iloc[1::, 0] ,'إسم الأب': df.iloc[1::, 1],'أسم العائلة': df.iloc[1::, 2]}
df = pd.DataFrame.from_dict(data)
writer = pd.ExcelWriter('test2.xlsx', engine='openpyxl')
df.to_excel(writer, sheet_name='Sheet1', index=False)
wb = writer.book
ws = wb['Sheet1']
data_font = Font(size=10, color='000000')

for row in ws.iter_rows():
  for cell in row:
    cell.font = data_font
writer.save()

 

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

  • 0
بتاريخ 36 دقائق مضت قال Ahmed Ahmed64:

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

احذف السطر الأخير واكتب الشيفرات التي أرسلتها لك بدلاً منه مع استبدال DF بالاسم الموجود لديك وهو df

import pandas as pd
from openpyxl import load_workbook

df = pd.read_excel('test.xlsx',sheet_name="sh1",header=None, engine='openpyxl')
data = {'الإسم الأول': df.iloc[1::, 0] ,'إسم الأب': df.iloc[1::, 1],'أسم العائلة': df.iloc[1::, 2]}
df = pd.DataFrame.from_dict(data)

# df.to_excel("op1.xlsx",index=False)
# اكتب الشيفرات هنا ولا تنس استيراد المكتبات

 

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

  • 0
بتاريخ 2 دقائق مضت قال El Sayed El Tohamy:

احذف السطر الأخير واكتب الشيفرات التي أرسلتها لك بدلاً منه مع استبدال DF بالاسم الموجود لديك وهو df

import pandas as pd
from openpyxl import load_workbook

df = pd.read_excel('test.xlsx',sheet_name="sh1",header=None, engine='openpyxl')
data = {'الإسم الأول': df.iloc[1::, 0] ,'إسم الأب': df.iloc[1::, 1],'أسم العائلة': df.iloc[1::, 2]}
df = pd.DataFrame.from_dict(data)

# df.to_excel("op1.xlsx",index=False)
# اكتب الشيفرات هنا ولا تنس استيراد المكتبات

 

نعم أستاذي هذا ما فعلته لقد أرسلت لك الكود في السابق لتصحيحه لي

import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill, Border, Side, Alignment

df = pd.read_excel('test.xlsx',sheet_name="sh1",header=None, engine='openpyxl')
data = {'الإسم الأول': df.iloc[1::, 0] ,'إسم الأب': df.iloc[1::, 1],'أسم العائلة': df.iloc[1::, 2]}
df = pd.DataFrame.from_dict(data)
writer = pd.ExcelWriter('test2.xlsx', engine='openpyxl')
df.to_excel(writer, sheet_name='Sheet1', index=False)
wb = writer.book
ws = wb['Sheet1']
data_font = Font(size=10, color='000000')

for row in ws.iter_rows():
  for cell in row:
    cell.font = data_font
writer.save()

 

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

  • 0
بتاريخ 4 دقائق مضت قال El Sayed El Tohamy:

أحييك على مجهودك وصبرك، وهذا هو حال تطوير البرمجيات يحتاج صبرًا هائلًا،

هل الشيفرات تعمل أم تعطي لديك خطأً؟

نعم لدي خطأ فيما يخص أخر سطر 

AttributeError: 'OpenpyxlWriter' object has no attribute 'save'. Did you mean: '_save'?

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

  • 0
بتاريخ 2 دقائق مضت قال Ahmed Ahmed64:

AttributeError: 'OpenpyxlWriter' object has no attribute 'save'. Did you mean: '_save

يبدو أنك تستخدم إصدارًا قديمًا من مكتبة pandas، قم بتحديثها، أو يمكنك استخدام أمر الإغلاق بدلاً من الحفظ

writer.close()

 

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

  • 0
بتاريخ 36 دقائق مضت قال El Sayed El Tohamy:

يبدو أنك تستخدم إصدارًا قديمًا من مكتبة pandas، قم بتحديثها، أو يمكنك استخدام أمر الإغلاق بدلاً من الحفظ

writer.close()

 

شكرا جزيلا على لطفك ودعمك ,,, أشكرك كل الشكر

                                       عفوا أستاذي سؤال أخر لو تكرمت بحثت ولم أجد إجابة له

في برنامج Microsoft Office Excel هناك خيار داخل تبويب تخطيط الصفحة خاص بقلب ورقة العمل من اليمين لليسار

كيف أنفذ هذا باستخدام مكتبة Openpyxl

 

تم التعديل في بواسطة Ahmed Ahmed64
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 49 دقائق مضت قال Ahmed Ahmed64:

في برنامج Microsoft Office Excel هناك خيار داخل تبويب تخطيط الصفحة خاص بقلب ورقة العمل من اليمين لليسار

كيف أنفذ هذا باستخدام مكتبة Openpyxl

هل بحثت عن

using Openpyxl, change excel direction from left to right

 

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...