Pregled XLSX Facade (lxHandleX)
lxHandleX je namenska facade jedinica za Excel 2007+ (.xlsx) i OpenDocument Spreadsheet (.ods) tokove posla radne sveske. Ona koegzistira sa originalnom lxHandle facade jedinicom tako da nasleđeni kod nastavlja da radi bez ikakvih promena:
lxHandle— primarna facade jedinica za Excel 97-2003 BIFF format (.xls), HTML, RTF, CSV i TSV izvoze. Sav postojeći korisnički kod nastavlja da koristi ovu jedinicu nepromenjenulxHandleX— primarna facade jedinica za Excel 2007+ OOXML format (.xlsx) i ODS tokove posla čitanja/pisanja. Pruža sopstvene tipove radnih svesaka i listova tako da se ponašanje specifično za XLSX ne prilagođava naknadno na BIFF putanju koda, i izlaže uvoz, izvoz ODS-a, automatsku detekciju ODS-a prekoOpen,SourceFormat, iTODSExportOptions
Hijerarhija klasa
XLSX facade izlaže sledeće klase:
type
TXLSXWorkbook = class // top-level workbook with SaveAs / Open
TXLSXHtmlExportOptions = class // HTML document, style, BOM, and table class options
TODSExportOptions = class // ODS export options for generator, chart, and image output
TXLSXSheets = class // worksheet collection on the workbook
TXLSXFonts = class // workbook-level font palette
TXLSXFont = class // single font descriptor
TXLSXFills = class // workbook-level fill palette
TXLSXFill = class // single fill (pattern + fg/bg color)
TXLSXBorders = class // workbook-level border palette
TXLSXBorder = class // four edges + diagonal border
TXLSXNumberFormats = class // workbook-level custom format codes
TXLSXDefinedNames = class // workbook-level named ranges
TXLSXWorksheet = class // single worksheet with cells and decorations
TXLSXCells = class // cell collection on the worksheet
TXLSXCell = class // single cell (value, formula, *Index style refs)
TXLSXRange = class // rectangular worksheet range wrapper
TXLSXMergedCells = class // merged-range collection
TXLSXHyperlinks = class // hyperlink collection
TXLSXComments = class // cell-comment collection
TXLSXImages = class // image collection (drawings + media)
TXLSXConditionalFormats = class // conditional formatting rules
TXLSXDataValidations = class // data-validation rules
TXLSXTables = class // Excel-style table collection
TXLSXCharts = class // chart collection (anchored or full-page)
TXLSXChart = class // single chart (column / bar / line / pie / scatter / bubble / radar)
TXLSXChartSeries = class // chart series with category, value, and bubble-size ranges
TXLSXTextBox = class // standalone worksheet drawing text box
TXLSXRichText = class // per-run rich-text payload for cells
TXLSXAlignment = class // cell alignment / wrap / indent / rotation
TXLSXExternalLinks = class // external workbook link collection
TXLSXExternalLink = class // single external workbook reference (Target URL + SheetNames)
Ove klase su nezavisne od lxHandle.TXLSWorkBook i
lxHandle.TXLSWorksheet. Aplikacije kojima su potrebna oba formata mogu
koristiti obe facade jedinice jednu pored druge:
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
Brzi početak
XLSX facade prati iste konvencije oblika poziva kao i BIFF
facade — SaveAs / Open na radnoj svesci,
Sheets.Add / Sheets[i] na kolekciji radnih
listova, i Cells.Item[Row, Col].Value na kolekciji ćelija. Primer ispod upisuje malu radnu svesku koja testira svaku
trenutno podržanu funkciju:
uses lxHandleX;
var
wb: TXLSXWorkbook;
ws: TXLSXWorksheet;
bold, yellow, box, currency: Integer;
begin
wb := TXLSXWorkbook.Create;
try
bold := wb.Fonts.Add('Calibri', 12, True, False);
yellow := wb.Fills.AddSolid($FFFFFF00);
box := wb.Borders.AddBox(xlsxBorderThin);
currency := wb.NumberFormats.Add('"$"#,##0.00');
ws := wb.Sheets.Add('Demo');
ws.Cells.Item[1, 1].Value := 'Hello';
ws.Cells.Item[1, 1].FontIndex := bold + 1;
ws.Cells.Item[1, 2].Value := 123.45;
ws.Cells.Item[1, 2].NumberFormatIndex := currency + 1;
ws.Cells.Item[2, 1].Value := Now; // tagged as date
ws.Cells.Item[2, 2].Formula := 'SUM(B1:B1)';
ws.Cells.Item[3, 1].FillIndex := yellow + 1; // highlight cell
ws.Cells.Item[3, 2].BorderIndex := box + 1; // boxed cell
ws.ColWidth[1] := 24;
ws.RowHeight[1] := 28;
ws.MergeCells(4, 1, 4, 3);
ws.Range['A8:C10'].Merge(True); // merge across rows
ws.AddHyperlink(5, 1, 'https://www.loslab.com', 'Visit losLab');
ws.AddComment(5, 2, 'Important note', 'Kevin');
ws.AddImageFromFile(6, 1, 'logo.png');
ws.AddConditionalFormat('B1:B10', xlsxCfOpGreaterThan, '100');
ws.AddListValidation('C1:C5', 'Yes,No,Maybe');
wb.DefinedNames.Add('SalesData', 'Demo!$A$1:$B$10');
wb.SaveAs('demo.xlsx');
finally
wb.Free;
end;
end;
Podržane funkcije
- Vrednosti ćelija: brojevi, booleani, stringovi, datumi, formule
- Tabela deljenih stringova (
xl/sharedStrings.xml) sa deduplikacijom na putanji pisanja - Palete stilova na nivou radne sveske —
Workbook.Fonts,Fills,Borders, iNumberFormats— plus po ćelijiFontIndex/FillIndex/BorderIndex/NumberFormatIndex. SaveAs emituje stvarne<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>blokove; Open ih parsira nazad tako da Name/Size/Bold/Italic/Color, šare popune, ivice i prilagođeni formati brojeva prežive kružni tok (round-trip) - Širine po kolonama preko
Worksheet.ColWidth[Col]i visine po redovima prekoWorksheet.RowHeight[Row](radni list<cols>blok i po-<row>htatributi) - Ugrađeni datum
cellXfna indeksuXlsxXfIndexDate;TDateTimevrednosti se označavaju automatski - Spojene ćelije (
<mergeCells>), uključujućiTXLSXRange.Merge(True)za spajanje preko redova u Excel stilu - Opsezi radnih listova preko
Worksheet.Range,RCRange,UsedRange,EntireRow, iEntireColumn. Pogledajte TXLSXRange za grupne vrednosti, formule,SetArrayFormula, indekse stilova, formate brojeva, ivice, zastavice zaštite, auto-fit, spajanje, ofset, promenu veličine,Sortvišestruko sortiranje,ApplyBuiltinStyleugrađene stilove ćelija, pomoćne funkcije za kopiranje/pomicanje, pomoćne funkcije za umetanje/brisanje celog reda/cele kolone i izvoz izabranog opsega u HTML - Hiperlinkovi (
<hyperlinks>) podržani relacijama po radnom listu (rels) za eksterne URL-ove - Komentari ćelija sa VML crtežom (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml) tako da se baloni renderuju u Excel-u - Ugrađene slike (PNG / JPEG / GIF / BMP) preko
Worksheet.Images, upisane uxl/media/imageN.<ext>plus XML crteža i relacije (rels) po listu - Samostalni tekstualni okviri za crtanje preko
Worksheet.AddTextBox, upisani kao oblici crteža radnog lista sa tekstualnim telima umesto komentara ćelija, sa direktnim traženjem sidra i pomoćnim funkcijama za brisanje opsega - Imenovani opsezi na nivou radne sveske preko
Workbook.DefinedNames(sa opsegom radne sveske ili opsegom lista prekoSheetIndex) - Proračun formula preko
Workbook.CalculateiWorksheet.Calculate, deleći XLS parser i evaluator formula za formule sa vodećim znakom jednakosti, reference ćelija i opsega, referencirane ćelije formula, reference između listova, opsege sa definisanim imenima i podržane tekstualne, datumske, radne dane, inženjering/konverziju baza, bitovne, statističke, agregatne i matematičke funkcije; koristiteWorkbook.OnUserFunctioniliWorkbook.OnUserFunctionExza rešavanje prilagođenih ili nepodržanih funkcija - Uslovno formatiranje po radnom listu
(
Worksheet.ConditionalFormats) i validacija podataka (Worksheet.DataValidations) uključujući padajući meniAddListValidation(Range, Items)prečicu - Strukturne grupe redova / kolona (
RowOutlineLevel,ColOutlineLevel), skriveno stanje (RowHidden,ColHidden) i kolapsirano stanje grupe (RowCollapsed,ColCollapsed) - Zamrznuti paneli preko
Worksheet.FreezePanes(Row, Col) - Podešavanje stranice — šest svojstava margina, veličina papira, orijentacija, razmera stranice, uklapanje na širinu / uklapanje na visinu, plus
HeaderText/FooterText. ImenovanexlsxPaper*konstante kao što suxlsxPaperLetter,xlsxPaperA4,xlsxPaperA3, ixlsxPaperLegalmogu se dodelitiPaperSize - Auto-filter (
Worksheet.SetAutoFilter) - Tabele u Excel stilu (TXLSXTable) sa informacijama o stilu i tableColumns
API-ji podkolekcija facade
Kolekcione klase facade upravljaju uslovnim formatima, validacijama podataka, definisanim imenima, slikama i tabelama. Evo ključnih članova svake kolekcije:
- TXLSXConditionalFormats:
Izlaže pravila uslovnog formatiranja
Svojstva:
CountMetode:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations:
Izlaže validacije podataka
Svojstva:
CountMetode:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames:
Izlaže definisana imena (imenovane opsege)
Svojstva:
CountMetode:DeleteByName,FindByName,IndexOfName - TXLSXImages:
Izlaže ugrađene slike
Svojstva:
CountMetode:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables:
Izlaže Excel tabele
Svojstva:
CountMetode:AddExisting,DeleteByName,FindByName,IndexOfName
Podržane funkcije
- Svojstva dokumenta (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Companyitd.) upisana udocProps/core.xml+docProps/app.xml - Zaštita lozinkom radnog lista / radne sveske (nasleđeni 16-bitni heš)
preko
Worksheet.Protect/Workbook.ProtectWorkbook; AES čuvanje zaštićeno lozinkom kompatibilno sa Excel-om prekoSaveAsEncrypted, koristeći AES-NI ubrzanje kada je dostupno i portabilni softverski fallback u suprotnomOpenEncryptedi dalje baca izuzetak za šifrovane pakete dok se ne implementira podrška za dešifrovanje - Očuvanje VBA projekta preko
Workbook.LoadVbaProjectFromFile/VbaProject; bajtovi se vraćaju nepromenjeni kroz kružni tok. VažećivbaProject.binpayloads se takođe mogu ispitati prekoWorkbook.ParsedVBAProject - Grafikoni — stubičasti / trakasti / linijski / kružni / oblasni / prstenasti preko
TXLSXChart, usidreni
na radnom listu (
Worksheet.AddChart) ili preko cele stranice na namenskom grafičkom listu (chart sheet) prekoWorkbook.AddChartSheet(Name, Type, Title) - Ćelije sa bogatim tekstom (rich-text) preko TXLSXRichText sa formatiranjem fonta po segmentu; kružni tok kroz tabelu deljenih stringova
- Sidra internih hiperlinkova preko
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(nije potrebna rels relacija) - API za kopiranje / pomicanje / čišćenje opsega ćelija na radnom listu
(
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Poravnanje ćelije preko
TXLSXAlignment +
po ćeliji
AlignmentIndex - Boja kartice radnog lista preko
Worksheet.TabColor/TabColorIsAuto - Režim prikaza radnog lista preko
Worksheet.View, uključujući normalan prikaz, pregled preloma stranice i prikaz rasporeda stranice - Putanja strimovanja (streaming) za SaveAs (
Workbook.StreamingWrite := True) koja gradi i upisuje svaki radni list bez držanja ostalih u memoriji; XML akumulator po redu koristiTXLSWideStringBuildertako da petlja ćelija ostaje linearna - Kružni tok (round-trip)
Openza sve gore navedeno osim šifrovanih XLSX paketa i identifikacije grafičkih listova (chart-sheet), koji se vraćaju na dokumentovano delimično ponašanje - Izvoz i uvoz bazirani na strimovima (streams):
SaveAs(Stream),Open(Stream)za upotrebu u memoriji ili u BLOB poljima - Čitanje/pisanje za OpenDocument Spreadsheet:
Workbook.OpenODSi generičkiWorkbook.Openmogu učitati.odspakete, dokWorkbook.SaveAsODSiSaveAs(..., xlsxOpenDocumentSpreadsheet)upisuju ODS izlaz direktno. Površina formata pokriva vrednosti, formule, stilove, bogat tekst (rich-text), dimenzije redova/kolona, spajanja, hiperlinkove, slike, grafikone, imenovane opsege, AutoFilter, uslovne formate, validacije podataka, zamrznute panele, podešavanje stranice, zaglavlja/podnožja, opsege štampanja, prelome stranica, strukturne grupe, boju kartice i vidljivost lista kroz podržane kružne tokove (round trips) - Opcije izvoza ODS-a: prosledite
TODSExportOptionsuSaveAsODSda biste preklopili string generatora dokumenta ili potisnuli delove grafikona i slika kada pravite lakši paket - Uvoz teksta sa razgraničenjem (delimited-text):
Workbook.OpenCSV(FileName)iWorkbook.OpenCSV(Stream)uvoze CSV ili TSV podatke sa detekcijom separatora, detekcijom BOM kodiranja, citiranjem u stilu RFC 4180 i opcionim zaključivanjem tipa vrednostiOpen(FileName)usmerava.csvi.tsvdatoteke u importer automatski - Skeniranje metapodataka radne sveske:
Workbook.GetSheetNames(FileName, List)iWorkbook.GetSheetNames(Stream, List)čitaju poređane nazive listova izxl/workbook.xmlbez učitavanja XML-a radnog lista - Zaštita ćelija:
TXLSXCell.LockediFormulaHidden— kontrolišite koje se ćelije mogu uređivati ili čije su formule vidljive kada je list zaštićen - Auto-fit širine kolone i visine reda iz sadržaja ćelije:
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - Umetanje i brisanje redova / kolona sa potpunim kaskadnim efektom:
InsertRows,DeleteRows,InsertCols,DeleteCols. Sporedni efekti se propagiraju kroz ćelije, spojene opsege, hiperlinkove, komentare, zamrznute panele, reference opsega-stringa, tabele, formule ćelija, formule uslovnog formatiranja / validacije podataka, interne ciljeve hiperlinkova, reference podešavanja štampanja, ručne prelome stranica, kriterijume kolona auto-filtera, opsege serija grafikona, definisana imena, sidra slika i sidra grafikona - Prošireno podešavanje stranice:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Vidljivost lista:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) iIsSelected - Ručni prelomi stranica:
AddRowBreak,AddColBreak, pretraga indeksa i pomoćne funkcije za uklanjanje opsega - Kriterijumi kolona auto-filtera:
Worksheet.AddAutoFilterColumnsa jednim ili AND/OR pravilima filtera sa dva kriterijuma, plusWorksheet.AutoFilterColumns.FindByColIdiDeleteByColIdza direktnu pretragu i uklanjanje kriterijuma (TXLSXAutoFilterColumn) - Baza datuma radne sveske:
Workbook.Date1904prebacuje između 1900 (podrazumevano za Windows) i 1904 (Mac) vremenske epohe datuma - Dijagonalne ivice:
TXLSXBorder.DiagonalUpiDiagonalDownomogućavaju dijagonalne linije; ivicaDiagonalnosi stil i boju - Proširena svojstva fonta:
TXLSXFont.VertAlign(superscript / subscript),OutlineFont,Shadow,Family,CharSet - Metopodaci imenovanog opsega:
TXLSXDefinedName.HiddeniComment - Opcije prikaza lista:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - OOXML nasleđena paleta indeksiranih boja:
Workbook.IndexedColor[0..63]saResetIndexedColors - Eksterne veze (links) radne sveske:
Workbook.ExternalLinks/ TXLSXExternalLink — kružni tok (round-trip) metapodataka za Target URL + SheetNames - Podrška za boje tema na
TXLSXFont,TXLSXFill, iTXLSXBorderEdge:ColorTheme/ColorIndex/TintAndShadesvojstvima sa redosledom prioriteta (theme > indexed > RGB) - CSV izvoz:
Workbook.SaveAsCSV— 4 preopterećenja (overloads) (FileName ili Stream × active-sheet / eksplicitni SheetIndex + Delimiter), UTF-8 sa BOM-om, citiranje u stilu RFC 4180 - HTML izvoz:
Workbook.SaveAsHTMLiTXLSXRange.SaveAsHTMLupisuju HTML5 tabele za ceo list radne sveske ili samo za izabrani pravougaonik. Preopterećenja opcija prihvatajuTXLSXHtmlExportOptionsza izlaz punog dokumenta, emitovanje stila, emitovanje BOM-a i imenovanje klase tabele - RTF izvoz:
Workbook.SaveAsRTF— 4 preopterećenja (overloads), RTF 1.6 tabela sa širinama kolona, formatiranjem fonta po ćeliji i punim BMP unicode-om preko označenog 16-bitnog\uN?izlaznih sekvenci (escapes)
Deljena infrastruktura
Obe facade jedinice dele zajednički skup pomoćnih jedinica nižeg nivoa, što znači da su deskriptori stilova, heš tabele, AVL stabla, ZIP i XML I/O, RGB-u-HLS konverzije i string builderi napisani jednom i koristi ih bilo koja putanja. Zajednički pomagači uključuju:
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— moderni deskriptori stilovalxRgb— RGB / HLS konverzija bojalxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— kontejneri za deduplikaciju i gradivni blokovi ćelija podržani AVL-omlxXmlReader,lxXmlWriter,lxZipArchive— OOXML transportni slojlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— pomoćne funkcije za sklapanje strimova i stringova