ONLYOFFICE-Makro zum Kopieren von Tabellenkalkulationen

9 November 2023By Vlad

Die Bearbeitung von Tabellenkalkulationen kann schwierig sein, vor allem, wenn Sie mehrere Tabellenkalkulationen mit ähnlichen Daten bearbeiten. Um Ihnen die Arbeit zu erleichtern, erstellen wir ein Makro, das Daten von einem Arbeitsblatt in ein anderes kopiert und Ihnen hilft, große Arbeitsblätter einfach zu bearbeiten.

Use ONLYOFFICE macro to copy spreadsheets

Erstellung des Makros

Zunächst greifen wir auf das aktuelle Blatt im Editor zu. Dann greifen wir auf das Blatt zu, in das wir mit der Variable pastesheet kopieren wollen, gefolgt von der Variable oRange, die den Bereich angibt, den wir bearbeiten wollen.

  const oWorksheet = Api.GetActiveSheet();
  const pastesheet = Api.GetSheet("Sheet2");
  const oRange = oWorksheet.GetRange("A1:C10");
  // If you want to copy a specific Selection to the new sheet
  // var oRange = oWorksheet.GetSelection();

Hinweis: Wenn Sie mit einer Auswahl arbeiten möchten, verwenden Sie stattdessen die Methode GetSelection(), indem Sie die obige Zeile auskommentieren.

Als nächstes verwenden wir die ForEach-Methode für den angegebenen Bereich, um jede Zelle im Bereich zu durchlaufen.

oRange.ForEach(function (range) {

Durch die Verwendung des Parameters range in der Callback-Funktion erhalten wir Zugriff auf die Daten jeder Zelle, beginnend mit der ersten Zelle.

  const oValue = range.GetValue();
  const oCharacters = range.GetCharacters(0, 2);
  const oFont = oCharacters.GetFont();
  const fontName = oFont.GetName();
  const oSize = oFont.GetSize();
  const isBold = oFont.GetBold();
  const isItalic = oFont.GetItalic();

In der ForEach-Methode extrahieren wir zunächst den Wert der Zelle. Als Nächstes extrahieren wir die Anfangszeichen des Wertes, um seine Parameter wie Fettdruck, Kursivschrift usw. zu kennen. Dann erhalten wir den FontName, gefolgt von der Schriftgröße, um sie in das neue Blatt zu implementieren.

if (oValue === null || oValue === "") {
      pastesheet.GetRange(range).SetValue(" ");
    }

Bevor die Werte in das neue Blatt eingefügt werden, führen wir einige Überprüfungen mit if else-Schleifen durch, um sicherzustellen, dass leere Zellen im neuen Blatt korrekt dargestellt werden, wie oben gezeigt.

else {
      oFont.SetName(fontName);
      pastesheet.GetRange(range).SetValue(oValue);
      pastesheet.GetRange(range).SetFontName(fontName);
      pastesheet.GetRange(range).SetFontSize(oSize);
      oWorksheet.GetRange(range).AutoFit(false, true);
      if (isBold) {
        pastesheet.GetRange(range).SetBold(true);
      }
      if (isItalic) {
        pastesheet.GetRange(range).SetItalic(true);
      }
    }

In der else-Schleife schließlich werden die Werte in die entsprechenden Zellen eingetragen und diesen Zellen dann Eigenschaften wie Fettdruck, Kursivschrift, Schriftart und Schriftgröße zugewiesen.

Das ganze Makro

Hier ist der gesamte Makrocode:

(function () {
  const oWorksheet = Api.GetActiveSheet();
  const pastesheet = Api.GetSheet("Sheet2");
  const oRange = oWorksheet.GetRange("A1:C10");

  // If you want to copy a specific Selection to the new sheet
  // var oRange = oWorksheet.GetSelection();

  oRange.ForEach(function (range) {
    const oValue = range.GetValue();
    const oCharacters = range.GetCharacters(0, 2);
    const oFont = oCharacters.GetFont();
    const fontName = oFont.GetName();
    const oSize = oFont.GetSize();
    const isBold = oFont.GetBold();
    const isItalic = oFont.GetItalic();
    if (oValue === null || oValue === "") {
      pastesheet.GetRange(range).SetValue(" ");
    } else {
      oFont.SetName(fontName);
      pastesheet.GetRange(range).SetValue(oValue);
      pastesheet.GetRange(range).SetFontName(fontName);
      pastesheet.GetRange(range).SetFontSize(oSize);
      oWorksheet.GetRange(range).AutoFit(false, true);

      if (isBold) {
        pastesheet.GetRange(range).SetBold(true);
      }
      if (isItalic) {
        pastesheet.GetRange(range).SetItalic(true);
      }
    }
  });
})();

Einige wichtige Punkte sind zu beachten:

  1. Stellen Sie sicher, dass der Blattname, den Sie im Makro angeben, existiert und vorzugsweise ein leeres Blatt ist.
  2. Stellen Sie sicher, dass Sie das Makro vom Hauptblatt (dem übergeordneten Blatt) aus ausführen und nicht vom neu erstellten Blatt.

Starten wir unser Makro und sehen wir, wie es funktioniert!

Hier ist ein weiteres Beispiel für die Arbeit des Makros mit der Methode GetSelection():

Wir hoffen, dass das Makro ein großartiges Werkzeug für Ihre täglichen Aufgaben bei der Bearbeitung von Tabellenkalkulationen sein wird!

Verpassen Sie nicht die Chance, die Leistungsfähigkeit der ONLYOFFICE API zu nutzen. Unsere umfangreiche Bibliothek von API-Methoden ist Ihr Schlüssel, um Ihre Ideen in die Realität umzusetzen. Wenn Sie Fragen oder innovative Konzepte haben, können Sie uns diese gerne mitteilen. Ihre Vorschläge sind uns sehr wichtig, und wir freuen uns über die Möglichkeit der Zusammenarbeit mit Ihnen. Viel Erfolg!