Vsebina
Kazalo 🔎︎

# Storitev SFDocuments.Calc

Knjižnica SFDocuments vsebuje metode in lastnosti, ki pomagajo pri upravljanju in ravnanju z dokumenti LibreOffice Calc.

Nekatere metode so generične za vse vrste dokumentov in se dedujejo iz storitve Document, medtem ko so druge metode specifične za modul SF_Calc.

Modul SF_Calc se osredotoča na:

- ravnanje z delovnimi listi v dokumentu Calc (kopiraj, vstavi, premakni itn.);

- izmenjavo podatkov med podatkovnimi strukturami Basica in obsegi programa Calc;

- kopiranje in uvažanje ogromnih količin podatkov.

## Priklic storitve

Storitev Calc je tesno povezana s storitvijo UI knjižnice ScriptForge. Sledi nekaj primerov, kako lahko prikličete storitev Calc.

##### V Basicu

Spodnji odlomek kode ustvari instanco storitve Calc, ki se nanaša na trenutno dejavni dokument Calc.

        Set oDoc = CreateScriptService("Calc")

Drugi način ustvarjanja instance storitve Calc je z uporabo storitve UI. Naslednji primer ustvari nov dokument programa Calc in oDoc je instanca storitve Calc:

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

Ali z uporabo metode OpenDocument iz storitve UI:

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

Instanco storitve Calc lahko tvorite tudi z metodo CreateScriptService:

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

V zgornjem primeru je »MyFile.ods« ime okna odprtega dokumenta. Če ta argument ni podan, je upoštevano dejavno okno.

Priporočamo, da po uporabi sprostite vire:

        Set oDoc = oDoc.Dispose()

Če je dokument zaprt z metodo CloseDocument, ni potrebno sproščati virov z zgoraj opisanim ukazom.

##### V Pythonu

        myDoc = CreateScriptService("Calc")

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

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

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

Uporaba predpone "SFDocuments." pri klicu storitve je neobvezna.

## Definicije

Številne metode zahtevajo za argument "Sheet" (delovni list) ali "Range" (obseg). Posamezne celice veljajo za poseben primer obsega (Range).

Oba lahko izrazite z nizom ali s sklicem (= predmet), odvisno od situacije:

- V določeni instanci storitve Calc so delovni listi in obsegi podani kot »Sheet1« in »D2:F6«.

- Poleg tega lastnosti .Sheet in .Range vrneta sklic, ki je lahko uporabljen kot argument metode, klicane iz druge instance storitve Calc.

### Primer:

Spodnji primer kopira podatke iz dokumenta A (odprtega samo za branje in skritega) v dokument B.

##### V Basicu

        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)

##### V Pythonu

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

### SheetName

Lahko je ime delovnega lista kot string ali object, ki ga poda lastnost .Sheet.

Nadomestni znak "~" (tilda) predstavlja trenutni delovni list.

### RangeName

Niz, ki označuje množico zveznih celic, ki se nahajajo na delovnem listu trenutne instance, ali predmet object, ki ga ustvari lastnost .Range.

Nadomestni znak "~" (tilda) predstavlja trenutni izbor ali prvi izbrani obseg, če je izbranih več obsegov.

Nadomestni znak "*" predstavlja vse uporabljene celice.

Ime delovnega lista v obsegu ni obvezno (privzeto = aktivni delovni list). Obsegajoči enojni narekovaji in znaki $ so dovoljeni, vendar so prezrti.

Z izjemo lastnosti CurrentSelection storitev Calc obravnava le posamezne obsege celic.

Primeri veljavnih obsegov
1) '$DelovniListX'.D2 2) $D$2 | Posamična celica
1) '$DelovniListX'.D2:F6 2) D2:D10 | Enojen obseg z več celicami
'$DelovniListX'.* | Vse uporabljene celice na danem delovnem listu
1) '$DelovniListX'.A:A (stolpec A) 2) 3:5 (vrstice od 3 do 5) | Vse celice v zveznih stolpcih ali vrsticah do nazadnje uporabljene celice
mojObseg | Obseg z imenom »mojObseg« na ravni delovnega lista
1) ~.nekObseg 2) DelovniListX.nekObseg | Ime obsega na ravni delovnega lista
mojDokument.Range("DelovniListX.D2:F6") | Obseg na delovnem listu DelovniListX v datoteki, povezani z instanco Calc mojDokument
~.~ ali ~ | Trenutni izbor na aktivnem delovnem listu

## Lastnosti

Vse lastnosti, splošne za poljuben dokument, se lahko implicitno uporabljajo tudi za dokumente Calc. Za več informacij si oglejte stran pomoči za storitev Document.

Lastnosti, ki so posebej na voljo za dokumente Calc, so:

Ime | Samo za branje | Argument | Vrsta | Opis
CurrentSelection | Ne | Brez | Niz ali polje nizov | Enojni izbrani obseg kot niz ali seznam izbranih obsegov kot polje
Height | Da | ImeObsega As String | Long | Število vrstic (>= 1) v danem obsegu
LastCell | Da | ImeDelovnegaLista As String | String | Nazadnje uporabljena celica v zapisu 'A1' na danem delovnem listu
LastColumn | Da | ImeDelovnegaLista As String | Long | Nazadnje uporabljen stolpec v danem delovnem listu
LastRow | Da | ImeDelovnegaLista As String | Long | Nazadnje uporabljena vrstica v danem delovnem listu
Range | Da | ImeObsega As String | Object | Sklic na obseg, ki ga lahko uporabite kot argument za metode, kakršna je CopyToRange
Sheet | Da | ImeDelovnegaLista As String | Object | Sklic na delovni list, ki ga lahko uporabite kot argument za metode, kakršna je CopySheet
Sheets | Da | Brez | Polje nizov | Seznam z imeni vseh obstoječih delovnih listov
Width | Da | ImeObsega As String | Long | Število stolpcev (>= 1) v danem obsegu
XCellRange | Da | ImeObsega As String | Object | Predmet UNO com.sun.star.Table.XCellRange
XSpreadsheet | Da | ImeDelovnegaLista As String | Object | Predmet UNO com.sun.star.sheet.XSpreadsheet

Obiščite spletišče dokumentacije API LibreOffice, da izveste več o UNO-predmetih XCellRange in XSpreadsheet.

## Metode

Seznam metod v storitvi Calc
Activate ClearAll ClearFormats ClearValues CopySheet CopySheetFromFile CopyToCell CopyToRange DAvg DCount | DMax DMin DSum Forms GetColumnName GetFormula GetValue ImportFromCSVFile ImportFromDatabase InsertSheet | MoveRange MoveSheet Offset RemoveSheet RenameSheet SetArray SetValue SetCellStyle SetFormula SortRange

## Activate

Če je argument SheetName podan, je podani delovni list aktiviran in postane trenutni izbrani delovni list. Če argument manjka, se aktivira okno dokumenta.

### Skladnja:

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

### Parametri:

sheetname: ime delovnega lista, ki ga želite v dokumentu narediti dejavnega. Privzeta vrednost je prazen niz, kar pomeni, da bo okno dokumenta aktivirano brez spremembe dejavnega delovnega lista.

### Primer:

Spodnji primer aktivira delovni list z imenom "Sheet4" v trenutno aktivnem dokumentu.

##### V Basicu

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

##### V Pythonu

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

Aktiviranje delovnega lista je smiselno le za delo z dokumentom programa Calc. Da bi zagotovili, da je dokument Calc dosegljiv, lahko uporabite lastnost isCalc predmeta dokumenta, ki vrne True, če gre za dokument Calc, sicer pa False.

## ClearAll

Počisti vso vsebino in oblikovanje podanega obsega.

### Skladnja:

svc.ClearAll(range: str)

### Parametri:

Range: obseg, ki bo počiščen, kot niz.

### Primer:

##### V Basicu

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

##### V Pythonu

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

## ClearFormats

Počisti oblikovanje in sloge v podanem obsegu.

### Skladnja:

svc.ClearFormats(range: str)

### Parametri:

Range: obseg, katerega oblikovanje in slogi bodo počiščeni, kot niz.

### Primer:

##### V Basicu

          oDoc.ClearFormats("SheetX.*")

##### V Pythonu

        myDoc.ClearFormats("SheetX.*")

## ClearValues

Počisti vrednosti in formule v podanem obsegu.

### Skladnja:

svc.ClearValues(range: str)

### Parametri:

Range: obseg, katerega vrednosti in formule bodo počiščeni, kot niz.

### Primer:

##### V Basicu

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

##### V Pythonu

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

## CopySheet

Kopira navedeni delovni list pred obstoječi delovni list ali na konec seznama delovnih listov. Delovni list, ki bo kopiran, je lahko vsebovan v poljubnem odprtem dokumentu programa Calc. Vrne True, če uspe.

### Skladnja:

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

### Parametri:

Sheetname: ime delovnega lista, ki bo kopiran, kot niz ali sklic nanj kot predmet.

Newname: ime delovnega lista, ki bo vstavljen. Ime ne sme biti uporabljeno v dokumentu.

Beforesheet: ime (niz) ali indeks (številski, od 1 naprej) delovnega lista, pred katerega bo vstavljen kopiran delovni list. Ta argument je neobvezen in privzeto dejanje je dodajanje kopiranje delovnega lista na končni položaj.

### Primer:

##### V Basicu

Naslednji primer naredi kopijo delovnega lista "SheetX" in jo postavi kot zadnji delovni list v trenutni dokument. Ime kopiranega delovnega lista je "SheetY".

        Dim oDoc as Object
        'Postavi predmet Document v dejavno okno
        Set oDoc = CreateScriptService("Calc")
        oDoc.CopySheet("SheetX", "SheetY")

Spodnji primer kopira "SheetX" iz "FileA.ods" in ga prilepi na zadnje mesto v "FileB.ods" z imenom "SheetY":

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

##### V Pythonu

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

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

Za kopiranje delovnih listov med odprtimi dokumenti uporabite CopySheet. Če želite kopirati delovne liste iz dokumentov, ki so zaprti, uporabite CopySheetFromFile.

## CopySheetFromFile

Kopira navedeni delovni list iz zaprtega dokumenta Calc in ga prilepi pred obstoječi delovni list ali na konec delovnih listov datoteke, na katero se sklicuje predmet Document.

Če datoteka ne obstaja, prikliče napako. Če datoteka ni veljavna datoteka Calc, je vstavljen prazen delovni list. Če v vhodni datoteki izvorni delovni list ne obstaja, vstavi sporočilo o napaki na vrh novo prilepljenega delovnega lista.

### Skladnja:

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

### Parametri:

Filename: ime datoteke, ki jo želite odpreti. Slediti mora zapisu SF_FileSystem.FileNaming. Datoteka ne sme biti zaščitena z geslom.

Sheetname: ime delovnega lista, ki bo kopiran, kot niz.

Newname: ime kopiranega delovnega lista, ki bo vstavljen v dokument. Ime ne sme biti uporabljeno v dokumentu.

Beforesheet: ime (niz) ali indeks (številski, od 1 naprej) delovnega lista, pred katerega bo vstavljen kopiran delovni list. Ta argument je neobvezen in privzeto dejanje je dodajanje kopiranje delovnega lista na končni položaj.

### Primer:

Naslednji primer kopira delovni list "SheetX" iz datoteke "myFile.ods" in ga prilepi v dokument, na katerega se sklicuje ime dokumenta "oDoc", na prvo mesto, kot delovni list "SheetY".

##### V Basicu

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

##### V Pythonu

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

## CopyToCell

Kopira navedeni izvorni obseg (vrednosti, formule in oblikovanje) v ciljni obseg ali celico. Metoda oponaša vedenje operacije kopiraj/prilepi iz obsega v posamezno celico.

Vrne niz, ki predstavlja spremenjeni obseg celic. Velikost spremenjenega področja je povsem določen z velikostjo izvornega področja.

Izvorni obseg lahko pripada drugemu odprtemu dokumentu.

### Skladnja:

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

### Parametri:

sourcerange: izvorni obseg kot niz, ko izvira iz istega dokumenta, ali kot sklic, ko izvira iz drugega odprtega dokumenta Calc.

Destinationcell: ciljna celica, kamor bo prilepljen kopirani obseg celic, podana kot niz. Če je podan obseg, se obravnava le njegova leva vrhnja celica.

### Primer:

##### V Basicu

Sledi primer, ko sta vir in cilj v isti datoteki:

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

Spodnji primer ilustrira, kako kopirate obseg iz drugega odprtega dokumenta Calc:

        Dim ui as Variant : ui = CreateScriptService("UI")
        Dim oDocSource As Object, oDocDestination As Object
        ' Odpre izvorni dokument v ozadju (skrito)
        Set oDocSource = ui.OpenDocument("C:\SourceFile.ods", Hidden := True, ReadOnly := True)
        Set oDocDestination = CreateScriptService("Calc")
        oDocDestination.CopyToCell(oDocSource.Range("Sheet1.C2:C4"), "SheetT.A5")
        ' Ne pozabite zapreti izvornega dokumenta, saj je bil odprt kot skrit
        oDocSource.CloseDocument()

##### V Pythonu

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

Če želite oponašati kopiranje/lepljenje iz obsega v posamezno celico, uporabite CopyToCell. Če želite oponašati kopiranje/lepljenje iz obsega v večji obseg (z večkrat ponovljenimi istimi celicami), uporabite CopyToRange.

## CopyToRange

Kopira navedeni izvorni obseg (vrednosti, formule in oblike) navzdol in/ali desno v ciljni obseg. Metoda oponaša vedenje operacije kopiraj/prilepi iz obsega vira v večji ciljni obseg.

- Če je višina (ali širina) ciljnega področja > 1 vrstice (ali stolpca), potem mora biti višina (ali širina) izvornega obsega <= višine (ali širine) ciljnega področja. Sicer se ne zgodi nič.

- Če je višina (ali širina) cilja enaka 1, potem se cilj razširi navzdol (oz. desno) vse do višine (ali širine) izvornega obsega.

Metoda vrne niz, ki predstavlja spremenjeni obseg celic.

Izvorni obseg lahko pripada drugemu odprtemu dokumentu.

### Skladnja:

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

### Parametri:

sourcerange: izvorni obseg kot niz, ko izvira iz istega dokumenta, ali kot sklic, ko izvira iz drugega odprtega dokumenta Calc.

destinationrange: cilj kopiranega obsega celic, kot niz.

### Primer:

##### V Basicu

Kopiranje znotraj istega dokumenta:

        oDoc.CopyToRange("SheetX.A1:F10", "SheetY.C5:J5")
        ' Vrne niz obsega: "$SheetY.$C$5:$J$14"

Kopiranje iz ene datoteke v drugo:

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

##### V Pythonu

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

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

## DAvg, DCount, DMax, DMin and DSum

Uporabite funkcije Average, Count, Max, Min oz. Sum na vseh celicah, ki vsebujejo številske vrednosti v danem obsegu.

### Skladnja:

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

### Parametri:

range: obseg, v katerem želimo uporabiti funkcijo, podan kot niz.

### Primer:

Spodnji primer uporabi funkcijo vsote Sum na obsegu "A1:A1000" trenutno izbranega delovnega lista:

##### V Basicu

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

##### V Pythonu

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

Vse te funkcije prezrejo celice v danem obsegu, ki vsebujejo besedilo. Primer: metoda DCount ne šteje celic z besedilom, šteje le številske celice.

## Forms

Glede na podane parametre ta metoda vrne:

- Ničelno polje (par v Pythonu) z imeni vseh obrazcev, vsebovanih v danem delovnem listu (če ni podan argument form).

- Instanca storitve SFDocuments.Form, ki predstavlja obrazec, naveden v argumentu.

### Skladnja:

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

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

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

### Parametri:

sheetname: ime delovnega lista, iz katerega bo izveden obrazec, kot niz.

form: ime ali indeks, ki ustreza obrazcu, shranjenem v navedeni preglednici. Če ta argument ni podan, metoda vrne seznam z imeni vseh obrazcev, ki so na voljo v preglednici.

### Primer:

V sledečih primerih prva vrstica pridobi imena vseh obrazcev, shranjenih na delovnem listu »DelovniList1«, druga pa predmet Form iz obrazca »Obrazec_A«, ki je shranjen v »DelovniList1«.

##### V Basicu

        Set FormNames = oDoc.Forms("DelovniList1")
        Set FormA = oDoc.Forms("DelovniList1", "Obrazec_A")

##### V Pythonu

        form_names = doc.Forms("DelovniList1")
        form_A = oDoc.Forms("DelovniList1", "Obrazec_A")

## GetColumnName

Pretvori številko stolpca iz obsega med 1 in 1024 v ustrezni črkovni niz (stolpec 'A', 'B', 'C', 'D', ..., 'AMJ'). Če je dana številka stolpca izven dovoljenega obsega, vrne niz ničelne dolžine.

### Skladnja:

svc.GetColumnName(columnnumber: int): str

### Parametri:

columnnumber: številka stolpca kot celoštevilska vrednost v intervalu 1 ... 1024.

### Primer:

##### V Basicu

Prikaže okno s sporočilom z imenom tretjega stolpca, ki je privzeto »C«.

        MsgBox oDoc.GetColumnName(3)

##### V Pythonu

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

Največje dovoljeno število stolpcev na delovnem listu v programu Calc je 1024.

## GetFormula

Pridobi formulo ali formule, shranjene v danem obsegu celic kot enostavni niz, enodimenzionalno ali dvodimenzionalno polje nizov.

### Skladnja:

svc.GetFormula(range: str): any

### Parametri:

range: obseg, iz katerega izvirajo formule, podan kot niz.

### Primer:

##### V Basicu

Naslednji primer vrne polje 3 x 2 s formulami v obsegu "A1:B3" (3 vrstice x 2 stolpca):

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

##### V Pythonu

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

## GetValue

Pridobi vrednost(i), shranjene v danem obsegu celic kot posamezno vrednost, enodimenzionalno polje ali dvodimenzionalno polje. Vse vrednosti so vrste double ali nizi.

### Skladnja:

svc.GetValue(range: str): any

### Parametri:

range: obseg, iz katerega izvirajo nizi, podan kot niz.

### Primer:

##### V Basicu

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

##### V Pythonu

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

Če celica vsebuje datum, bo vrnjena številka, ki ustreza temu datumu. Za pretvorbo številskih vrednosti v datume uporabite vgrajeno funkcijo Basica CDate. V skriptih Python uporabite funkcijo CDate iz storitve Basic.

## ImportFromCSVFile

Uvozi vsebino datoteke CSV z besedilom, ločenim z vejico, in jo postavi v dano ciljno celico.

Ciljno področje je počiščeno sleherne vsebine in oblikovanja, preden vstavi vsebino datoteke CSV. Velikost spremenjenega območja je povsem določena z vsebino vhodne datoteke.

Metoda vrne niz, ki predstavlja spremenjeni obseg celic.

### Skladnja:

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

### Parametri:

filename: ime datoteke, ki jo želite odpreti. Slediti mora zapisu SF_FileSystem.FileNaming.

destinationcell: ciljna celica za vstavljanje uvoženih podatkov, podana kot niz. Če je namesto tega podan obseg, se upošteva le leva vrhnja celica.

filteroptions: argumenti za vhodni filter CSV. Privzeti filter uporabi naslednje predpostavke:

- Vhodna datoteka ima kodiranje UTF8.

- Ločilo polj je vejica, podpičje ali tabulator.

- Ločilo nizov je dvojni narekovaj (").

- Vse vrstice so vključene.

- Nizi v navedkih so oblikovani kot besedilo.

- Posebna števila so zaznana.

- Za vse stolpce velja domneva, da so besedila, razen če so vrednosti prepoznane kot veljavna števila.

- Jezik je angleški (ZDA), kar nakazuje, da je ločilo decimalk "." in ločilo tisočic ",".

### Primer:

##### V Basicu

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

##### V Pythonu

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

Če želite izvedeti več o možnostih filtra CSV, si oglejte wiki stran Filter Options (v angl.).

## ImportFromDatabase

Uvozi vsebino tabele poizvedbe ali množice rezultatov zbirke podatkov, t.j. rezultat ukaza SELECT SQL, tako da ga vstavi v ciljno celico.

Ciljno področje je počiščeno sleherne vsebine in oblikovanja, preden vstavi uvoženo vsebino. Velikost spremenjenega območja je povsem določena z vsebino tabele ali poizvedbe.

Metoda vrne True, če je uvoz uspel.

### Skladnja:

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

### Parametri:

filename: ime datoteke, ki jo želite odpreti. Slediti mora zapisu SF_FileSystem.FileNaming.

registrationname: ime za iskanje zbirke podatkov v registru zbirk podatkov. Ta argument je prezrt, če je podano ime datoteke filename.

destinationcell: ciljna celica uvoženih podatkov, podana kot niz. Če je podan obseg, se obravnava le njegova leva vrhnja celica.

sqlCommand: ime tabele ali poizvedbe (brez narekovajev ali oglatih oklepajev) ali izjava SQL SELECT, v kateri so imena tabel in polj lahko v oglatih oklepajih ali narekovajih, da izboljšate njeno berljivost.

directsql: ko je True, pošlje ukaz SQL pogonu zbirke podatkov brez predhodne analize. Privzeta vrednost je False. Argument je pri tabelah prezrt. Za poizvedbe je uporabljena tista možnost, ki je veljala ob določitvi poizvedbe.

### Primer:

##### V Basicu

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

##### V Pythonu

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

## InsertSheet

Vstavi nov prazen delovni list pred obstoječi delovni list ali na konec seznama delovnih listov.

### Skladnja:

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

### Parametri:

sheetname: ime novega delovnega lista.

beforesheet: ime (niz) ali indeks (številski, od 1 naprej) delovnega lista, pred katerega bo vstavljen nov delovni list. Ta argument je neobvezen in privzeto dejanje je vstavljanje delovnega lista na zadnje mesto.

### Primer:

Naslednji primer vstavi nov prazen delovni list, imenovan "SheetX", in ga postavi pred delovni list "SheetY":

##### V Basicu

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

##### V Pythonu

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

## MoveRange

Premakne navedeni izvorni obseg na ciljni obseg celic. Metoda vrne niz, ki predstavlja spremenjeni obseg celic. Mere spremenjenega področja so povsem določene z velikostjo izvornega področja.

### Skladnja:

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

### Parametri:

source: izvorni obseg celic, podan kot niz.

destination: ciljna celica, podana kot niz. Če je podan obseg, se kot cilj upošteva njegova leva vrhnja celica.

### Primer:

##### V Basicu

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

##### V Pythonu

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

## MoveSheet

Premakne obstoječi delovni list in ga postavi pred navedeni delovni list ali na konec seznama delovnih listov.

### Skladnja:

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

### Parametri:

sheetname: ime delovnega lista, ki ga želite premakniti. Delovni list mora obstajati, sicer prikliče izjemo.

beforesheet: ime (niz) ali indeks (številski, od 1 naprej) delovnega lista, pred katerega bo postavljen izvorni delovni list. Ta argument je neobvezen in privzeto dejanje je premik delovnega lista na zadnje mesto.

### Primer:

Spodnji primer premakne obstoječi delovni list "SheetX" in ga postavi pred delovni list "SheetY":

##### V Basicu

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

##### V Pythonu

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

## Offset

Vrne nov obseg (kot niz), zamaknjen za določeno število vrstic in stolpcev od danega obsega.

Ta metoda se vede enako kot homonimna funkcija Offset programa Calc.

### Skladnja:

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

### Parametri:

reference: obseg, podan kot niz, ki ga bo metoda uporabila za sklic ob izvajanju operacije zamikanja.

rows: število vrstic, za katere je začetni obseg zamaknjen navzgor (negativna vrednost) ali navzdol (pozitivna vrednost). Uporabite 0 (privzeta vrednost), da ostanete v isti vrstici.

columns: število stolpcev, za katere je začetni obseg zamaknjen levo (negativna vrednost) ali desno (pozitivna vrednost). Uporabite 0 (privzeta vrednost), da ostanete v istem stolpcu.

height: navpična višina območja, ki se začne na položaju novega obsega. Ta argument izpustite, če navpično spreminjanje velikosti ni potrebno.

Width: vodoravna širina območja, ki se začne na položaju novega obsega. Ta argument izpustite, če vodoravno spreminjanje velikosti ni potrebno.

Argumenta rows in columns ne smeta voditi k ničelni ali negativni začetni vrstici ali začetnemu stolpcu.

Argumenta height in width ne smeta voditi k ničelni ali negativni začetni vrstici ali začetnemu stolpcu.

### Primer:

##### V Basicu

        oDoc.Offset("A1", 2, 2)
        'SheetX.$C$3 (A1 se premakne za dve vrstici in dva stolpca navzdol)
        oDoc.Offset("A1", 2, 2, 5, 6)
        'SheetX.$C$3:$H$7 (A1 se zamakne za dve vrstici in stolpca s širino 5 vrstic in 6 stolpcev)

##### V Pythonu

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

## RemoveSheet

Odstrani obstoječi delovni list iz dokumenta.

### Skladnja:

doc.RemoveSheet(sheetname: str): bool

### Parametri:

sheetname: ime delovnega lista, ki ga želite odstraniti.

### Primer:

##### V Basicu

        oDoc.RemoveSheet("SheetY")

##### V Pythonu

        myDoc.RemoveSheet("SheetY")

## RenameSheet

Preimenuje dani delovni list in vrne True, če uspe.

### Skladnja:

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

### Parametri:

sheetname: ime delovnega lista, ki ga želite preimenovati.

newname: novo ime delovnega lista. Ne sme še obstajati.

### Primer:

Ta primer preimenuje dejavni delovni list v "SheetY":

##### V Basicu

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

##### V Pythonu

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

## SetArray

Shrani dano vrednost od navedene ciljne celice naprej. Posodobljeno področje se širi od ciljne celice ali od levega vrhnjega kota danega obsega naprej, da lahko zagotovi prostor velikosti vhodnega argumenta value. Vektorji se vedno širijo navpično.

Metoda vrne niz, ki predstavlja spremenjeno področje kot obseg celic.

### Skladnja:

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

### Parametri:

targetcell: celica ali obseg kot niz, od koder naj se začne shranjevati dana vrednost.

value: skalar, vektor ali polje (v Pythonu eno- ali dvodimenzionalni seznami in n-terice) z novimi vrednostmi, ki bodo shranjene od ciljne celice oz. od levega vrhnjega kota obsega, če je ciljna celica targetcell obseg. Nove vrednosti morajo biti nizi, številske vrednosti ali datumi. Druge vrste povzročijo, da se ustrezne celice izpraznijo.

### Primer:

##### V Basicu

Naslednji primer uporablja vgrajeno Funkcijo DimArray za ustvarjanje polja in nato njegovo shranjevanje v celici "A1":

        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)

Primer uporablja metodo RangeInit storitve ScriptForge Array, da ustvari polje z vrednostmi, ki so nato shranjeni od celice "A1" navzdol.

        'Zapolni 1. stolpec z vrednostmi od 1 do 1000
        oDoc.SetArray("Sheet1.A1", SF_Array.RangeInit(1, 1000))

##### V Pythonu

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

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

Če želite izmetati celotno vsebino polja na delovni list, uporabite SetArray. Če želite izmetati vsebino polj le v mejah ciljnega obsega celic, uporabite SetValue.

## SetValue

Shrani dano vrednost v navedenem obsegu. Velikost spremenjenega področja je enaka velikosti ciljnega področja.

Metoda vrne niz, ki predstavlja spremenjeno področje kot obseg celic.

### Skladnja:

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

### Parametri:

targetrange: obseg, kjer naj bo shranjena dana vrednost, podan kot niz.

value: skalar, vektor ali polje z novimi vrednostmi za vsako celico obsega. Nove vrednosti morajo biti nizi, številske vrednosti ali datumi. Druge vrste povzročijo, da se ustrezne celice izpraznijo.

Polni obseg se posodobi, preostanek delovnega lista pa ostane nespremenjen. Če je velikost value manjša od velikosti ciljnega obsega targetrange, bodo preostale celice izpraznjene.

Če je velikost value večja od velikosti ciljnega obsega targetrange, se vrednosti value le delno kopirajo, dokler se z njimi ne zapolni velikost targetrange.

Vektorji se širijo navpično, razen če ima ciljni obseg targetrange višino natanko 1 vrstice.

### Primer:

##### V Basicu

        oDoc.SetValue("A1", 2)
        ' Spodaj je polje Value manjše od TargetRange (preostale celice so izpraznjene)
        oDoc.SetValue("A1:F1", Array(1, 2, 3))
        ' Spodaj imata Value in TargetRange enako velikost
        oDoc.SetValue("A1:D2", SF_Array.AppendRow(Array(1, 2, 3, 4), Array(5, 6, 7, 8)))

Če želite zapolniti eno samo vrstico z vrednostmi, lahko uporabite funkcijo Offset. Pri spodnjem primeru upoštevajte, da je arrData enodimenzionalno polje:

        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)

##### V Pythonu

        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)

## SetCellStyle

Uveljavi navedeni slog celice na danem ciljnem obsegu. Polni obseg se posodobi, preostanek delovnega lista pa ostane nespremenjen. Če slog celice ne obstaja, prikliče napako.

Metoda vrne niz, ki predstavlja spremenjeno področje kot obseg celic.

### Skladnja:

svc.SetCellStyle(targetrange: str, style: str): str

### Parametri:

targetrange: obseg, v katerem bo uporabljen slog, podan kot niz.

style: ime sloga celice, ki bo uporabljen.

### Primer:

##### V Basicu

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

##### V Pythonu

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

## SetFormula

Vstavi dano formulo ali polje s formulami v navedeni obseg. Velikost spremenjenega področja je enaka velikosti obsega.

Metoda vrne niz, ki predstavlja spremenjeno področje kot obseg celic.

### Skladnja:

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

### Parametri:

targetrange: obseg, v katerega bodo vstavljene formule, podan kot niz.

formula: niz, vektor ali polje nizov z novimi formulami za vsako celico v ciljnem obsegu.

Polni obseg se posodobi, preostanek delovnega lista pa ostane nespremenjen.

Če je dana formula niz, se enkratna formula prilepi po celotnem obsegu s prilagoditvami relativnih sklicev.

Če je velikost formule formula manjša od velikosti ciljnega obsega targetrange, bodo preostale celice izpraznjene.

Če je velikost formule formula večja od velikosti ciljnega obsega targetrange, se formule le delno kopirajo, dokler se z njimi ne zapolni velikost targetrange.

Vektorji se vedno širijo navpično, razen če ima ciljni obseg targetrange višino natanko 1 vrstice.

### Primer:

##### V Basicu

        oDoc.SetFormula("A1", "=A2")
        'Vodoravni vektor, delno prazen
        oDoc.SetFormula("A1:F1", Array("=A2", "=B2", "=C2+10"))
        'D2 vsebuje formulo "=H2"
        oDoc.SetFormula("A1:D2", "=E1")

##### V Pythonu

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

## SortRange

Razvrsti dani obseg glede na 3 stolpce/vrstice. Vrstni red razvrščanja se lahko razlikuje po stolpcih/vrsticah. Vrne niz, ki predstavlja spremenjeni obseg celic. Velikost spremenjenega področja je povsem določen z velikostjo izvornega področja.

### Skladnja:

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

### Parametri:

range: obseg, ki naj bo razvrščen, podan kot niz.

sortkeys: skalar (če predstavlja 1 stolpec/vrstico) ali polje številk stolpcev/vrstic s pričetkom z 1. Največje število ključev je 3.

sortorder: skalar ali polje nizov, ki vsebujejo vrednosti "ASC" (naraščajoče), "DESC" (padajoče) ali "" (sledi privzeti vrednosti, torej naraščajoče). Vsak element je v paru z ustreznim elementom v sortkeys. Če je polje sortorder krajše od sortkeys, so preostali ključi razvrščeni v naraščajočem vrstnem redu.

destinationcell: ciljna celica za razvrščeni obseg celic, kot niz. Če je podan obseg, se obravnava le njegova leva vrhnja celica. Privzeto prepiše vir Range.

containsheader: če je True, prva vrstica/stolpec ni razvrščen.

casesensitive: razločevanje med malimi in velikimi črkami, le za primerjavo nizov. Privzeta vrednost je False.

sortcolumns: če je True, so stolpci razvrščeni od leve proti desni. Privzeto = False: vrstice so razvrščene od vrha navzdol.

### Primer:

##### V Basicu

        'Razvrsti obseg glede na stolpca A (naraščajoče) in C (padajoče)
        oDoc.SortRange("A2:J200", Array(1, 3), Array("ASC", "DESC"), CaseSensitive := True)

##### V Pythonu

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

Vsi podprogrami ali identifikatorji ScriptForge Basic s predpono podčrtaja (»_«) so rezervirani za interno uporabo. Uporabi v makrih Basic niso namenjeni.

Podobne teme

Storitev SFDocuments.Document

Storitev ScriptForge.UI