Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
هناك العديد من السيناريوهات الواقعية التي يحتاج فيها المطور إلى تقسيم ملف Excel واحد إلى عدة ملفات أصغر. على سبيل المثال، قد يحتوي المصنف على ورقة عمل واحدة لكل قسم، ويحتاج كل رئيس قسم إلى استلام ورقته الخاصة فقط. في حالات أخرى، قد ترغب في استخراج جدول أو كتلة بيانات معينة من ورقة عمل وإرسالها كملف مستقل عبر البريد الإلكتروني، دون الكشف عن باقي المصنف. قد تحتاج المصنفات الكبيرة الموحدة أيضًا إلى تقسيمها إلى أجزاء أصغر لتسهيل التعامل معها، أو تحميلها بشكل أسرع، أو معالجتها لاحقًا بواسطة أنظمة أخرى.
توفر Aspose.Cells طريقتين مرنتين لهذه المهمة. تتكرر الطريقة الأولى عبر كل ورقة عمل في المصنف المصدر وتنسخ محتواها إلى نسخة Workbook جديدة تمامًا، وتحفظ كل منها كملف منفصل. تركز الطريقة الثانية على نطاق خلايا محدد داخل ورقة عمل وتنسخ ذلك النطاق فقط إلى مصنف جديد. في كلتا الحالتين، التدفق العام هو نفسه: تحميل المصنف المصدر باستخدام الفئة Workbook، والوصول إلى البيانات ذات الصلة من خلال كائنات Worksheet وCells، ونقل المحتوى إلى Workbook الوجهة، ثم حفظه على القرص.
في هذا النهج، يتم فتح المصنف المصدر مرة واحدة، ثم لكل Worksheet في مجموعة worksheets الخاصة به، يتم إنشاء Workbook وجهة جديد. ثم يتم نسخ محتوى ورقة العمل المصدر إلى ورقة العمل الأولى في المصنف الوجهة، ويتم حفظ المصنف الوجهة كملف يتم اشتقاق اسمه من اسم ورقة العمل المصدر. النتيجة هي ملف إخراج واحد لكل ورقة عمل، حيث يحتوي كل ملف إخراج على بيانات ورقة مصدر واحدة.
هذه الطريقة هي الخيار الصحيح عندما تمثل كل ورقة عمل في المصنف المصدر وحدة معلومات مستقلة منطقيًا (مثل قسم، أو منطقة، أو شهر، أو خط إنتاج) وتريد تسليم أو معالجة كل وحدة بشكل مستقل.
تصف الخطوات التالية كيفية تقسيم ملف Excel عن طريق نسخ كل ورقة عمل إلى مصنف جديد:
Workbook وتمرير مسار الملف إلى منشئه.Workbook.worksheets باستخدام حلقة for بحيث تتم معالجة كل Worksheet في الملف المصدر.Workbook وجهة جديدة (مصنف فارغ) لورقة العمل الحالية.Worksheet جديدة إلى المصنف الوجهة (أو استخدم ورقة العمل الأولى الافتراضية) وعيّن لها اسمًا ذا معنى، ويفضل أن يكون نفس خاصية name لورقة العمل المصدر.Cells الخاصة بورقة العمل المصدر وكتابة قيمها في الخلايا المقابلة في ورقة العمل الوجهة، أو باستخدام طريقة Cells.copy لنقل نطاق كامل دفعة واحدة.dataDir + worksheet.name + ".xls") بحيث يكون لكل ملف منشأ اسم فريد.Workbook.save الخاصة بالوجهة لكتابة الملف على القرص.import aspose.cells as ac
import os
data_dir = "data/"
workbook = ac.Workbook(data_dir + "book1.xls")
for i in range(workbook.worksheets.count):
source_sheet = workbook.worksheets[i]
sheet_name = source_sheet.name
dest_workbook = ac.Workbook()
dest_index = dest_workbook.worksheets.add()
dest_sheet = dest_workbook.worksheets[dest_index]
dest_sheet.name = sheet_name
dest_sheet.copy(source_sheet)
dest_file = data_dir + sheet_name + ".xls"
dest_workbook.save(dest_file, ac.SaveFormat.EXCEL97_TO_2003)
الناتج المتوقع هو مجموعة من الملفات الجديدة في دليل البيانات، ملف واحد لكل ورقة عمل من المصنف المصدر. كل ملف مسمى باسم ورقة المصدر المقابلة له، ويحتوي الملف على البيانات (وبشكل اختياري التنسيق) لتلك الورقة الواحدة.
في بعض الأحيان، لا تتوافق البيانات التي تحتاج إلى تقسيمها مع ورقة عمل بأكملها، بل مع منطقة مستطيلة محددة من ورقة عمل، مثل A1:D10 أو نطاق مسمى يمثل جدولًا معينًا. في هذه الحالات، يكون نسخ أوراق العمل بالكامل مضيعة، وهناك حاجة إلى نهج أكثر دقة: تحديد النطاق المصدر، ونسخ ذلك النطاق فقط إلى مصنف جديد، وحفظ الملف الجديد.
هذا النهج مثالي عندما تريد استخراج جدول واحد، أو كتلة تقرير، أو منطقة بيانات من ورقة عمل أكبر مع تجاهل جميع المحتويات غير ذات الصلة. وهو مفيد أيضًا لتصدير المناطق المحددة من قبل المستخدم من ورقة كملفات مستقلة.
تصف الخطوات التالية كيفية تقسيم ملف Excel عن طريق نسخ نطاق محدد إلى مصنف جديد:
Workbook مع مسار الملف.Worksheet الهدف الذي يحتوي على النطاق الذي تريد نسخه، إما عن طريق الفهرس (على سبيل المثال، الورقة الأولى) أو بالاسم من مجموعة worksheets.A1:C10، أو نطاقًا مسمى تم الحصول عليه من خلال مجموعة Worksheet.cells، أو نطاقًا تم إنشاؤه عبر Worksheet.cells.create_range.Workbook وجهة جديدة.Worksheet الأولى في المصنف الوجهة (الورقة الافتراضية).A1. يمكن استخدام طريقة Cells.copy على مجموعة Cells الوجهة لنسخ نطاق كامل، أو يمكنك التكرار عبر خلايا النطاق المصدر وكتابة قيمها في خلايا الوجهة باستخدام put_value. يمكن توفير CopyOptions اختيارية للتحكم في ما يتم نقله (القيم فقط، القيم والأنماط، الصيغ، وما إلى ذلك).Workbook.save.import aspose.cells as ac
import os
# تحديد دليل البيانات ومسارات الملفات
dataDir = "data/"
sourcePath = os.path.join(dataDir, "book1.xls")
outputPath = os.path.join(dataDir, "outputrange.xls")
# فتح ملف Excel المصدر
sourceWorkbook = ac.Workbook(sourcePath)
# الحصول على ورقة العمل الأولى من المصنف المصدر
sourceWorksheet = sourceWorkbook.worksheets[0]
# تحديد نطاق الخلايا المصدر A1:C10 (10 صفوف، 3 أعمدة تبدأ من الصف 0 والعمود 0)
sourceRange = sourceWorksheet.cells.create_range(0, 0, 10, 3)
# إنشاء مصنف وجهة جديد
destWorkbook = ac.Workbook()
# الوصول إلى ورقة العمل الأولى في مصنف الوجهة
destWorksheet = destWorkbook.worksheets[0]
# إنشاء نطاق الوجهة في A1 بنفس أبعاد النطاق المصدر
destRange = destWorksheet.cells.create_range(0, 0, 10, 3)
# نسخ النطاق المصدر إلى نطاق الوجهة
destRange.copy(sourceRange)
# حفظ مصنف الوجهة في ملف .xls جديد
destWorkbook.save(outputPath, ac.SaveFormat.EXCEL97_TO2003)
الناتج المتوقع هو ملف جديد واحد في دليل البيانات يحتوي فقط على القيم (وبشكل اختياري التنسيق) للنطاق المحدد المستخرج من المصنف المصدر. ملف الوجهة لا تربطه علاقة بأي بيانات أخرى في الملف المصدر؛ فهو يحتوي فقط على النطاق المستخرج، بدءًا من الخلية A1 في ورقة العمل الأولى الخاصة به.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.