Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Es gibt viele reale Szenarien, in denen ein Entwickler eine einzelne Excel‑Datei in mehrere kleinere Dateien aufteilen muss. Beispielsweise kann eine Arbeitsmappe ein Arbeitsblatt pro Abteilung enthalten, und jede Abteilungsleitung muss nur ihr eigenes Blatt erhalten. In anderen Fällen möchte man eine bestimmte Tabelle oder einen Datenblock aus einem Arbeitsblatt extrahieren und als eigenständige Datei per E‑Mail versenden, ohne den Rest der Arbeitsmappe offenzulegen. Große konsolidierte Arbeitsmappen müssen ebenfalls in kleinere Teile aufgeteilt werden, um die Handhabung zu erleichtern, das Laden zu beschleunigen oder die Weiterverarbeitung durch andere Systeme zu ermöglichen.
Aspose.Cells for JavaScript via C++ bietet zwei flexible Ansätze für diese Aufgabe. Der erste Ansatz iteriert durch jedes Arbeitsblatt der Quellarbeitsmappe und kopiert dessen Inhalt in eine brandneue Workbook‑Instanz, wobei jede als separate Datei gespeichert wird. Der zweite Ansatz konzentriert sich auf einen bestimmten Zellbereich innerhalb eines Arbeitsblatts und kopiert nur diesen Bereich in eine neue Arbeitsmappe. In beiden Fällen ist der allgemeine Ablauf derselbe: Laden der Quellarbeitsmappe mithilfe der Workbook‑Klasse, Zugriff auf die relevanten Daten über die Worksheet‑ und Cells‑Objekte, Übertragen des Inhalts in eine Ziel‑Workbook und anschließendes Speichern der Zielarbeitsmappe auf dem Datenträger.
In diesem Ansatz wird die Quellarbeitsmappe einmal geöffnet und anschließend für jedes Worksheet in deren Worksheets‑Sammlung eine neue Ziel‑Workbook‑Instanz erstellt. Der Inhalt des Quellarbeitsblatts wird in das erste Arbeitsblatt der Zielarbeitsmappe kopiert und die Zielarbeitsmappe wird unter einem Namen gespeichert, der vom Namen des Quellarbeitsblatts abgeleitet ist. Das Ergebnis ist eine Ausgabedatei pro Arbeitsblatt, wobei jede Ausgabedatei die Daten eines einzelnen Quellblatts enthält.
Diese Methode ist die richtige Wahl, wenn jedes Arbeitsblatt Ihrer Quellarbeitsmappe eine logisch unabhängige Informationseinheit darstellt (z. B. eine Abteilung, Region, Monat oder Produktlinie) und Sie jede Einheit separat bereitstellen oder verarbeiten möchten.
Die folgenden Schritte beschreiben, wie man eine Excel‑Datei durch Kopieren jedes Arbeitsblatts in eine neue Arbeitsmappe aufteilt:
Workbook‑Objekt instanziieren und den Dateipfad an dessen Konstruktor übergeben.Workbook.Worksheets‑Sammlung mit einer for‑ oder for...of‑Schleife, sodass jedes Worksheet in der Quelldatei verarbeitet wird.Workbook‑Instanz (eine leere Arbeitsmappe) für das aktuelle Arbeitsblatt.Cells‑Sammlung des Quellarbeitsblatts iterieren und deren Werte in die entsprechenden Zellen des Zielarbeitsblatts schreiben, oder indem Sie die Methode Cells.Copy verwenden, um einen gesamten Bereich auf einmal zu übertragen.dataDir + worksheet.Name + ".xls"), sodass jede erzeugte Datei einen eindeutigen Namen hat.Workbook.Save der Zielarbeitsmappe auf, um die Datei auf dem Datenträger zu schreiben.<!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>
Die erwartete Ausgabe ist ein Satz neuer Dateien im Datenverzeichnis, eine Datei pro Arbeitsblatt der Quellarbeitsmappe. Jede Datei wird nach dem entsprechenden Quellblatt benannt und enthält die Daten (und optional die Formatierung) dieses einzelnen Blatts.
Manchmal entspricht der zu trennende Datenumfang nicht einem gesamten Arbeitsblatt, sondern einer bestimmten rechteckigen Region eines Arbeitsblatts, z. B. A1:D10 oder einem benannten Bereich, der eine bestimmte Tabelle darstellt. In solchen Fällen ist das Kopieren ganzer Arbeitsblätter verschwenderisch, und ein präziserer Ansatz ist erforderlich: den Quellbereich identifizieren, nur diesen Bereich in eine neue Arbeitsmappe kopieren und die neue Datei speichern.
Dieser Ansatz ist ideal, wenn Sie eine einzelne Tabelle, einen Berichtblock oder ein Datenfeld aus einem größeren Arbeitsblatt extrahieren und dabei allen nicht relevanten Inhalt verwerfen möchten. Er ist auch nützlich, um vom Benutzer ausgewählte Bereiche eines Blatts als eigenständige Dateien zu exportieren.
Die folgenden Schritte beschreiben, wie man eine Excel‑Datei durch Kopieren eines bestimmten Bereichs in eine neue Arbeitsmappe aufteilt:
Workbook‑Objekt mit dem Dateipfad instanziieren.Worksheet ab, das den zu kopierenden Bereich enthält, entweder über den Index (z. B. das erste Blatt) oder über den Namen aus der Worksheets‑Sammlung.A1:C10 sein, ein benannter Bereich, der über die Worksheet.Cells‑Sammlung erhalten wird, oder ein Bereich, der über Worksheet.Cells.CreateRange erstellt wird.Workbook‑Instanz.Worksheet der Zielarbeitsmappe zu (das Standardsheet).A1. Die Methode Cells.Copy der Ziel‑Cells‑Sammlung kann verwendet werden, um einen gesamten Bereich zu kopieren, oder Sie können die Zellen des Quellbereichs iterieren und deren Werte mit PutValue in die Zielzellen schreiben. Optional können CopyOptions angegeben werden, um zu steuern, was übernommen wird (nur Werte, Werte + Stile, Formeln usw.).Workbook.Save unter einem neuen Dateipfad auf dem Datenträger.Die erwartete Ausgabe ist eine einzelne neue Datei im Datenverzeichnis, die nur die Werte (und optional die Formatierung) des angegebenen, aus der Quellarbeitsmappe extrahierten Bereichs enthält. Die Zieldatei steht in keinem Zusammenhang zu anderen Daten in der Quelldatei; sie enthält ausschließlich den extrahierten Bereich, beginnend bei Zelle A1 ihres ersten Arbeitsblatts.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.