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:

note

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:

note

• 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)
  
tip

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:

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")
    
tip

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 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.


tip

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
  
tip

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")
  
tip

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.

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.

tip

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:

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:

Beispiel:

In Basic

      oDoc.ClearFormats("SheetX.*")
  
In Python

    myDoc.ClearFormats("SheetX.*")
  
tip

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:

Beispiel:

In Basic

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

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

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.

note

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.

note

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.

note

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.

note

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")
  
tip

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()
  
tip

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.

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"
  
tip

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)
  
tip

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")
  
note

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.

note

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:

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))
  
note

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.

note

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")
  
note

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:

Beispiel:

In Basic

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

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

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.

note

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.

tip

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:

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.

note

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)))
  
tip

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:

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")
  
tip

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.

note

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.

note

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.

note

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)
  
warning

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.


Bitte unterstützen Sie uns!