Inhalte

# Dienst SFDocuments.Calc

Die gemeinsam genutzte Bibliothek SFDocuments bietet eine Reihe von Methoden und Eigenschaften, um die Verwaltung und Handhabung von LibreOffice-Dokumenten zu erleichtern.

Der Dienst SFDocuments.Calc ist eine Unterklasse de Dienstes SFDocuments.Document. Auf alle für den Dienst Document definierten Methoden und Eigenschaften kann auch über eine Dienstinstanz Calc zugegriffen werden.

Der Dienst Calc konzentriert sich auf:

- Umgang mit Tabellen in einem Calc-Dokument (Kopieren, Einfügen, Verschieben, …)

- Datenaustausch zwischen Basic-Datenstrukturen und Calc-Bereichen

- Kopieren und Importieren riesiger Datenmengen

Diese Hilfeseite beschreibt Methoden und Eigenschaften, die nur für Calc-Dokumente gelten.

## Dienstaufruf

Vor der Verwendung des Dienstes Calc muss die Bibliothek ScriptForge geladen oder importiert werden:

• Grundlegende Makros erfordern das Laden der Bibliothek ScriptForge mit der folgenden Anweisung:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• Python-Skripte erfordern einen Import aus dem Modul scriptforge:
from scriptforge import CreateScriptService

Der Dienst Calc ist eng verwandt mit dem Dienst UI der Bibliothek ScriptForge. Nachfolgend finden Sie einige Beispiele, wie der Dienst Calc aufgerufen werden kann.

##### In Basic

Der folgende Code-Schnipsel erstellt eine Dienstinstanz Calc, die dem derzeit aktiven Calc-Dokument entspricht.

        Set oDoc = CreateScriptService("Calc")

Eine andere Möglichkeit, eine Instanz des Dienstes Calc zu erstellen, ist die Verwendung des Dienstes UI. Im folgenden Beispiel wird ein neues Calc-Dokument erstellt und oDoc ist eine Dienstinstanz Calc:

        Dim ui As Object, oDoc As Object
        Set ui = CreateScriptService("UI")
        Set oDoc = ui.CreateDocument("Calc")

Oder verwenden Sie die Methode OpenDocument des Dienstes UI:

        Set oDoc = ui.OpenDocument("C:\Documents\MyFile.ods")

Es ist auch möglich, den Dienst Calc zu instanziieren, indem ein Fenstername für die Methode CreateScriptService festgelegt wird:

        Dim oDoc As Object
        Set oDoc = CreateScriptService("SFDocuments.Calc", "MyFile.ods")

Im obigen Beispiel ist "MyFile.ods" der Name eines geöffneten Dokumentfensters. Wenn dieses Argument nicht angegeben wird, wird das aktive Fenster berücksichtigt.

Es ist auch möglich, den Dienst Calc mithilfe des Dokuments aufzurufen, auf das von ThisComponent verwiesen wird. Dies ist besonders nützlich, wenn Sie ein Makro innerhalb der Basic-IDE ausführen.

        Dim oDoc As Object
        Set oDoc = CreateScriptService("Calc", ThisComponent)

Es wird empfohlen, Ressourcen nach der Verwendung freizugeben:

        Set oDoc = oDoc.Dispose()

Wenn das Dokument jedoch mit der Methode CloseDocument geschlossen wurde, ist es unnötig, Ressourcen mit dem oben beschriebenen Befehl freizugeben.

##### In Python

        myDoc = CreateScriptService("Calc")

        ui = CreateScriptService("UI")
        myDoc = ui.CreateDocument("Calc")

        myDoc = ui.OpenDocument(r"C:\Documents\MyFile.ods")

        myDoc = CreateScriptService("SFDocuments.Calc", "MyFile.ods")
        myDoc.Dispose()

        bas = CreateScriptService("Basic")
        myDoc = CreateScriptService("Calc", bas.ThisComponent)

Die Verwendung des Präfixes "SFDocuments." beim Aufruf des Dienstes ist optional.

## Definitionen

Viele Methoden benötigen ein "Sheet" oder einen "Range" als Argument. Einzelne Zellen werden als Sonderfall eines Range betrachtet.

Beide können je nach Situation entweder als Zeichenfolge oder als Referenz (= Objekt) ausgedrückt werden:

- Innerhalb einer spezifischen Calc-Instanz werden Tabellen und Bereiche als Zeichenfolgen wie "Sheet1" und "D2:F6" angegeben.

- Außerdem geben die Eigenschaften .Sheet und .Range eine Referenz zurück, die als Argument einer Methode verwendet werden kann, die von einer anderen Instanz des Dienstes Calc aufgerufen wurde.

### Beispiel:

Im folgenden Beispiel werden Daten aus Dokument A (schreibgeschützt geöffnet und ausgeblendet) in Dokument B kopiert.

##### In Basic

        Dim oDocA As Object, oDocB As Object
        Set oDocA = ui.OpenDocument("C:\Documents\FileA.ods", Hidden := True, ReadOnly := True)
        Set oDocB = ui.OpenDocument("C:\Documents\FileB.ods")
        oDocB.CopyToRange(oDocA.Range("SheetX.D4:F8"), "D2:F6") 'CopyToRange(source, target)

##### In Python

        docA = ui.OpenDocument(r"C:\Documents\FileA.ods", hidden = True, readonly = True)
        docB = ui.OpenDocument(r"C:\Documents\FileB.ods")
        docB.CopyToRange(docA.Range("SheetX.D4:F8"), "D2:F6")

### SheetName

Entweder der Tabellenname als Zeichenfolge oder ein Objekt, das von der Eigenschaft .Sheet erzeugt wird.

Das Kürzel "~" (Tilde) repräsentiert die aktuelle Tabelle.

### RangeName

Entweder eine Zeichenfolge, die einen Satz zusammenhängender Zellen bezeichnet, die sich in einer Tabelle der aktuellen Instanz befinden, oder ein Objekt, das von der Eigenschaft .Range erzeugt wird.

Das Kürzel „~“ (Tilde) repräsentiert die aktuelle Auswahl oder den ersten ausgewählten Bereich, wenn mehrere Bereiche ausgewählt sind.

Das Kürzel "*" repräsentiert alle verwendeten Zellen.

Der Tabellenname ist beim Definieren eines Bereichs optional. Wenn kein Tabellenname angegeben wird, wird die aktive Tabelle verwendet. Umgebende einfache Anführungszeichen und $-Zeichen sind erlaubt, werden aber ignoriert.

Bei der Festlegung von SheetName als Zeichenfolge ist die Verwendung von einfachen Anführungszeichen zum Einschließen des Tabellennamens erforderlich, wenn der Name Leerzeichen " " oder Punkte "." enthält.

Die folgenden Beispiele veranschaulichen, in welchen Fällen die Verwendung von einfachen Anführungszeichen obligatorisch ist:

          ' Die Verwendung von einfachen Anführungszeichen ist optional
          oDoc.clearAll("SheetA.A1:B10")
          oDoc.clearAll("'SheetA'.A1:B10")
          ' Die Verwendung von einfachen Anführungszeichen ist erforderlich
          oDoc.clearAll("'Sheet.A'.A1:B10")

Mit Ausnahme der Eigenschaft CurrentSelection berücksichtigt der Dienst Calc nur einzelne Zellbereiche.

Beispiele für gültige Bereiche
1) $'Tabelle X'.D2 2) $D$2 | Eine einzelne Zelle
1) $'Tabelle X'.D2:F6 2) D2:D10 | Einzelner Bereich mit mehreren Zellen
$'Tabelle X'.* | Alle verwendeten Zellen in der angegebenen Tabelle
1) $'Tabelle X'.A:A (Spalte A) 2) 3:5 (Zeile 3 bis 5) | Alle Zellen in zusammenhängenden Spalten oder Zeilen bis zur letzten verwendeten Zelle
MeinBereich | Ein Bereich mit dem Namen "MeinBereich" auf Tabellenebene
1) ~.einBereich 2) SheetX.einBereich | Ein Bereichsname auf Tabellenebene
MyDoc.Range("TabelleX.D2:F6") | Ein Bereich innerhalb der Tabelle „TabelleX“ in der Datei, die der Calc-Instanz "myDoc" zugeordnet ist
~.~ oder ~ | Die aktuelle Auswahl in der aktiven Tabelle

## Eigenschaften

Alle Eigenschaften, die generisch für jedes Dokument sind, gelten implizit auch für Calc-Dokumente. Weitere Informationen finden Sie auf der Dokumentendienst-Hilfeseite.

Die speziell für Calc-Dokumente verfügbaren Eigenschaften sind:

Name | Schreibgeschützt | Argument | Rückgabetyp | Beschreibung
--- | --- | --- | --- | ---
CurrentSelection | Nein | Ohne | Zeichenfolge oder Matrix mit Zeichenfolgen | Der einzelne ausgewählte Bereich als Zeichenfolge oder die Liste der ausgewählten Bereiche als Matrix.
FirstCell | Ja | SheetName oder RangeName as String | String | Gibt die erste verwendete Zelle in einem bestimmten Bereich oder oder einer bestimmten Tabelle zurück.
FirstColumn | Ja | SheetName oder RangeName as String | Long | Gibt die ganz linke Spaltennummer in einem bestimmten Bereich oder einer bestimmten Tabelle zurück.
FirstRow | Ja | SheetName oder RangeName as String | Long | Gibt die oberste Zeilennummer in einem bestimmten Bereich oder einer bestimmten Tabelle zurück.
Height | Ja | RangeName As String | Long | Die Anzahl der Zeilen (>= 1) im angegebenen Bereich.
LastCell | Ja | SheetName oder RangeName as String | String | Gibt die zuletzt verwendete Zelle in einem bestimmten Bereich oder einer bestimmten Tabelle zurück.
LastColumn | Ja | SheetName oder RangeName as String | Long | Die zuletzt verwendete Spalte in einem bestimmten Bereich oder einer bestimmten Tabelle.
LastRow | Ja | SheetName oder RangeName as String | Long | Die letzte verwendete Zeile in einem bestimmten Bereich oder einer bestimmten Tabelle.
Range | Ja | RangeName As String | Object | Eine Bereichsreferenz, die als Argument von Methoden wie CopyToRange verwendet werden kann.
Region | Ja | RangeName As String | String | Gibt die Adresse des kleinsten Bereichs zurück, der den angegebenen Bereich enthält, sodass der Bereich von leeren Zellen oder Tabellenrändern umgeben ist. Dies entspricht der Anwendung von [Befehl+Multiplikation (*)][Strg+Multiplikation (*)] auf den angegebenen Bereich.
Sheet | Ja | SheetName As String | Object | Eine Tabellenreferenz, die als Argument von Methoden wie CopySheet verwendet werden kann.
SheetName | Ja | RangeName As String | String | Gibt den Tabellennamen einer angegebenen Bereichsadresse zurück.
Sheets | Ja | Ohne | Matrix mit Zeichenfolgen | Die Liste mit den Namen aller vorhandenen Tabellen.
Width | Ja | RangeName As String | Long | Die Anzahl der Spalten (>= 1) im angegebenen Bereich.
XCellRange | Ja | RangeName As String | Object | Ein UNO-Objekt com.sun.star.Table.XCellRange.
XSheetCellCursor | Ja | RangeName As String | Object | Ein UNO-Objekt com.sun.star.sheet.XSheetCellCursor. Nach dem Bewegen des Cursors kann auf die resultierende Bereichsadresse über die UNO-Eigenschaft AbsoluteName des Cursorobjekts zugegriffen werden, die dem Wert einer Zeichenfolge zurückgibt, der als Argument für Eigenschaften und Methoden des Dienstes Calc verwendet werden kann.
XSpreadsheet | Ja | SheetName As String | Object | Ein UNO-Objekt com.sun.star.sheet.XSpreadsheet.

Besuchen Sie die Website der LibreOffice API-Dokumentation, um mehr über die UNO-Objekte XCellRange, XSheetCellCursor und XSpreadsheet zu lernen.

## Methoden

Liste der Methoden im Dienst Calc

A1Style
Activate
Charts
ClearAll
ClearFormats
ClearValues
CompactLeft
CompactUp
CopySheet
CopySheetFromFile
CopyToCell
CopyToRange
CreateChart
CreatePivotTable
DAvg

DCount
DMax
DMin
DSum
ExportRangeToFile
Forms
GetColumnName
GetFormula
GetValue
ImportFromCSVFile
ImportFromDatabase
InsertSheet
MoveRange
MoveSheet
Offset

OpenRangeSelector
PrintOut
Printf
RemoveDuplicates
RemoveSheet
RenameSheet
SetArray
SetCellStyle
SetFormula
SetValue
ShiftDown
ShiftLeft
ShiftRight
ShiftUp
SortRange

## A1Style

Gibt eine Bereichsadresse als Zeichenfolge basierend auf Tabellenkoordinaten zurück, das heißt Zeilen- und Spaltennummern.

Wenn nur ein Koordinatenpaar angegeben ist, wird eine Adresse zu einer einzelnen Zelle zurückgegeben. Zusätzliche Argumente können die untere rechte Zelle eines rechteckigen Bereichs festlegen.

### Syntax:

svc.A1Style(row1: int, column1: int, row2: int = 0; column2: int = 0; sheetname: str = "~"): str

### Parameter:

row1, column1: Legen Sie die Zeilen- und Spaltennummern der obersten linken Zelle im zu berücksichtigenden Bereich fest. Zeilen- und Spaltennummern beginnen bei 1.

row2, column2: Legen Sie die Zeilen- und Spaltennummern der unteren rechten Zelle im zu berücksichtigenden Bereich fest. Wenn diese Argumente nicht bereitgestellt werden oder wenn Werte kleiner als row1 und column1 angegeben werden, dann wird die Adresse des einzelnen Zellbereichs, der durch row1 und column1 repräsentiert wird, zurückgegeben.

sheetname: Der Name der Tabelle, die an die zurückgegebene Bereichsadresse angehängt werden soll. Die Tabelle muss vorhanden sein. Der Standardwert ist "~", entsprechend der derzeit aktiven Tabelle.

### Beispiel:

Die folgenden Beispiele in Basic und Python gehen davon aus, dass "Sheet1" die derzeit aktive Tabelle ist.

##### In Basic

        Set oDoc = CreateScriptService("Calc")
        addr1 = oDoc.A1Style(1, 1) ' '$Sheet1'.$A$1
        addr2 = oDoc.A1Style(2, 2, 3, 6) ' '$Sheet1'.$B$2:$F$3
        addr3 = oDoc.A1Style(2, 2, 0, 6) ' '$Sheet1'.$B$2
        addr4 = oDoc.A1Style(3, 4, 3, 8, "Sheet2") ' '$Sheet2'.$D$3:$H$3
        addr5 = oDoc.A1Style(5, 1, SheetName := "Sheet3") ' '$Sheet3'.$A$5

##### In Python

        doc = CreateScriptService("Calc")
        addr1 = doc.A1Style(1, 1) # '$Sheet1'.$A$1
        addr2 = doc.A1Style(2, 2, 3, 6) # '$Sheet1'.$B$2:$F$3
        addr3 = doc.A1Style(2, 2, 0, 6) # '$Sheet1'.$B$2
        addr4 = doc.A1Style(3, 4, 3, 8, "Sheet2") # '$Sheet2'.$D$3:$H$3
        addr5 = doc.A1Style(5, 1, sheetname="Sheet3") # '$Sheet3'.$A$5

Die Methode A1Style kann mit einer der vielen Eigenschaften und Methoden des Dienstes Calc kombiniert werden, die einen Bereich als Argument benötigen, wie beispielsweise GetValue, GetFormula, ClearAll und so weiter.

## Activate

Wenn das Argument sheetname angegeben wird, wird die angegebene Tabelle aktiviert und zur aktuell ausgewählten Tabelle. Wenn das Argument fehlt, wird das Dokumentfenster aktiviert.

### Syntax:

svc.Activate(sheetname: str = ""): bool

### Parameter:

sheetname: Der Name der Tabelle, die im Dokument aktiviert werden soll. Der Standardwert ist eine leere Zeichenfolge, was bedeutet, dass das Dokumentfenster aktiviert wird, ohne die aktive Tabelle zu ändern.

### Beispiel:

Das folgende Beispiel aktiviert die Tabelle mit dem Namen "Sheet4" im derzeit aktiven Dokument.

##### In Basic

        Dim ui as Variant, oDoc as Object
        Set ui = CreateScriptService("UI")
        Set oDoc = ui.GetDocument(ui.ActiveWindow)
        oDoc.Activate("Sheet4")

##### In Python

        ui = CreateScriptService("UI")
        myDoc = ui.GetDocument(ui.ActiveWindow)
        myDoc.Activate("Sheet4")

Das Aktivieren einer Tabelle ist nur sinnvoll, wenn es auf einem Calc-Dokument durchgeführt wird. Um sicherzustellen, dass Sie ein Calc-Dokument zur Hand haben, können Sie die Eigenschaft isCalc des Dokumentobjekts verwenden, die True zurückgibt, wenn es sich um ein Calc-Dokument handelt, und False andernfalls.

## Charts

Gibt entweder die Liste mit den Namen aller Diagrammobjekte in einer bestimmten Tabelle oder einer einzelnen Dienstinstanz Chart zurück.

- Wenn nur sheetname angegeben ist, wird eine nullbasierte Matrix von Zeichenfolgen zurückgegeben, welche die Namen aller Diagramme enthält.

- Wenn ein chartname angegeben ist, wird ein einzelnes Objekt zurückgegeben, das dem gewünschten Diagramm entspricht. Das angegebene Diagramm muss vorhanden sein.

### Syntax:

svc.Charts(sheetname: str, chartname: str = ""): obj

### Parameter:

sheetname: Der Name der Tabelle, von der die Liste der Diagramme abgerufen werden soll oder in der sich das angegebene Diagramm befindet.

chartname: Der benutzerdefinierte Name des zurückzugebenden Diagrammobjekts. Wenn das Diagramm keinen benutzerdefinierten Namen hat, kann der interne Objektname verwendet werden. Wenn dieses Argument fehlt, wird die Liste der Diagrammnamen in der angegebenen Tabelle zurückgegeben.

Verwenden Sie die Seitenleiste Navigator, um die den Diagrammen unter der Kategorie OLE-Objekte zugewiesenen Namen zu überprüfen.

### Beispiel:

##### In Basic

Das folgende Beispiel zeigt die Anzahl der Diagrammobjekte in „Sheet1“.

        Dim arrNames as Object
        arrNames = oDoc.Charts("Sheet1")
        MsgBox "There are " & UBound(arrNames) + 1 & " charts in Sheet1"

Das folgende Beispiel greift auf das Diagramm mit dem Namen „MyChart“ in „Sheet1“ zu und gibt seinen Typ aus.

        Dim oChart as Object
        oChart = oDoc.Charts("Sheet1", "MyChart")
        MsgBox oChart.ChartType

##### In Python

        bas = CreateScriptService("Basic")
        chart_names = doc.Charts("Sheet1")
        bas.MsgBox(f"There are {len(chart_names)} charts in Sheet1")

        chart = doc.Charts("Sheet1", "MyChart")
        bas.MsgBox(chart.ChartType)

## ClearAll

Löscht alle Inhalte und Formate des angegebenen Bereichs.

Eine Filterformel kann angegeben werden, um zu bestimmen, welche Zellen betroffen sein sollen.

### Syntax:

svc.ClearAll(range: str, opt filterformula: str, opt filterscope: str)

### Parameter:

range: Der zu löschende Bereich als Zeichenfolge.

filterformula: Eine Berechnungsformel, die auf den angegebenen Bereich angewendet werden soll, um zu bestimmen, welche Zellen betroffen sind. Die angegebene Formel muss True oder False zurückgeben. Wenn dieses Argument nicht angegeben wird, sind alle Zellen im Bereich betroffen.

filterscope: Legt fest, wie filterformula auf den angegebenen Bereich erweitert wird. Dieses Argument ist obligatorisch, wenn filterformula angegeben wird. Folgende Werte werden akzeptiert:

- "CELL": Die im Argument filterformula angegebene Formel wird einmal für jede Zelle in range expandiert.

- "ROW": Die im Argument filterformula angegebene Formel wird einmal für jede Zeile in range expandiert.

- "COLUMN": Die im Argument filterformula angegebene Formel wird einmal für jede Spalte in range expandiert.

### Beispiel:

##### In Basic

        ' Löscht alle Zellen im Bereich TabelleX.A1:J10
        oDoc.ClearAll("TabelleX.A1:J10")
        ' Löscht alle Zellen im Bereich TabelleX.A1:J10, die einen Wert größer als 100 haben
        oDoc.ClearAll("TabelleX.A1:J10", "=TabelleX.A1>100", "CELL")
        ' Löscht alle Zeilen im Bereich TabelleX.A1:J10, deren Summe größer als 500 ist
        oDoc.ClearAll("TabelleX.A1:J10", "=SUM(TabelleX.A1:J1)>100", "ROW")
        ' Löscht alle Spalten im Bereich TabelleX.A1:J10, deren Summe größer als 500 ist
        oDoc.ClearAll("TabelleX.A1:J10", "=SUM(TabelleX.A1:A10)>100", "COLUMN")

##### In Python

        myDoc.ClearAll("TabelleX.A1:F10")
        myDoc.ClearAll("TabelleX.A1:J10", "=TabelleX.A1>100", "CELL")
        myDoc.ClearAll("TabelleX.A1:J10", "=SUM(TabelleX.A1:J1)>100", "ROW")
        myDoc.ClearAll("TabelleX.A1:J10", "=SUM(TabelleX.A1:A10)>100", "COLUMN")

## ClearFormats

Löscht die Formate und Vorlagen im angegebenen Bereich.

Eine Filterformel kann angegeben werden, um zu bestimmen, welche Zellen betroffen sein sollen.

### Syntax:

svc.ClearFormats(range: str, opt filterformula: str, opt filterscope: str)

### Parameter:

range: Der Bereich, dessen Formate und Vorlagen gelöscht werden sollen, als eine Zeichenfolge.

filterformula: Eine Berechnungsformel, die auf den angegebenen Bereich angewendet werden soll, um zu bestimmen, welche Zellen betroffen sind. Die angegebene Formel muss True oder False zurückgeben. Wenn dieses Argument nicht angegeben wird, sind alle Zellen im Bereich betroffen.

filterscope: Legt fest, wie filterformula auf den angegebenen Bereich erweitert wird. Dieses Argument ist obligatorisch, wenn filterformula angegeben wird. Folgende Werte werden akzeptiert:

- "CELL": Die im Argument filterformula angegebene Formel wird einmal für jede Zelle in range expandiert.

- "ROW": Die im Argument filterformula angegebene Formel wird einmal für jede Zeile in range expandiert.

- "COLUMN": Die im Argument filterformula angegebene Formel wird einmal für jede Spalte in range expandiert.

### Beispiel:

##### In Basic

          oDoc.ClearFormats("SheetX.*")

##### In Python

        myDoc.ClearFormats("SheetX.*")

In der Methodendokumentation ClearAll finden Sie Beispiele für die Verwendung der Argumente filterformula und filterscope.

## ClearValues

Löscht die Werte und Formeln im angegebenen Bereich.

Eine Filterformel kann angegeben werden, um zu bestimmen, welche Zellen betroffen sein sollen.

### Syntax:

svc.ClearValues(range: str, opt filterformula: str, opt filterscope: str)

### Parameter:

range: Der Bereich, dessen Werte und Formeln gelöscht werden sollen, als eine Zeichenfolge.

filterformula: Eine Berechnungsformel, die auf den angegebenen Bereich angewendet werden soll, um zu bestimmen, welche Zellen betroffen sind. Die angegebene Formel muss True oder False zurückgeben. Wenn dieses Argument nicht angegeben wird, sind alle Zellen im Bereich betroffen.

filterscope: Legt fest, wie filterformula auf den angegebenen Bereich erweitert wird. Dieses Argument ist obligatorisch, wenn filterformula angegeben wird. Folgende Werte werden akzeptiert:

- "CELL": Die im Argument filterformula angegebene Formel wird einmal für jede Zelle in range expandiert.

- "ROW": Die im Argument filterformula angegebene Formel wird einmal für jede Zeile in range expandiert.

- "COLUMN": Die im Argument filterformula angegebene Formel wird einmal für jede Spalte in range expandiert.

### Beispiel:

##### In Basic

          oDoc.ClearValues("SheetX.A1:F10")

##### In Python

        myDoc.ClearValues("SheetX.A1:F10")

In der Methodendokumentation ClearAll finden Sie Beispiele für die Verwendung der Argumente filterformula und filterscope.

## CompactLeft

Löscht die Spalten eines angegebenen Bereichs, die mit einem als Calc-Formel ausgedrückten Filter übereinstimmen. Der Filter wird auf jede Spalte angewendet, um zu entscheiden, ob sie gelöscht wird oder nicht.

Die gelöschte Spalte kann auf die Höhe des angegebenen Bereichs begrenzt werden oder die Höhe der gesamten Tabelle umfassen, wodurch ganze Spalten gelöscht werden.

Diese Methode gibt eine Zeichenfolge mit der Bereichsadresse des komprimierten Bereichs zurück. Wenn alle Spalten gelöscht werden, wird eine leere Zeichenfolge zurückgegeben.

Wenn ein Zellbereich ausgewählt ist, wirkt sich das Aufrufen dieser Methode nicht auf die Auswahl aus.

### Syntax:

svc.CompactLeft(range: str, wholecolumn: bool = False, opt filterformula: str): str

### Parameter:

range: Der Bereich, aus dem Spalten gelöscht werden, als Zeichenfolge.

wholecolumn: Wenn diese Option auf True gesetzt ist, wird die gesamte Spalte aus der Tabelle gelöscht. Der Standardwert ist False, was bedeutet, dass die gelöschte Spalte auf die Höhe des angegebenen Bereichs begrenzt wird.

filterformula: Der Filter, der auf jede Spalte angewendet wird, um zu bestimmen, ob sie gelöscht wird oder nicht. Der Filter wird als Calc-Formel ausgedrückt, die auf die erste Spalte angewendet werden sollte. Wenn die Formel für eine Spalte True zurückgibt, wird diese Spalte gelöscht. Der Standardfilter löscht alle leeren Spalten.

Angenommen, der Bereich A1:J200 ist ausgewählt (Höhe = 200), die Standardformel lautet also =(COUNTBLANK(A1:A200)=200). Das heißt, wenn alle 200 Zellen in der ersten Spalte (Spalte A) leer sind, dann wird die Spalte gelöscht. Beachten Sie, dass die Formel nur in Bezug auf die erste Spalte ausgedrückt wird. Intern wird die Methode CompactLeft diese Formel für alle verbleibenden Spalten verallgemeinern.

Calc-Funktionen, die im Argument filterformula verwendet werden, müssen mit ihren englischen Namen ausgedrückt werden. Besuchen Sie die Wiki-Seite Liste der Calc-Funktionen für eine vollständige Liste der Calc-Funktionen.

### Beispiel:

##### In Basic

        ' Alle leeren Spalten im Bereich G1:L10 aus Sheet1 löschen
        newrange = oDoc.CompactLeft("Sheet1.G1:L10")
        ' Das folgende Beispiel ist ähnlich, aber die gesamte Spalte wird aus der Tabelle gelöscht
        newrange = oDoc.CompactLeft("Sheet1.G1:L10", WholeColumn := True)
        ' Löscht alle Spalten, bei denen die erste Zeile mit einem "X" markiert ist
        newrange = oDoc.CompactLeft("Sheet1.G1:L10", FilterFormula := "=(G1=""X"")")
        ' Löscht alle Spalten, bei denen die erste Zeile mit einem "X" markiert ist
        newrange = oDoc.CompactLeft("Sheet1.G1:L10", FilterFormula := "=(MOD(SUM(G1:G10);2)=1)")

##### In Python

        newrange = myDoc.CompactLeft("Sheet1.G1:L10")
        newrange = myDoc.CompactLeft("Sheet1.G1:L10", wholecolumn = True)
        newrange = myDoc.CompactLeft("Sheet1.G1:L10", filterformula = '=(G1="X")')
        newrange = myDoc.CompactLeft("Sheet1.G1:L10", filterformula = '=(MOD(SUM(G1:G10);2)=1)')

## CompactUp

Löscht die Zeilen eines angegebenen Bereichs, die mit einem als Calc-Formel ausgedrückten Filter übereinstimmen. Der Filter wird auf jede Zeile angewendet, um zu entscheiden, ob sie gelöscht wird oder nicht.

Die gelöschten Zeilen können auf die Breite des angegebenen Bereichs begrenzt werden oder sich über die Breite der gesamten Tabelle erstrecken, wodurch ganze Zeilen gelöscht werden.

Diese Methode gibt eine Zeichenfolge mit der Bereichsadresse des komprimierten Bereichs zurück. Wenn alle Zeilen gelöscht werden, wird eine leere Zeichenfolge zurückgegeben.

Wenn ein Zellbereich ausgewählt ist, wirkt sich das Aufrufen dieser Methode nicht auf die Auswahl aus.

### Syntax:

svc.CompactUp(range: str, wholerow: bool = False, opt filterformula: str): str

### Parameter:

range: Der Bereich, aus dem Zeilen gelöscht werden, als Zeichenfolge.

wholerow: Wenn diese Option auf True gesetzt ist, wird die gesamte Zeile aus der Tabelle gelöscht. Der Standardwert ist False, was bedeutet, dass die gelöschte Zeile auf die Breite des angegebenen range beschränkt wird.

filterformula: Der Filter, der auf jede Zeile angewendet wird, um zu bestimmen, ob sie gelöscht wird oder nicht. Der Filter wird als Calc-Formel ausgedrückt, die auf die erste Zeile angewendet werden sollte. Wenn die Formel für eine Zeile True zurückgibt, wird diese Zeile gelöscht. Der Standardfilter löscht alle leeren Zeilen.

Angenommen, der Bereich A1:J200 ist ausgewählt (Breite = 10), die Standardformel ist also =(COUNTBLANK(A1:J1)=10). Das heißt, wenn alle 10 Zellen in der ersten Zeile (Zeile 1) leer sind, dann wird die Zeile gelöscht. Beachten Sie, dass die Formel nur in Bezug auf die erste Zeile ausgedrückt wird. Intern wird die Methode CompactUp diese Formel für alle verbleibenden Zeilen verallgemeinern.

Die Calc-Funktionen, die in der im Argument filterformula angegebenen Formel verwendet werden, müssen mit ihren englischen Namen ausgedrückt werden. Besuchen Sie die Wiki-Seite Liste der Calc-Funktionen für eine vollständige Liste der Calc-Funktionen.

### Beispiel:

##### In Basic

        ' Alle leeren Zeilen im Bereich G1:L10 aus Sheet1 löschen
        newrange = oDoc.CompactUp("Sheet1.G1:L10")
        ' Das folgende Beispiel ist ähnlich, aber die gesamte Zeile wird aus der Tabelle gelöscht
        newrange = oDoc.CompactUp("Sheet1.G1:L10", WholeRow := True)
        ' Löscht alle Zeilen, bei denen die erste Spalte mit einem "X" markiert ist
        newrange = oDoc.CompactUp("Sheet1.G1:L10", FilterFormula := "=(G1=""X"")")
        ' Löscht alle Zeilen, in denen die Summe der Werte in der Zeile ungerade ist
        newrange = oDoc.CompactUp("Sheet1.G1:L10", FilterFormula := "=(MOD(SUM(G1:L1);2)=1)")

##### In Python

        newrange = myDoc.CompactUp("Sheet1.G1:L10")
        newrange = myDoc.CompactUp("Sheet1.G1:L10", wholerow = True)
        newrange = myDoc.CompactUp("Sheet1.G1:L10", filterformula = '=(G1="X")')
        newrange = myDoc.CompactUp("Sheet1.G1:L10", filterformula = '=(MOD(SUM(G1:L1);2)=1)')

## CopySheet

Kopiert eine angegebene Tabelle vor eine vorhandene Tabelle oder an das Ende der Tabellenliste. Die zu kopierende Tabelle kann in jedem geöffneten Calc-Dokument enthalten sein. Gibt bei Erfolg True zurück.

### Syntax:

svc.CopySheet(sheetname: any, newname: str, [beforesheet: any]): bool

### Parameter:

sheetname: Der Name der zu kopierenden Tabelle als Zeichenfolge oder seine Referenz als Objekt.

newname: Der Name der einzufügenden Tabelle. Der Name darf im Dokument nicht verwendet werden.

beforesheet: Der Name (String) oder Index (numerisch, beginnend mit 1) der Tabelle, vor der die kopierte Tabelle eingefügt werden soll. Dieses Argument ist optional und standardmäßig wird die kopierte Tabelle an der letzten Position hinzugefügt.

### Beispiel:

##### In Basic

Das folgende Beispiel erstellt eine Kopie der TAbelle "SheetX" und platziert sie als letzte Tabelle im aktuellen Dokument. Der Name der kopierten Tabelle ist "SheetY".

        Dim oDoc as Object
        ' Ruft das Objekt "Document" des aktiven Fensters ab
        Set oDoc = CreateScriptService("Calc")
        oDoc.CopySheet("SheetX", "SheetY")

Das folgende Beispiel kopiert „SheetS“ aus „File.ods“ und fügt sie an der letzten Position von „FileB.ods“ mit dem Namen „SheetY“ ein:

          Dim oDocA As Object : Set oDocA = ui.OpenDocument("C:\Documents\FileA.ods", Hidden := True, ReadOnly := True)
          Dim oDocB As Object : Set oDocB = ui.OpenDocument("C:\Documents\FileB.ods")
          oDocB.CopySheet(oDocA.Sheet("SheetX"), "SheetY")

##### In Python

        myDoc.CopySheet("SheetX", "SheetY")

        docA = ui.OpenDocument(r"C:\Documents\FileA.ods", hidden = True, readonly = True)
        docB = ui.OpenDocument(r"C:\Documents\FileB.ods")
        docB.CopySheet(docA.Sheet("SheetX"), "SheetY")

Um Tabellen zwischen offenen Dokumenten zu kopieren, verwenden Sie CopySheet. Um Tabellen aus geschlossenen Dokumenten zu kopieren, verwenden Sie CopySheetFromFile.

## CopySheetFromFile

Kopiert eine bestimmte Tabelle aus einem geschlossenen Calc-Dokument und fügt sie vor einer bestehenden Tabelle oder am Ende der Liste der Tabellen der Datei ein, auf die durch ein Objekt Document verwiesen wird.

Wenn die Datei nicht existiert, wird ein Fehler ausgelöst. Wenn die Datei keine gültige Calc-Datei ist, wird eine leere Tabelle eingefügt. Wenn die Quelltabelle nicht in der Eingabedatei vorhanden ist, wird am Anfang der neu eingefügten Tabelle eine Fehlermeldung eingefügt.

### Syntax:

svc.CopySheetFromFile(filename: str, sheetname: str, newname: str, [beforesheet: any]): bool

### Parameter:

filename: Identifiziert die zu öffnende Datei. Es muss der Notation SF_FileSystem.FileNaming folgen. Die Datei darf nicht mit einem Kennwort geschützt sein.

sheetname: Der Name der zu kopierenden Tabelle als eine Zeichenfolge.

newname: Der Name der kopierten Tabelle, die in das Dokument eingefügt werden soll. Der Name darf im Dokument nicht verwendet werden.

beforesheet: Der Name (Zeichenfolge) oder Index (numerisch, beginnend mit 1) der Tabelle, vor der die kopierte Tabelle eingefügt werden soll. Dieses Argument ist optional und standardmäßig wird die kopierte Tabelle an der letzten Position hinzugefügt.

### Beispiel:

Das folgende Beispiel kopiert „SheetX“ aus „myFile.ods“ und fügt sie in das von „oDoc“ referenzierte Dokument als „SheetY“ an der ersten Position ein.

##### In Basic

        oDoc.CopySheetFromFile("C:\Documents\myFile.ods", "SheetX", "SheetY", 1)

##### In Python

        myDoc.CopySheetFromFile(r"C:\Documents\myFile.ods", "SheetX", "SheetY", 1)

## CopyToCell

Kopiert einen angegebenen Quellbereich (Werte, Formeln und Formate) in einen Zielbereich oder eine Zielzelle. Die Methode reproduziert das Verhalten eines Kopier-/Einfügevorgangs aus einem Bereich in eine einzelne Zelle.

Gibt eine Zeichenfolge zurück, die den geänderten Zellbereich darstellt. Die Größe des modifizierten Bereichs wird vollständig durch die Größe des Quellbereichs bestimmt.

Der Quellbereich kann zu einem anderen offenen Dokument gehören.

### Syntax:

svc.CopyToCell(sourcerange: any, destinationcell: str): str

### Parameter:

sourcerange: Der Quellbereich als Zeichenfolge, wenn er zum selben Dokument gehört, oder als Referenz, wenn er zu einem anderen geöffneten Calc-Dokument gehört.

destinationcell: Die Zielzelle, in die der kopierte Zellbereich als Zeichenfolge eingefügt wird. Wenn ein Bereich angegeben ist, wird nur die obere linke Zelle berücksichtigt.

### Beispiel:

##### In Basic

Als nächstes folgt ein Beispiel, bei dem sich Quelle und Ziel in derselben Datei befinden:

          oDoc.CopyToCell("SheetX.A1:F10", "SheetY.C5")

Das folgende Beispiel zeigt, wie Sie einen Bereich aus einem anderen geöffneten Calc-Dokument kopieren:

        Dim ui as Variant : ui = CreateScriptService("UI")
        Dim oDocSource As Object, oDocDestination As Object
        ' Quelldokument im Hintergrund öffnen (ausgeblendet)
        Set oDocSource = ui.OpenDocument("C:\SourceFile.ods", Hidden := True, ReadOnly := True)
        Set oDocDestination = CreateScriptService("Calc")
        oDocDestination.CopyToCell(oDocSource.Range("Sheet1.C2:C4"), "SheetT.A5")
        ' Vergessen Sie nicht, das Quelldokument zu schließen, da es versteckt geöffnet wurde
        oDocSource.CloseDocument()

##### In Python

        docSource = ui.OpenDocument(r"C:\Documents\SourceFile.ods", hidden = True, readonly = True)
        docDestination = CreateScriptService("Calc")
        docDestination.CopyToCell(docSource.Range("Sheet1.C2:C4"), "SheetT.A5")
        docSource.CloseDocument()

Um ein Kopieren/Einfügen aus einem Bereich in eine einzelne Zelle zu simulieren, verwenden Sie CopyToCell. Um ein Kopieren/Einfügen von einem Bereich in einen größeren Bereich zu simulieren (wobei dieselben Zellen mehrmals repliziert werden), verwenden Sie CopyToRange.

## CopyToRange

Kopiert einen angegebenen Quellbereich (Werte, Formeln und Formate) nach unten und/oder nach rechts in einen Zielbereich. Das Verfahren ahmt das Verhalten eines Kopier-/Einfügevorgangs von einem Quellbereich in einen größeren Zielbereich nach.

- Wenn die Höhe (oder Breite) des Zielbereichs > 1 Zeile (oder Spalte) ist, muss die Höhe (oder Breite) der Quelle <= Höhe (oder Breite) des Ziels sein. Sonst passiert nichts.

- Wenn die Höhe (oder Breite) des Ziels = 1 ist, wird das Ziel nach unten (oder nach rechts) bis zur Höhe (oder Breite) des Quellbereichs erweitert.

Die Methode gibt eine Zeichenfolge zurück, die den geänderten Zellbereich darstellt.

Der Quellbereich kann zu einem anderen offenen Dokument gehören.

### Syntax:

svc.CopyToRange(sourcerange: any, destinationrange: str): str

### Parameter:

sourcerange: Der Quellbereich als Zeichenfolge, wenn er zum selben Dokument gehört, oder als Referenz, wenn er zu einem anderen geöffneten Calc-Dokument gehört.

destinationrange: Das Ziel des kopierten Zellbereichs als Zeichenfolge.

### Beispiel:

##### In Basic

Innerhalb desselben Dokuments kopieren:

        oDoc.CopyToRange("SheetX.A1:F10", "SheetY.C5:J5")
        ' Gibt eine Bereichszeichenfolge zurück: "$SheetY.$C$5:$J$14"

Von einer Datei in eine andere kopieren:

        Dim oDocA As Object : Set oDocA = ui.OpenDocument("C:\Documents\FileA.ods", Hidden := True, ReadOnly := True)
        Dim oDocB As Object : Set oDocB = ui.OpenDocument("C:\Documents\FileB.ods")
        oDocB.CopyToRange(oDocA.Range("SheetX.A1:F10"), "SheetY.C5:J5")

##### In Python

        doc.CopyToRange("SheetX.A1:F10", "SheetY.C5:J5")

        docA = ui.OpenDocument(r"C:\Documents\FileA.ods", hidden = True, readonly = True)
        docB = ui.OpenDocument(r"C:\Documents\FileB.ods")
        docB.CopyToRange(docA.Range("SheetX.A1:F10"), "SheetY.C5:J5")

## CreateChart

Erstellt ein neues Diagrammobjekt, das die Daten im angegebenen Bereich anzeigt. Das zurückgegebene Diagrammobjekt kann mit dem Dienst Chart weiter manipuliert werden.

### Syntax:

svc.CreateChart(chartname: str, sheetname: str, range: str, columnheader: bool = False, rowheader: bool = False): obj

### Parameter:

chartname: Der benutzerdefinierte Name des zu erstellenden Diagramms. Der Name muss in der selben Tabelle eindeutig sein.

sheetname: Der Name der Tabelle, auf der das Diagramm platziert wird.

range: Der Bereich, der als Datenquelle für das Diagramm verwendet werden soll. Der Bereich kann sich auf jede Tabelle des Calc-Dokuments beziehen.

columnheader: Bei True wird die oberste Zeile des Bereichs als Beschriftung für die Kategorieachse oder die Legende verwendet (Standard = False).

rowheader: Wenn True, wird die Spalte ganz links des Bereichs als Beschriftung für die Kategorieachse oder die Legende verwendet. (Standard = False).

### Beispiel:

Die folgenden Beispiele in Basic und Python erstellen ein Diagramm unter Verwendung der im Bereich „A1:B5“ von „Sheet1“ enthaltenen Daten und platzieren das Diagramm in „Sheet2“.

##### In Basic

        Set oChart = oDoc.CreateChart("MyChart", "Sheet2", "Sheet1.A1:B5", RowHeader := True)
        oChart.ChartType = "Donut"

##### In Python

        chart = doc.CreateChart("MyChart", "Sheet2", "Sheet1.A1:B5", rowheader=True)
        chart.ChartType = "Donut"

Weitere Informationen zur weiteren Bearbeitung von Diagrammobjekten finden Sie auf der Hilfeseite zum Chart service von ScriptForge. Es ist möglich, Eigenschaften wie Diagrammtyp, Diagramm- und Achsentitel und Diagrammposition zu ändern.

## CreatePivotTable

Erstellt eine neue Pivot-Tabelle mit den Eigenschaften, welche durch die an die Methode übergebenen Argumente definiert sind.

Für die Pivot-Tabelle muss ein Name angegeben werden. Wenn in der Zieltabelle bereits eine Pivot-Tabelle mit demselben Namen vorhanden ist, wird sie ohne Warnung ersetzt.

Diese Methode gibt eine Zeichenfolge zurück, die den Bereich enthält, in dem die neue Pivot-Tabelle platziert wurde.

### Syntax:

svc.CreatePivotTable(pivottablename: str, sourcerange: str, targetcell: str, datafields: str[0..*], rowfields: str[0..*], columnfields: str[0..*], filterbutton: bool = true, rowtotals: bool = true, columntotals: bool = true): str

### Parameter:

pivottablename: Der benutzerdefinierte Name der neuen Pivot-Tabelle.

sourcerange: Der Bereich, der die Rohdaten als Zeichenfolge enthält. Es wird davon ausgegangen, dass die erste Zeile die Feldnamen enthält, die von der Pivot-Tabelle verwendet werden.

targetcell: Die linke obere Zelle, in der die neue Pivot-Tabelle platziert wird. Wenn ein Bereich angegeben ist, wird nur seine obere linke Zelle berücksichtigt.

datafields: Dies kann entweder eine einzelne Zeichenfolge oder eine Matrix von Zeichenfolgen sein, die anzuwendende Feldnamen und Funktionen definieren. Wenn eine Matrix angegeben wird, muss es der Syntax Array("FieldName[;Function]", …) folgen.

Die erlaubten Funktionen sind: Sum, Count, Average, Max, Min, Product, CountNums, StDev, StDevP, Var, VarP und Median. Funktionsnamen müssen in englischer Sprache angegeben werden. Wenn alle Werte numerisch sind, ist Sum die Standardfunktion, andernfalls ist die Standardfunktion Count.

rowfields: Eine einzelne Zeichenfolge oder eine Matrix mit den Feldnamen, die als Pivot-Tabellenzeilen verwendet werden.

columnfields: Eine einzelne Zeichenfolge oder eine Matrix mit den Feldnamen, die als Pivot-Tabellenspalten verwendet werden.

filterbutton: Legt fest, ob über der Pivot-Tabelle eine Filter-Schaltfläche angezeigt wird (Standard = True).

rowtotals: Legt fest, ob eine separate Spalte für Zeilensummen zur Pivot-Tabelle hinzugefügt wird (Standard = True).

columntotals: Legt fest, ob eine separate Zeile für Spaltensummen zur Pivot-Tabelle hinzugefügt wird (Standard = True)

### Beispiel:

##### In Basic

        Dim vData As Variant, oDoc As Object, ui As Object, sTable As String, sPivot As String
        Set ui = CreateScriptService("UI")
        Set oDoc = ui.CreateDocument("Calc")
        vData = Array(Array("Item", "State", "Team", "2002", "2003", "2004"), _
            Array("Books", "Michigan", "Jean", 14788, 30222, 23490), _
            Array("Candy", "Michigan", "Jean", 26388, 15641, 32849), _
            Array("Pens", "Michigan", "Jean", 16569, 32675, 25396), _
            Array("Books", "Michigan", "Volker", 21961, 21242, 29009), _
            Array("Candy", "Michigan", "Volker", 26142, 22407, 32841))
        sTable = oDoc.SetArray("A1", vData)
        sPivot = oDoc.CreatePivotTable("PT1", sTable, "H1", _
            Array("2002", "2003;count", "2004;average"), _ ' Drei Datenfelder
            "Item", _ ' Ein einzelnes Zeilenfeld
            Array("State", "Team"), False) ' Zwei Spaltenfelder

##### In Python

        ui = CreateScriptService("UI")
        doc = ui.CreateDocument("Calc")
        vData = [["Item", "State", "Team", "2002", "2003", "2004"],
                 ["Books", "Michigan", "Jean", 14788, 30222, 23490],
                 ["Candy", "Michigan", "Jean", 26388, 15641, 32849],
                 ["Pens", "Michigan", "Jean", 16569, 32675, 25396)],
                 ["Books", "Michigan", "Volker", 21961, 21242, 29009],
                 ["Candy", "Michigan", "Volker", 26142, 22407, 32841]]
        sTable = doc.SetArray("A1", vData)
        sPivot = doc.CreatePivotTable("PT1", sTable, "H1",
                                      ["2002", "2003;count", "2004;average"],
                                      "Item",
                                      ["State", "Team"], False)

Um mehr über Pivot-Tabellen in LibreOffice Calc zu erfahren, lesen Sie die Hilfeseite Pivot-Tabelle.

## DAvg, DCount, DMax, DMin and DSum

Wendet die Funktionen "Average", "Count", "Max", "Min"“ und "Sum" jeweils auf alle Zellen an, die numerische Werte in einem bestimmten Bereich enthalten, und schließt Werte aus gefilterten und ausgeblendeten Zeilen sowie ausgeblendeten Spalten aus, genau wie bei den Funktionen der Statusleiste.

### Syntax:

svc.DAvg(range: str): float

svc.DCount(range: str): float

svc.DMax(range: str): float

svc.DMin(range: str): float

svc.DSum(range: str): float

### Parameter:

range: Der Bereich, auf den die Funktion angewendet wird, als Zeichenfolge.

### Beispiel:

Das folgende Beispiel wendet die Funktion Sum auf den Bereich "A1:A1000" der aktuell ausgewählten Tabelle an:

##### In Basic

          result = oDoc.DSum("~.A1:A1000")

##### In Python

        result = myDoc.DSum("~.A1:A1000")

Zellen im angegebenen Bereich, die Text enthalten, werden von all diesen Funktionen ignoriert. Beispielsweise zählt die Methode DCount keine Zellen mit Text, sondern nur numerische Zellen.

## ExportRangeToFile

Exportiert den angegebenen Bereich als Bild- oder PDF-Datei.

Diese Methode gibt True zurück, wenn die Zieldatei erfolgreich gespeichert wurde.

Ausgeblendete Zeilen oder Spalten im angegebenen Bereich werden nicht in die Zieldatei exportiert.

### Syntax:

svc.ExportRangeToFile(range: str, filename: str, imagetype: str = "pdf", overwrite: bool = False): bool

### Parameter:

range: Ein Tabellenname oder ein zu exportierender Zellbereich als Zeichenfolge.

filename: Der Name der zu speichernden Datei. Er muss der Notation SF_FileSystem.FileNaming folgen.

imagetype: Identifiziert den Zieldateityp. Mögliche Werte sind "jpeg", "pdf" (Standard) und "png".

overwrite: Wenn auf True gesetzt, darf die Zieldatei überschrieben werden (Standard = False).

### Beispiel:

##### In Basic

        ' Exportiert die gesamte Tabelle als PDF-Datei
        oDoc.ExportRangeToFile("SheetX", "C:\Temp\image.pdf")
        ' Exportiert den Bereich als PNG-Datei und überschreibt die Zieldatei, falls vorhanden
        oDoc.ExportRangeToFile("SheetX.A1:D10", "C:\Temp\image.png", "png", Overwrite := True)

##### In Python

        doc.ExportRangeToFile("SheetX", r"C:\Temp\image.pdf")
        doc.ExportRangeToFile("SheetX.A1:D10", r"C:\Temp\image.png", "png", overwrite = True)

## Forms

Abhängig von den bereitgestellten Parametern gibt diese Methode Folgendes zurück:

- Eine nullbasierte Matrix (oder ein Tupel in Python) mit den Namen aller Formulare, die in einer bestimmten Tabelle enthalten sind (wenn das Argument form fehlt)

- Eine Serviceinstanz SFDocuments.Form, die das als Argument angegebene Formular darstellt.

### Syntax:

svc.Forms(sheetname: str): str[0..*]

svc.Forms(sheetname: str, form: str = ''): svc

svc.Forms(sheetname: str, form: int): svc

### Parameter:

sheetname: Der Name der Tabelle als Zeichenfolge, aus der das Formular abgerufen wird.

form: Der Name oder Index, der einem in der angegebenen Tabelle gespeicherten Formular entspricht. Fehlt dieses Argument, gibt die Methode eine Liste mit den Namen aller in der Tabelle verfügbaren Formulare zurück.

### Beispiel:

In den folgenden Beispielen erhält die erste Zeile die Namen aller Formulare, die in „Tabelle1“ gespeichert sind, und die zweite Zeile ruft das Objekt Form des Formulars namens „Formular_A“ ab, das in „Tabelle1“ gespeichert ist.

##### In Basic

        Set FormNames = oDoc.Forms("Sheet1")
        Set FormA = oDoc.Forms("Sheet1", "Form_A")

##### In Python

        form_names = doc.Forms("Sheet1")
        form_A = doc.Forms("Sheet1", "Form_A")

## GetColumnName

Konvertiert eine Spaltennummer zwischen 1 und 1024 in den entsprechenden Buchstaben (Spalte 'A', 'B', …, 'AMJ'). Wenn die angegebene Spaltennummer außerhalb des zulässigen Bereichs liegt, wird eine Zeichenfolge der Länge Null zurückgegeben.

### Syntax:

svc.GetColumnName(columnnumber: int): str

### Parameter:

columnnumber: Die Spaltennummer als ganzzahliger Wert im Intervall 1 … 1024.

### Beispiel:

##### In Basic

Zeigt ein Meldungsfeld mit dem Namen der dritten Spalte an, der standardmäßig "C" ist.

        MsgBox oDoc.GetColumnName(3)

##### In Python

        bas = CreateScriptService("Basic")
        bas.MsgBox(myDoc.GetColumnName(3))

Die maximal zulässige Anzahl von Spalten auf einer Rechentabelle beträgt 1024.

## GetFormula

Holt sich die Formel(n), die im angegebenen Zellbereich gespeichert sind, als einzelne Zeichenfolge, als ein- oder zweidimensionale Matrix von Zeichenfolgen.

Die Namen der in den zurückgegebenen Formeln verwendeten Calc-Funktionen werden in Englisch ausgedrückt. Besuchen Sie die Wiki-Seite Liste der Calc-Funktionen für eine vollständige Liste der Calc-Funktionen.

### Syntax:

svc.GetFormula(range: str): any

### Parameter:

range: Der Bereich, aus dem die Formeln stammen, als Zeichenfolge.

### Beispiel:

##### In Basic

Das folgende Beispiel gibt eine 3x2-Matrix mit den Formeln im Bereich „A1:B3“ (3 Zeilen x 2 Spalten) zurück:

        arrFormula = oDoc.GetFormula("~.A1:B3")

##### In Python

        arrFormula = myDoc.GetFormula("~.A1:B3")

## GetValue

Ruft den/die im angegebenen Zellbereich gespeicherten Wert(e) als Einzelwert, ein- oder zweidimensionale Matrix ab. Alle Werte sind entweder Doubles oder Zeichenfolgen.

### Syntax:

svc.GetValue(range: str): any

### Parameter:

range: Der Bereich, aus dem die Werte abgerufen werden, als Zeichenfolge.

### Beispiel:

##### In Basic

          arrValues = oDoc.GetValue("~.B1:C100")

##### In Python

        arrValues = myDoc.GetValue("~.B1:C100")

Wenn eine Zelle ein Datum enthält, wird die diesem Datum entsprechende Zahl zurückgegeben. Um numerische Werte in Basic-Skripten in Datumsangaben umzuwandeln, verwenden Sie die integrierte Funktion CDate von Basic. Verwenden Sie in Python-Skripten die Funktion CDate aus dem Dienst Basic.

## ImportFromCSVFile

Importiert den Inhalt einer CSV-formatierten Textdatei und platziert ihn in einer bestimmten Zielzelle.

Der Zielbereich wird von allen Inhalten und Formaten gelöscht, bevor der Inhalt der CSV-Datei eingefügt wird. Die Größe des modifizierten Bereichs wird vollständig durch den Inhalt der Eingabedatei bestimmt.

Die Methode gibt eine Zeichenfolge zurück, die den geänderten Zellbereich darstellt.

### Syntax:

svc.ImportFromCSVFile(filename: str, destinationcell: str, [filteroptions: str]): str

### Parameter:

filename: Identifiziert die zu öffnende Datei. Sie muss der Notation SF_FileSystem.FileNaming folgen.

destinationcell: Die Zielzelle zum Einfügen der importierten Daten als Zeichenfolge. Wenn stattdessen ein Bereich angegeben wird, wird nur die obere linke Zelle berücksichtigt.

filteroptions: Die Argumente für den CSV-Eingabefilter. Der Standardfilter geht von folgenden Annahmen aus:

- Die Kodierung der Eingabedatei ist UTF8.

- Das Feldtrennzeichen ist ein Komma, ein Semikolon oder ein Tabulatorzeichen.

- Das Zeichenfolgentrennzeichen ist das doppelte Anführungszeichen (").

- Alle Zeilen sind enthalten.

- Zeichenfolgen in Anführungszeichen werden als Text formatiert.

- Sonderzahlen werden erkannt.

- Es wird davon ausgegangen, dass alle Spalten Texte sind, es sei denn, sie werden als gültige Zahlen erkannt.

- Die Sprache ist Englisch/US, was bedeutet, dass das Dezimaltrennzeichen "." und das Tausendertrennzeichen "," ist.

### Beispiel:

##### In Basic

        oDoc.ImportFromCSVFile("C:\Temp\myCSVFile.csv", "SheetY.C5")

##### In Python

        myDoc.ImportFromCSVFile(r"C:\Temp\myCSVFile.csv", "SheetY.C5")

Weitere Informationen zu den CSV-Filteroptionen finden Sie auf der Hilfeseite zu den CSV-Filteroptionen.

## ImportFromDatabase

Importiert den Inhalt einer Datenbanktabelle, Abfrage oder Ergebnismenge, das heißt das Ergebnis eines Befehls "SELECT SQL", und fügt es in eine Zielzelle ein.

Der Zielbereich wird vor dem Einfügen der importierten Inhalte von allen Inhalten und Formaten gelöscht. Die Größe des modifizierten Bereichs wird vollständig durch den Inhalt in der Tabelle oder Abfrage bestimmt.

Die Methode gibt True zurück, wenn der Import erfolgreich war.

### Syntax:

svc.ImportFromDatabase(filename: str = "", registrationname: str = "", destinationcell: str = "", sqlcommand: str = "", directsql: bool): bool

### Parameter:

filename: Identifiziert die zu öffnende Datei. Er muss der Notation SF_FileSystem.FileNaming folgen.

registrationname: Der Name, der verwendet werden soll, um die Datenbank im Datenbankregister zu finden. Dieses Argument wird ignoriert, wenn filename angegeben wird.

destinationcell: Das Ziel der importierten Daten als Zeichenfolge. Wenn ein Bereich angegeben ist, wird nur die obere linke Zelle berücksichtigt.

sqlcommand: Ein Tabellen- oder Abfragename (ohne umgebende Anführungszeichen oder eckige Klammern) oder eine Anweisung "SELECTSQL", in der Tabellen- und Feldnamen von eckigen Klammern oder Anführungszeichen umgeben sein können, um die Lesbarkeit zu verbessern.

directsql: Bei True wird der SQL-Befehl ohne Voranalyse an die Datenbank-Engine gesendet. Standard ist False. Bei Tabellen wird das Argument ignoriert. Bei Abfragen ist die angewandte Option diejenige, die festgelegt wurde, als die Abfrage definiert wurde.

### Beispiel:

##### In Basic

        oDoc.ImportFromDatabase("C:\Temp\myDbFile.odb", , "SheetY.C5", "SELECT * FROM [Employees] ORDER BY [LastName]")

##### In Python

        myDoc.ImportFromDatabase(r"C:\Temp\myDbFile.odb", , "SheetY.C5", "SELECT * FROM [Employees] ORDER BY [LastName]")

## InsertSheet

Fügt eine neue leere Tabelle vor einer bestehenden Tabelle oder am Ende der Tabellenliste ein.

### Syntax:

svc.InsertSheet(sheetname: str, [beforesheet: any]): bool

### Parameter:

sheetname: Der Name der neuen Tabelle.

beforesheet: Der Name (Zeichenfolge) oder Index (numerisch, beginnend mit 1) der Tabelle, vor der die neue Tabelle eingefügt werden soll. Dieses Argument ist optional und das Standardverhalten besteht darin, die Tabelle an der letzten Position einzufügen.

### Beispiel:

Das folgende Beispiel fügt eine neue leere Tabelle mit dem Namen "SheetX" ein und platziert sie vor "SheetY":

##### In Basic

        oDoc.InsertSheet("SheetX", "SheetY")

##### In Python

        myDoc.InsertSheet("SheetX", "SheetY")

## MoveRange

Verschiebt einen angegebenen Quellbereich in einen Zielbereich von Zellen. Die Methode gibt eine Zeichenfolge zurück, die den geänderten Zellbereich darstellt. Die Größe des modifizierten Bereichs wird vollständig durch die Größe des Quellbereichs bestimmt.

### Syntax:

svc.MoveRange(source: str, destination: str): str

### Parameter:

source: Der Quellbereich der Zellen als Zeichenfolge.

destination: Die Zielzelle als Zeichenfolge. Wenn ein Bereich angegeben ist, wird seine obere linke Zelle als Ziel betrachtet.

### Beispiel:

##### In Basic

        oDoc.MoveRange("SheetX.A1:F10", "SheetY.C5")

##### In Python

        myDoc.MoveRange("SheetX.A1:F10", "SheetY.C5")

## MoveSheet

Verschiebt eine vorhandene Tabelle und platziert sie vor einer angegebenen Tabelle oder am Ende der Tabellenliste.

### Syntax:

svc.MoveSheet(sheetname: str, [beforesheet: any]): bool

### Parameter:

sheetname: Der Name der zu verschiebenden Tabelle. Die Tabelle muss vorhanden sein oder es wird eine Ausnahme ausgelöst.

beforesheet: Der Name (Zeichenfolge) oder Index (numerisch, beginnend bei 1) der Tabelle, vor der die Originaltabelle platziert wird. Dieses Argument ist optional und das Standardverhalten besteht darin, die Tabelle an die letzte Position zu verschieben.

### Beispiel:

Das folgende Beispiel verschiebt die vorhandene Tabelle „SheetS“ und platziert sie vor „SheetY“:

##### In Basic

        oDoc.MoveSheet("SheetX", "SheetY")

##### In Python

        myDoc.MoveSheet("SheetX", "SheetY")

## Offset

Gibt einen neuen Bereich (als Zeichenfolge) zurück, der um eine bestimmte Anzahl von Zeilen und Spalten aus einem bestimmten Bereich versetzt ist.

Diese Methode hat das gleiche Verhalten wie die Funktion VERSCHIEBUNG des gleichnamigen Calc.

### Syntax:

svc.Offset(reference: str, rows: int = 0, columns: int = 0, [height: int], [width: int]): str

### Parameter:

reference: Der Bereich als Zeichenfolge, den die Methode als Referenz verwendet, um die Operation "offset" auszuführen.

rows: Die Anzahl der Zeilen, um die der anfängliche Bereich nach oben (negativer Wert) oder nach unten (positiver Wert) verschoben wird. Verwenden Sie 0 (Standard), um in derselben Zeile zu bleiben.

columns: Die Anzahl der Spalten, um die der anfängliche Bereich nach links (negativer Wert) oder nach rechts (positiver Wert) verschoben wird. Verwenden Sie 0 (Standard), um in derselben Spalte zu bleiben.

height: Die vertikale Höhe für einen Bereich, der an der neuen Bereichsposition beginnt. Lassen Sie dieses Argument weg, wenn keine vertikale Größenanpassung erforderlich ist.

width: Die horizontale Breite für einen Bereich, der an der neuen Bereichsposition beginnt. Lassen Sie dieses Argument weg, wenn keine horizontale Größenanpassung erforderlich ist.

Die Argumente rows und columns dürfen nicht zu Null oder einer negativen Anfangszeile oder -spalte führen.

Die Argumente height und width dürfen nicht zu Null oder einer negativen Anzahl von Zeilen oder Spalten führen.

### Beispiel:

##### In Basic

        oDoc.Offset("A1", 2, 2)
        ' SheetX.$C$3 (A1 um zwei Zeilen und zwei Spalten nach unten verschoben)
        oDoc.Offset("A1", 2, 2, 5, 6)
        ' SheetX.$C$3:$H$7 (A1 versetzt um zwei Zeilen und Spalten mit einer Breite von 5 Zeilen und 6 Spalten)

##### In Python

        myDoc.Offset("A1", 2, 2)
        myDoc.Offset("A1", 2, 2, 5, 6)

## OpenRangeSelector

Öffnet einen nicht modalen Dialog, der zur Auswahl eines Bereichs im Dokument verwendet werden kann, und gibt eine Zeichenfolge zurück, die den ausgewählten Bereich enthält.

Diese Methode öffnet denselben Dialog, der von LibreOffice verwendet wird, wenn die Schaltfläche Verkleinern gedrückt wird. Zum Beispiel hat der Dialog unter Extras – Zielwertsuche… eine Schaltfläche zum Verkleinern rechts neben dem Feld Formelzelle.

Diese Methode ändert die aktuelle Auswahl nicht.

### Syntax:

svc.OpenRangeSelector(opt title: str, opt selection: str, singlecell: bool = False, closeafterselect: bool = True): str

### Parameter:

title: Der Titel des Dialogs als Zeichenfolge.

selection: Ein optionaler Bereich, der anfänglich ausgewählt wird, wenn der Dialog angezeigt wird.

singlecell: Bei True (Standard) ist nur die Auswahl einzelner Zellen erlaubt. Bei False ist eine Bereichsauswahl erlaubt.

closeafterselect: Bei True (Standard) wird der Dialog unmittelbar nach der Auswahl geschlossen. Bei False kann der Benutzer die Auswahl beliebig oft ändern und den Dialog dann manuell schließen.

### Beispiel:

##### In Basic

        Dim sRange as String
        sRange = oDoc.OpenRangeSelector(Title := "Select a range")

##### In Python

        sRange = myDoc.OpenRangeSelector(title = "Select a range")

## Printf

Gibt die Eingabezeichenfolge zurück, nachdem ihre Zeichen "token" durch ihre Werte in einem bestimmten Bereich ersetzt wurden.

Diese Methode ändert die aktuelle Auswahl nicht.

Diese Methode kann verwendet werden, um schnell bestimmte Teile eines Bereichsnamens zu extrahieren, beispielsweise den Tabellennamen oder die erste Zellenspalte und -zeile, und sie zum Erstellen einer neuen Bereichsadresse zu verwenden.

### Syntax:

svc.Printf(inputstr: str, range: str, tokencharacter: str = "%"): str

### Parameter:

inputstr: Die Zeichenfolge, welche "token" enthält, die durch die entsprechenden Werte in range ersetzt werden.

range: Ein RangeName, aus dem Werte extrahiert werden. Wenn er einen Tabellennamen enthält, muss die Tabelle vorhanden sein.

tokencharacter: Zeichen zur Identifizierung von "token". Standardmäßig ist "%" das Zeichen für "token". Folgende "token" werden akzeptiert:

- %S – Der Tabellenname, der den Bereich enthält, einschließlich einfacher Anführungszeichen, falls erforderlich.

- %R1 – Die Zeilennummer der obersten linken Zelle des Bereichs.

- %C1 – Der Spaltenbuchstabe der obersten linken Zelle des Bereichs.

- %R2 – Die Zeilennummer der unteren rechten Zelle des Bereichs.

- %C2 – Der Spaltenbuchstabe der unteren rechten Zelle des Bereichs.

### Beispiel:

##### In Basic

Das folgende Beispiel extrahiert jedes Element des in sRange definierten RangeName und verwendet sie, um eine Nachricht zu erstellen.

        Dim sRange as String, sInputStr as String
        sRange = "Sheet1.A1:E10"
        sInputStr = "Sheet name: %S" & Chr(10) & _
                    "First row: %R1" & Chr(10) & _
                    "First column %C1" & Chr(10) & _
                    "Last row %R2" & Chr(10) & _
                    "Last column %C2"
        MsgBox oDoc.Printf(sInputStr, sRange)

Die Methode Printf kann mit SetFormula kombiniert werden, um Formeln über mehrere Zellen zu erstellen. Stellen Sie sich beispielsweise eine Tabelle mit numerischen Werten im Bereich „A1:E10“ vor, aus der Formeln erstellt werden sollen, um die Werte in jeder Zeile zu summieren und die Ergebnisse im Bereich „F1:F10“ zu platzieren:

        Dim sFormula as String, sRange as String
        sRange = "A1:E10"
        ' Beachten Sie die Verwendung des Zeichens "$"
        sFormula = "=SUM($%C1%R1:$%C2%R1)"
        oDoc.SetFormula("F1:F10", oDoc.Printf(sFormula, sRange))

##### In Python

        sRange = "Sheet1.A1:E10"
        sInputStr = "Sheet name: %S\n" \
                    "First row: %R1\n" \
                    "First column %C1\n" \
                    "Last row %R2\n" \
                    "Last column %C2"
        bas = CreateScriptService("Basic")
        bas.MsgBox(myDoc.Printf(sInputStr, sRange))

        sRange = "A1:E10
        sFormula = "=SUM($%C1%R1:$%C2%R1)"
        myDoc.SetFormula("F1:F10", myDoc.Printf(sFormula, sRange))

## PrintOut

Diese Methode sendet den Inhalt der angegebenen Tabelle an den Standarddrucker oder an den Drucker, der durch die Methode SetPrinter des Dienstes Document definiert wurde.

Gibt True zurück, wenn die Tabelle erfolgreich gedruckt wurde.

### Syntax:

svc.PrintOut(opt sheetname: str, pages: str = "", copies: num = 1): bool

### Parameter:

sheetname: Die zu druckende Tabelle, Standard ist die aktive Tabelle.

pages: Die zu druckenden Seiten als Zeichenfolgen wie in der Benutzeroberfläche. Beispiel: "1-4;10;15-18". Standard ist alle Seiten.

copies: Die Anzahl der Kopien. Standard ist 1.

### Beispiel:

##### In Basic

        If oDoc.PrintOut("SheetX", "1-4;10;15-18", Copies := 2) Then
            ' ...
        End If

##### In Python

        if doc.PrintOut('SheetX', copies=3, pages='45-88'):
            # ...

## RemoveDuplicates

Entfernt doppelte Zeilen aus einem angegebenen Bereich. Der Vergleich zur Feststellung, ob es sich bei einer bestimmten Zeile um ein Duplikat handelt, erfolgt auf Grundlage einer Teilmenge der Spalten im Bereich.

Diese Methode gibt eine Zeichenfolge zurück, die den resultierenden Bereich enthält.

Das Entfernen doppelter Zeilen erfolgt beginnend bei der ersten Zeile im Bereich und bewegt sich nach unten. Das heißt, wenn zwei oder mehr Zeilen Duplikate sind, wird nur die erste beibehalten.

### Syntax:

svc.RemoveDuplicates(range: str, opt columns: int[0..*], header: bool = False, casesensitive: bool = False, mode: str = "COMPACT"): str

### Parameter:

range: Der Bereich, aus dem Duplikate entfernt werden, als Zeichenfolge.

columns: Eine Matrix mit Spaltennummern, die angeben, welche Spalten berücksichtigt werden, um zu bestimmen, ob eine Zeile ein Duplikat ist oder nicht. Wenn dieses Argument leer bleibt, wird nur die erste Spalte verwendet. Elemente in dieser Matrix müssen im Intervall zwischen 1 und der Bereichsbreite liegen.

header: Legt fest, ob die erste Zeile eine Kopfzeile ist (Standard = False).

casesensitive: Legt fest, ob bei Vergleichen der Zeichenfolgen die Groß-/Kleinschreibung beachtet wird (Standard = False).

mode: Legt fest, was mit doppelten Zeilen geschehen soll. Wenn mode = "CLEAR", werden Duplikate einfach aus der Tabelle entfernt, wobei die Zellen leer bleiben. Wenn mode = "COMPACT", werden Duplikate entfernt und leere Zeilen komprimiert (Standard = "COMPACT").

### Beispiel:

##### In Basic

        ' Entfernt doppelte Zeilen, in denen Werte in Spalte A doppelt vorhanden sind
        ' Beachten Sie, dass alle optionalen Argumente ihren Standardwert verwenden
        oDoc.RemoveDuplicates("A1:B10")
        ' Entfernt doppelte Zeilen unter Berücksichtigung der Tatsache, dass die erste Zeile Überschriften enthält
        ' Die Spalten A und B werden verwendet, um festzustellen, ob eine Zeile ein Duplikat ist
        ' Zellen mit doppelten Werten bleiben leer
        oDoc.RemoveDuplicates("A1:D10", columns := Array(1, 2), header := True, mode := "CLEAR")

##### In Python

        myDoc.RemoveDuplicates("A1:B10")
        myDoc.RemoveDuplicates("A1:D10", columns = (1, 2), header = True, mode = "CLEAR")

## RemoveSheet

Entfernt eine vorhandene Tabelle aus dem Dokument.

### Syntax:

svc.RemoveSheet(sheetname: str): bool

### Parameter:

Tabellenname: Der Name der zu entfernenden Tabelle.

### Beispiel:

##### In Basic

        oDoc.RemoveSheet("SheetY")

##### In Python

        myDoc.RemoveSheet("SheetY")

## RenameSheet

Benennt die angegebene Tabelle um und gibt bei Erfolg True zurück.

### Syntax:

svc.RenameSheet(sheetname: str, newname: str): bool

### Parameter:

sheetname: Der Name der umzubenennenden Tabelle.

newname: Der neue Name der Tabelle. Sie darf noch nicht existieren.

### Beispiel:

In diesem Beispiel wird die aktive Tabelle in "SheetY" umbenannt:

##### In Basic

        oDoc.RenameSheet("~", "SheetY")

##### In Python

        mydoc.RenameSheet("~", "SheetY")

## SetArray

Speichert den angegebenen Wert ab einer angegebenen Zielzelle. Der aktualisierte Bereich erweitert sich von der Zielzelle oder von der oberen linken Ecke des angegebenen Bereichs, um die Größe des Eingabearguments value aufzunehmen. Vektoren werden immer vertikal erweitert.

Die Methode gibt eine Zeichenfolge zurück, die den geänderten Bereich als Zellbereich darstellt.

### Syntax:

svc.SetArray(targetcell: str, value: any): str

### Parameter:

targetcell: Die Zelle oder ein Bereich als Zeichenfolge, ab welcher/welchem der angegebene Wert gespeichert werden soll.

value: Ein Skalar, ein Vektor oder eine Matrix (in Python, ein- oder zweidimensionale Listen und Tupel) mit den neuen Werten, die aus der Zielzelle oder aus der oberen linken Ecke des Bereichs gespeichert werden sollen, wenn targetcell ein Bereich ist. Die neuen Werte müssen Zeichenfolgen, numerische Werte oder Datumsangaben sein. Bei anderen Typen werden die entsprechenden Zellen geleert.

### Beispiel:

##### In Basic

Das folgende Beispiel verwendet die integrierte Funktion "DimArray", um eine Matrix zu erstellen und es dann in Zelle "A1" zu speichern:

        Dim arrData as Variant
        arrData = DimArray(2, 1)
        arrData(0, 0) = 1 : arrData(1, 0) = 2 : arrData(2, 0) = 3
        arrData(0, 1) = "One" : arrData(1, 1) = "Two" : arrData(2, 1) = "Three"
        oDoc.SetArray("Sheet1.A1", arrData)

Dieses Beispiel verwendet die Methode RangeInit des Dienstes ScriptForge Array, um eine Matrix mit Werten zu erstellen, die dann von Zelle "A1" und abwärts gespeichert werden.

        ' Erste Spalte mit Werten von 1 bis 1000 füllen
        oDoc.SetArray("Sheet1.A1", SF_Array.RangeInit(1, 1000))

##### In Python

        arrData = ((1, "One"), (2, "Two"), (3, "Three"))
        myDoc.SetArray("Sheet1.A1", arrData)

        myDoc.SetArray("Sheet1.A1", tuple(i + 1 for i in range(1000)))

Um den gesamten Inhalt einer MAtrix in einer Tabelle auszugeben, verwenden Sie SetArray. Um den Inhalt eines Arrays nur innerhalb der Grenzen des Zielbereichs von Zellen auszugeben, verwenden Sie SetValue.

## SetCellStyle

Wendet die angegebene Zellvorlage auf den angegebenen Zielbereich an. Der gesamte Bereich wird aktualisiert und der Rest der Tabelle bleibt unberührt. Wenn die Zellvorlage nicht vorhanden ist, wird ein Fehler ausgelöst.

Die Methode gibt eine Zeichenfolge zurück, die den geänderten Bereich als Zellbereich darstellt.

### Syntax:

svc.SetCellStyle(targetrange: str, style: str, opt filterformula: str, opt filterscope: str): str

### Parameter:

targetrange: Der Bereich, auf den die Vorlage angewendet wird, als Zeichenfolge.

style: Der Name der anzuwendenden Zellvorlage.

filterformula: Eine Berechnungsformel, die auf den angegebenen Bereich angewendet werden soll, um zu bestimmen, welche Zellen betroffen sind. Die angegebene Formel muss True oder False zurückgeben. Wenn dieses Argument nicht angegeben wird, sind alle Zellen im Bereich betroffen.

filterscope: Legt fest, wie filterformula auf den angegebenen Bereich erweitert wird. Dieses Argument ist obligatorisch, wenn filterformula angegeben wird. Folgende Werte werden akzeptiert:

- "CELL": Die im Argument filterformula angegebene Formel wird einmal für jede Zelle in range expandiert.

- "ROW": Die im Argument filterformula angegebene Formel wird einmal für jede Zeile in range expandiert.

- "COLUMN": Die im Argument filterformula angegebene Formel wird einmal für jede Spalte in range expandiert.

### Beispiel:

##### In Basic

        oDoc.SetCellStyle("A1:J1", "Heading 1")
        oDoc.SetCellStyle("A2:J100", "Neutral")

##### In Python

        myDoc.SetCellStyle("A1:J1", "Heading 1")
        myDoc.SetCellStyle("A2:J100", "Neutral")

In der Methodendokumentation ClearAll finden Sie Beispiele für die Verwendung der Argumente filterformula und filterscope.

## SetFormula

Fügt die angegebene(n) Formel(n) in den angegebenen Bereich ein. Die Größe des modifizierten Bereichs ist gleich der Größe des Bereichs.

Die Methode gibt eine Zeichenfolge zurück, die den geänderten Bereich als Zellbereich darstellt.

### Syntax:

svc.SetFormula(targetrange: str, formula: any): str

### Parameter:

targetrange: Der Bereich zum Einfügen der Formeln als Zeichenfolge.

formula: Eine Zeichenfolge, ein Vektor oder eine Matrix von Zeichenfolgen mit den neuen Formeln für jede Zelle im Zielbereich.

Der gesamte Bereich wird aktualisiert und der Rest der Tabelle bleibt unverändert.

Wenn die angegebene Formel eine Zeichenfolge ist, wird die eindeutige Formel entlang des gesamten Bereichs mit Anpassung der relativen Referenzen eingefügt.

Wenn die Größe von formula kleiner als die Größe von targetrange ist, dann werden die restlichen Zellen geleert.

Wenn die Größe von formula größer ist als die Größe von targetrange, dann werden die Formeln nur teilweise kopiert, bis sie die Größe von targetrange ausfüllen.

Vektoren werden immer vertikal expandiert, außer wenn targetrange eine Höhe von genau einer Zeile hat.

Berechnungsfunktionen, die im Argument formula verwendet werden, müssen mit ihren englischen Namen ausgedrückt werden. Besuchen Sie die Wiki-Seite Liste der Calc-Funktionen für eine vollständige Liste der Calc-Funktionen.

### Beispiel:

##### In Basic

        oDoc.SetFormula("A1", "=A2")
        ' Horizontaler Vektor, teilweise leer
        oDoc.SetFormula("A1:F1", Array("=A2", "=B2", "=C2+10"))
        ' D2 enthält die Formel "=H2"
        oDoc.SetFormula("A1:D2", "=E1")

##### In Python

        myDoc.SetFormula("A1", "=A2")
        myDoc.SetFormula("A1:F1", ("=A2", "=B2", "=C2+10"))
        myDoc.SetFormula("A1:D2", "=E1")

## SetValue

Speichert den angegebenen Wert im angegebenen Bereich. Die Größe des modifizierten Bereichs entspricht der Größe des Zielbereichs.

Die Methode gibt eine Zeichenfolge zurück, die den geänderten Bereich als Zellbereich darstellt.

### Syntax:

svc.SetValue(targetrange: str, value: any): str

### Parameter:

targetrange: Der Bereich, in dem der angegebene Wert als Zeichenfolge gespeichert werden soll.

value: Ein Skalar, ein Vektor oder eine Matrix mit den neuen Werten für jede Zelle des Bereichs. Die neuen Werte müssen Zeichenfolgen, numerische Werte oder Datumsangaben sein. Bei anderen Typen werden die entsprechenden Zellen geleert.

Der gesamte Bereich wird aktualisiert und der Rest der Tabelle bleibt unverändert. Wenn die Größe von value kleiner als die Größe von targetrange ist, dann werden die restlichen Zellen geleert.

Wenn die Größe von value größer als die Größe von targetrange ist, dann wird value nur teilweise kopiert, bis es die Größe von targetrange ausfüllt.

Vektoren werden vertikal expandiert, außer wenn targetrange eine Höhe von genau 1 Zeile hat.

### Beispiel:

##### In Basic

        oDoc.SetValue("A1", 2)
        ' Die Matrix "Below the Value" ist kleiner als "TargetRange" (verbleibende Zellen werden geleert)
        oDoc.SetValue("A1:F1", Array(1, 2, 3))
        ' "Below the Value" und "TargetRange" haben die gleiche Größe
        oDoc.SetValue("A1:D2", SF_Array.AppendRow(Array(1, 2, 3, 4), Array(5, 6, 7, 8)))

Wenn Sie eine einzelne Zeile mit Werten füllen möchten, können Sie die Funktion Offset verwenden. Beachten Sie im folgenden Beispiel, dass arrData eine eindimensionale Matrix ist:

        Dim firstCell As String : firstCell = "A1"
        Dim lenArray As Integer : lenArray = UBound(arrData) - LBound(arrData) + 1
        Dim newRange As String : newRange = oDoc.Offset(firstCell, width = lenArray)
        oDoc.SetValue(newRange, arrData)

##### In Python

        myDoc.SetValue("A1", 2)
        myDoc.SetValue("A1:F1", (1, 2, 3))
        myDoc.SetValue("A1:D2", ((1, 2, 3, 4), (5, 6, 7, 8)))

        firstCell = "A1"
        newRange = doc.Offset(firstCell, width = len(arrData))
        doc.SetValue(newRange, arrData)

## ShiftDown

Verschiebt einen bestimmten Zellbereich nach unten, indem leere Zeilen eingefügt werden. Die aktuelle Auswahl ist davon nicht betroffen.

Abhängig vom Wert des Arguments wholerow können die eingefügten Zeilen entweder die Breite des angegebenen Bereichs oder alle Spalten in der Zeile umfassen.

Diese Methode gibt eine Zeichenfolge zurück, welche die neue Position des ursprünglichen Bereichs darstellt.

Wenn der verschobene Bereich die Tabellenränder überschreitet, passiert nichts.

### Syntax:

svc.ShiftDown(range: str, wholerow: bool = False, opt rows: int): str

### Parameter:

range: Der Bereich, über dem Zeilen eingefügt werden, als Zeichenfolge.

wholerow: Wenn auf False gesetzt (Standard), dann entspricht die Breite der eingefügten Zeilen der Breite des angegebenen range. Andernfalls erstreckt sich die eingefügte Zeile über alle Spalten in der Tabelle.

rows: Die Anzahl der einzufügenden Zeilen. Der Standardwert ist die Höhe des ursprünglichen range. Die Anzahl der Zeilen muss eine positive Zahl sein.

### Beispiel:

##### In Basic

        ' Verschiebt den Bereich "A3:D3" um eine Zeile nach unten; betrifft nur die Spalten A bis D
        oDoc.ShiftDown("A3:D3")
        ' Die eingefügte Zeile erstreckt sich über alle Spalten in der Tabelle
        oDoc.ShiftDown("A3:D3", WholeRow := True)
        ' Verschiebt den Bereich "A3:D3" um fünf Zeilen nach unten
        oDoc.ShiftDown("A3:D3", Rows := 5)
        ' Verschiebt den Bereich "A3:D10" um zwei Zeilen nach unten und zeigt die neue Position des ursprünglichen Bereichs an
        Dim sNewRange as String
        sNewRange = oDoc.ShiftDown("A3:D10", Rows := 2)
        MsgBox sNewRange   ' $Sheet1.$A$5:$D$12

##### In Python

        myDoc.ShiftDown("A3:D3")
        myDoc.ShiftDown("A3:D3", wholerow = True)
        myDoc.ShiftDown("A3:D3", rows = 5)
        sNewRange = myDoc.ShiftDown("A3:D10", rows = 2)
        bas = CreateScriptService("Basic")
        bas.MsgBox(sNewRange)

## ShiftLeft

Löscht die äußerst linken Spalten eines bestimmten Bereichs und verschiebt alle Zellen rechts vom betroffenen Bereich nach links. Die aktuelle Auswahl ist davon nicht betroffen.

Abhängig vom Wert des Arguments wholecolumn können die gelöschten Spalten entweder die Höhe des angegebenen Bereichs oder alle Zeilen in der Spalte umfassen.

Diese Methode gibt eine Zeichenfolge zurück, welche die Position des verbleibenden Teils des ursprünglichen Bereichs darstellt. Wenn alle Zellen im ursprünglichen Bereich gelöscht wurden, wird eine leere Zeichenfolge zurückgegeben.

### Syntax:

svc.ShiftLeft(range: str, wholecolumn: bool = False, opt columns: int): str

### Parameter:

range: Der Bereich, aus dem Zellen gelöscht werden, als Zeichenfolge.

wholecolumn: Wenn auf False gesetzt (Standard), dann ist die Höhe der gelöschten Spalten gleich der Höhe des angegebenen range. Andernfalls erstrecken sich die gelöschten Spalten über alle Zeilen in der Tabelle.

colums: Die Anzahl der zu löschenden Spalten aus dem angegebenen range. Der Standardwert ist die Breite des ursprünglichen range, der auch der Maximalwert dieses Arguments ist.

### Beispiel:

##### In Basic

        ' Löscht den Bereich "B3:B6"; bewegt alle verbleibenden Zellen nach rechts
        oDoc.ShiftLeft("B3:B6")
        ' Löscht die erste Spalte im Bereich "A3:D6"
        oDoc.ShiftLeft("A3:D6", Columns := 1)
        ' Die gelöschten Spalten (A bis D) erstrecken sich über alle Zeilen in der Tabelle
        oDoc.ShiftLeft("A3:D6", WholeColumn := True)

##### In Python

        myDoc.ShiftLeft("B3:B6")
        myDoc.ShiftLeft("A3:D6", Columns = 1)
        myDoc.ShiftLeft("A3:D6", WholeColumn = True)

## ShiftUp

Löscht die obersten Zeilen eines bestimmten Bereichs und verschiebt alle Zellen unterhalb des betroffenen Bereichs nach oben. Die aktuelle Auswahl ist davon nicht betroffen.

Abhängig vom Wert des Arguments wholerow können die gelöschten Zeilen entweder die Breite des angegebenen Bereichs oder alle Spalten in der Zeile umfassen.

Diese Methode gibt eine Zeichenfolge zurück, welche die Position des verbleibenden Teils des ursprünglichen Bereichs darstellt. Wenn alle Zellen im ursprünglichen Bereich gelöscht wurden, wird eine leere Zeichenfolge zurückgegeben.

### Syntax:

svc.ShiftUp(range: str, wholerow: bool = False, opt rows: int): str

### Parameter:

range: Der Bereich, aus dem Zellen gelöscht werden, als Zeichenfolge.

wholerow: Wenn auf False gesetzt (Standard), dann entspricht die Breite der gelöschten Zeilen der Breite des angegebenen range. Andernfalls erstreckt sich die gelöschte Zeile über alle Spalten in der Tabelle.

rows: Die Anzahl der zu löschenden Zeilen aus dem angegebenen range. Der Standardwert ist die Höhe des ursprünglichen range, der auch der Maximalwert dieses Arguments ist.

### Beispiel:

##### In Basic

        ' Löscht den Bereich "A3:D3"; verschiebt alle darunterliegenden Zellen um eine Zeile nach oben
        oDoc.ShiftUp("A3:D3")
        ' Löscht die erste Zeile im Bereich "A3:D6"
        oDoc.ShiftUp("A3:D6", Rows := 1)
        ' Die gelöschten Zeilen erstrecken sich über alle Spalten in der Tabelle
        oDoc.ShiftUp("A3:D6", WholeRow := True)

##### In Python

        myDoc.ShiftUp("A3:D3")
        myDoc.ShiftUp("A3:D6", rows = 1)
        myDoc.ShiftUp("A3:D6", wholerow = True)

## ShiftRight

Verschiebt einen bestimmten Zellbereich nach rechts, indem leere Spalten eingefügt werden. Die aktuelle Auswahl ist davon nicht betroffen.

Abhängig vom Wert des Arguments wholecolumn können die eingefügten Spalten entweder die Höhe des angegebenen Bereichs oder alle Zeilen in der Spalte umfassen.

Diese Methode gibt eine Zeichenfolge zurück, welche die neue Position des ursprünglichen Bereichs darstellt.

Wenn der verschobene Bereich die Tabellenränder überschreitet, passiert nichts.

### Syntax:

svc.ShiftRight(range: str, wholecolumn: bool = False, opt columns: int): str

### Parameter:

range: Der Bereich, in den leere Spalten links eingefügt werden, als Zeichenfolge.

wholecolumn: Wenn auf False gesetzt (Standard), dann entspricht die Höhe der eingefügten Spalten der Höhe des angegebenen range. Andernfalls erstrecken sich die eingefügten Spalten über alle Zeilen in der Tabelle.

columns: Die Anzahl der einzufügenden Spalten. Der Standardwert ist die Breite des ursprünglichen range.

### Beispiel:

##### In Basic

        ' Bewegt den Bereich "A3:A6" um eine Spalte nach rechts; betrifft nur die Zeilen 3 bis 6
        oDoc.ShiftRight("A3:A6")
        ' Bewegt den Bereich "A3:A6" um fünf Spalten nach rechts
        oDoc.ShiftRight("A3:A6", Columns := 5)
        ' Die eingefügte Spalte erstreckt sich über alle Zeilen in der Tabelle
        oDoc.ShiftRight("A3:A6", WholeColumn := True)

##### In Python

        myDoc.ShiftRight("A3:A6")
        myDoc.ShiftRight("A3:A6", columns = 5)
        myDoc.ShiftRight("A3:A6", wholecolumn = True)

## SortRange

Sortieren Sie den angegebenen Bereich nach einer beliebigen Anzahl von Spalten/Zeilen. Die Sortierreihenfolge kann je nach Spalte/Zeile variieren. Wenn die Anzahl der Sortierschlüssel > 3 ist, wird der Bereich mehrmals nach Gruppen von 3 Schlüsseln sortiert, beginnend mit dem letzten Schlüssel. Es wird eine Zeichenfolge zurückgegeben, die den geänderten Zellbereich darstellt. Die Größe des geänderten Bereichs wird vollständig durch die Größe des Quellbereichs bestimmt.

### Syntax:

svc.SortRange(range: str, sortkeys: any, sortorder: any = "ASC", destinationcell: str = "", containsheader: bool = False, casesensitive: bool = False, sortcolumns: bool = False): str

### Parameter:

range: Der zu sortierende Bereich als Zeichenfolge.

sortkeys: Eine Zahl (wenn 1 Spalte/Zeile) oder eine Matrix von Spalten-/Zeilennummern beginnend bei 1.

sortorder: Ein Skalar oder eine Matrix von Zeichenfolgen mit den Werten „ASC“ (aufsteigend) und „DESC“ (absteigend). Jedes Element wird mit dem entsprechenden Element in sortkeys gepaart. Wenn die Matrix sortorder kürzer als sortkeys ist, werden die verbleibenden Schlüssel in aufsteigender Reihenfolge sortiert.

destinationcell: Die Zielzelle des sortierten Zellenbereichs als Zeichenfolge. Wenn ein Bereich angegeben ist, wird nur die obere linke Zelle berücksichtigt. Standardmäßig wird der Quellbereich überschrieben.

containsheader: Bei True wird die erste Zeile/Spalte nicht sortiert.

casesensitive: Nur für Zeichenfolgenvergleiche. Standard = Falsch

sortcolumns: Bei True werden die Spalten von links nach rechts sortiert. Standard = False: Zeilen werden von oben nach unten sortiert.

### Beispiel:

##### In Basic

        ' Bereich nach Spalten A (aufsteigend) und C (absteigend) sortieren
        oDoc.SortRange("A2:J200", Array(1, 3), Array("ASC", "DESC"), CaseSensitive := True)

##### In Python

        myDoc.SortRange("A2:J200", (1, 3), ("ASC", "DESC"), casesensitive = True)

Alle ScriptForge Basic-Routinen oder Bezeichner, denen ein Unterstrich "_" vorangestellt ist, sind für den internen Gebrauch reserviert. Sie sind nicht für die Verwendung in Basic-Makros oder Python-Skripten vorgesehen.

Verwandte Themen

Dienst SFDocuments.Chart

Dienst SFDocuments.Document

Dienst ScriptForge.UI