Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
هناك العديد من السيناريوهات الواقعية حيث يحتاج المطور إلى تقسيم ملف Excel واحد إلى عدة ملفات أصغر. على سبيل المثال، قد يحتوي المصنف على ورقة عمل واحدة لكل قسم، ويحتاج كل رئيس قسم إلى استلام ورقته فقط. في حالات أخرى، قد ترغب في استخراج جدول أو كتلة بيانات معينة من ورقة عمل وإرسالها كملف مستقل عبر البريد الإلكتروني دون الكشف عن باقي المصنف. قد تحتاج المصنفات الكبيرة المجمعة أيضًا إلى تقسيم إلى أجزاء أصغر لتسهيل المعالجة، تسريع التحميل، أو المعالجة اللاحقة بواسطة أنظمة أخرى.
Aspose.Cells for JavaScript via C++ يوفر طريقتين مرنتين لهذه المهمة. الطريقة الأولى تقوم بالتكرار عبر كل ورقة عمل في المصنف المصدر وتنسخ محتواها إلى نسخة جديدة تمامًا من فئة Workbook، مع حفظ كل واحدة كملف منفصل. الطريقة الثانية تركز على نطاق خلايا محدد داخل ورقة عمل وتنسخ ذلك النطاق فقط إلى مصنف جديد. في الحالتين، سير العمل العام هو نفسه: تحميل المصنف المصدر باستخدام فئة Workbook، الوصول إلى البيانات ذات الصلة عبر كائنات Worksheet وCells، نقل المحتوى إلى مصنف الوجهة Workbook، ثم حفظ الوجهة على القرص.
في هذا النهج، يتم فتح المصنف المصدر مرة واحدة، ثم لكل Worksheet في مجموعة Worksheets الخاصة به، يتم إنشاء Workbook وجهة جديد. يتم بعد ذلك نسخ محتوى ورقة العمل المصدر إلى ورقة العمل الأولى في المصنف الوجهة، ويُحفظ المصنف الوجهة كملف يُستمد اسمه من اسم ورقة العمل المصدر. النتيجة هي ملف إخراج واحد لكل ورقة عمل، بحيث يحتوي كل ملف على بيانات ورقة المصدر الواحدة.
هذه الطريقة هي الاختيار المناسب عندما تمثل كل ورقة عمل في المصنف المصدر وحدة معلومات مستقلة منطقياً (مثل قسم، منطقة، شهر، أو خط إنتاج) وتريد تسليم أو معالجة كل وحدة على حدة.
Workbook وتمرير مسار الملف إلى المُنشئ الخاص به.Workbook.Worksheets باستخدام حلقة for أو for...of بحيث يتم معالجة كل Worksheet في الملف المصدر.Workbook جديد للوجهة (مصنف فارغ) للورقة الحالية.Cells الخاصة بورقة العمل المصدر وكتابة قيمها في الخلايا المقابلة في ورقة العمل الوجهة، أو باستخدام طريقة Cells.Copy لنقل نطاق كامل مرة واحدة.dataDir + worksheet.Name + ".xls" ) لضمان أن يكون لكل ملف مُولد اسم فريد.Workbook.Save للمصنف الوجهة لكتابة الملف إلى القرص.<!DOCTYPE html>
<html>
<head>
<title>Aspose.Cells Example</title>
</head>
<body>
<h1>Aspose.Cells Example</h1>
<input type="file" id="fileInput" accept=".xls" />
<button id="runExample">Run Example</button>
<div id="result"></div>
<script src="aspose.cells.js.min.js"></script>
<script type="text/javascript">
const { Workbook } = AsposeCells;
const readyPromise = AsposeCells.onReady({
license: "/lic/aspose.cells.enc",
fontPath: "/fonts/",
fontList: ["arial.ttf", "NotoSansSC-Regular.ttf"]
});
document.getElementById('runExample').addEventListener('click', async () => {
const result = document.getElementById('result');
try {
const fileInput = document.getElementById('fileInput');
const file = fileInput.files[0];
if (!file) {
result.innerHTML = '<p style="color: red;">Please select an .xls file.</p>';
return;
}
result.innerHTML = '<p>Processing...</p>';
const workbook = new Workbook(new Uint8Array(await file.arrayBuffer()));
const downloadLinks = document.createElement('div');
for (let i = 0; i < workbook.worksheets.count; i++) {
const sourceSheet = workbook.worksheets.get(i);
const sheetName = sourceSheet.name;
const destWorkbook = new Workbook();
const destIndex = destWorkbook.worksheets.add();
const destSheet = destWorkbook.worksheets.get(destIndex);
destSheet.name = sheetName;
destSheet.copy(sourceSheet);
const outputData = destWorkbook.save(AsposeCells.SaveFormat.Excel97To2003);
const blob = new Blob([outputData], { type: "application/vnd.ms-excel" });
const downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = `${sheetName}.xls`;
downloadLink.textContent = `Download ${sheetName}.xls`;
downloadLink.style.display = 'block';
downloadLink.style.marginTop = '8px';
downloadLinks.appendChild(downloadLink);
}
result.innerHTML = '<p style="color: green;">Done! Click a download link to get the result file.</p>';
result.appendChild(downloadLinks);
} catch (error) {
console.error(error);
const errorMessage = document.createElement('p');
errorMessage.style.color = 'red';
errorMessage.textContent = `Error: ${error instanceof Error ? error.message : error}`;
result.replaceChildren(errorMessage);
}
});
</script>
</body>
</html>
النتيجة المتوقعة هي مجموعة من الملفات الجديدة في دليل البيانات، ملف واحد لكل ورقة عمل من المصنف المصدر. كل ملف يُسمّى باسم ورقة المصدر المقابلة، ويحتوي على البيانات (وبإمكانك إضافة التنسيق إذا رغبت) لتلك الورقة الوحيدة.
في بعض الأحيان لا يتطابق البيانات التي تحتاج إلى تقسيمها مع ورقة عمل كاملة، بل مع منطقة مستطيلة محددة داخل ورقة العمل، مثل A1:D10 أو نطاق مسمى يمثل جدولًا معينًا. في هذه الحالات، يكون نسخ أوراق العمل بالكامل إهدارًا، ويتطلب نهجًا أكثر دقة: تحديد النطاق المصدر، نسخ ذلك النطاق فقط إلى مصنف جديد، وحفظ الملف الجديد.
هذا النهج مثالي عندما تريد استخراج جدول واحد، أو كتلة تقرير، أو منطقة بيانات من ورقة عمل أكبر مع حذف كل المحتوى غير المتعلق. كما أنه مفيد لتصدير المناطق التي يحددها المستخدم من ورقة كملفات مستقلة.
Workbook مع مسار الملف.Worksheet المستهدف الذي يحتوي على النطاق الذي تريد نسخه، إما عبر الفهرس (مثال: الورقة الأولى) أو عبر الاسم من مجموعة Worksheets.A1:C10، أو نطاقًا مسمى يتم الحصول عليه عبر مجموعة Worksheet.Cells، أو نطاقًا تم إنشاؤه عبر Worksheet.Cells.CreateRange.Workbook جديد للوجهة.Worksheet في المصنف الوجهة (الورقة الافتراضية).A1. يمكن استخدام طريقة Cells.Copy على مجموعة Cells الخاصة بالوجهة لنسخ نطاق كامل، أو يمكنك تكرار خلايا النطاق المصدر وكتابة قيمها في خلايا الوجهة باستخدام PutValue. يمكن توفير CopyOptions اختيارية للتحكم فيما يتم نقله (قيم فقط، قيم وتنسيقات، صيغ، وما إلى ذلك).Workbook.Save.النتيجة المتوقعة هي ملف جديد واحد في دليل البيانات يحتوي فقط على القيم (وبإمكانك إضافة التنسيق إذا رغبت) للنطاق المحدد المستخرج من المصنف المصدر. لا يرتبط ملف الوجهة بأي بيانات أخرى في الملف المصدر؛ فهو يحتوي فقط على النطاق المستخرج، بدءًا من الخلية A1 في أول ورقة عمل له.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.