Izvoz v XLSX
Iz SDMS
Redakcija dne 14:32, 11. marec 2021 od Janez Trtnik (pogovor | prispevki)
Prenos podatkov iz baze
Sub TabelaXLS
Dim XLS As TXlsWriter, XLSF As TXlsField
Dim L as TLayer
// inicializiramo writer in prvi list
XLS = CreateXlsWriter
XLS.AddSheet('List 1')
// pripravimo definicijo stolpcev
XLS.Table.Clear // prvi klic je opcijski, počisti definicijo stolpcev
XLSF = XLS.Table.AddCounter('Zap. št.') // zapisi bodo oštevilceni
XLSF.FooterValue = 'Skupaj' // v footerju bo fiksen tekst
XLS.Table.AddFieldByName('Naslov polja', 'polje1') // fiksno nastavimo ime stolpca
XLS.Table.AddFieldByName('', 'polje2') // ime stolpca je ime polja
XLSF = XLS.Table.AddFieldByName('Število', 'polje3') // numerično polje
XLSF.FooterValue = xlscvAutoColSum // v footerju bo vsota stolpca
XLSF = XLS.Table.AddFormula('Vsota 3 in 4', 'IntToStr([polje3].AsNumber + [polje4].AsNumber)') // Basic formula
XLSF.FooterValue = xlscvAutoColSum // v footerju bo vsota stolpca
XLSF = XLS.Table.AddValue('Vsota levo', xlscvAutoRowSum) // v stolpcu bo vsota številk v vrstici
XLSF.FooterValue = xlscvAutoColSum // v footerju bo vsota stolpca
// pripravimo podatke
L = [Layer]
L.Filter.ExecuteSQL('[polje1] = 10')
L.Sort.Load('Default')
L.Sort.Execute
// zapišemo podatke po dani definiciji
XLS.Table.AddRecordList('Naslov', L.FilteredRecords) // naslov je opcijski
// nastavimo še robove celic
RoboviXLS(XLS)
// dodamo nov list
XLS.AddSheet('List 2')
// pripravimo nove podatke
L = [Layer]
L.Filter.ExecuteSQL('[polje1] = 20')
L.Sort.Load('Default')
L.Sort.Execute
// zapišemo podatke po dani definiciji
XLS.Table.AddRecordList('Naslov', L.FilteredRecords) // naslov je opcijski
// nastavimo še robove celic
RoboviXLS(XLS)
// shranimo v file in sprostimo writer
XLS.SaveToFile('c:\temp\test.xlsx')
XLS.Destroy
EndSub
Sub RoboviXLS(XLS As TXlsWriter)
XLS.SetBorders(XLS.Table.LeftTop.RelativeAddress(-1,0), XLS.Table.RightTop.RelativeAddress(-1,0), xlsbtAll, xlsbsMedium, xlsbsUnchanged, Black) // obroba naslova
XLS.SetBorders(XLS.Table.LeftTop.Address, XLS.Table.RightBottom.Address, xlsbtHor, xlsbsUnchanged, xlsbsThin, Black) // horizontalne črte jedra tabele
XLS.SetBorders(XLS.Table.LeftTop.Address, XLS.Table.RightTop.Address, xlsbtAll, xlsbsMedium, xlsbsUnchanged, Black) // obroba headerja
XLS.SetBorders(XLS.Table.LeftTop.Address, XLS.Table.RightBottom.Address, xlsbtAll, xlsbsMedium, xlsbsUnchanged, Black) // obroba tabele
XLS.SetBorders(XLS.Table.LeftBottom.Address, XLS.Table.RightBottom.Address, xlsbtAll, xlsbsMedium, xlsbsUnchanged, Black) // obroba footerja
EndSub