Prehľad XLSX Facade (lxHandleX)
lxHandleX je vyhradená fasádna jednotka pre pracovné postupy so zošitmi Excel 2007+ (.xlsx) a OpenDocument Spreadsheet (.ods). Koexistuje s pôvodnou fasádou lxHandle, takže starší kód naďalej funguje bez akýchkoľvek zmien
lxHandle— hlavná fasáda pre formát Excel 97-2003 BIFF (.xls), exporty do HTML, RTF, CSV a TSV. Všetok existujúci používateľský kód naďalej používa túto jednotku bez zmienlxHandleX— hlavná fasáda pre formát Excel 2007+ OOXML (.xlsx) a pracovné postupy čítania/zápisu ODS. Poskytuje vlastné typy zošitov a pracovných hárkov, takže správanie špecifické pre XLSX sa neprispôsobuje kódovej ceste BIFF, a sprístupňuje import, export ODS, automatickú detekciu ODS prostredníctvomOpen,SourceFormataTODSExportOptions
Hierarchia tried
Fasáda XLSX sprístupňuje nasledujúce triedy:
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
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)
Tieto triedy sú nezávislé od lxHandle.TXLSWorkBook a lxHandle.TXLSWorksheet. Aplikácie, ktoré potrebujú oba formáty, môžu používať obe fasády vedľa seba:
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
Rýchly štart
Fasáda XLSX sa riadi rovnakými konvenciami tvaru volania ako fasáda BIFF — SaveAs / Open na zošite, Sheets.Add / Sheets[i] na kolekcii pracovných hárkov a Cells.Item[Row, Col].Value na kolekcii buniek. Nasledujúci príklad zapisuje malý zošit, ktorý využíva každú aktuálne podporovanú funkciu:
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;
Podporované funkcie
- Hodnoty buniek: čísla, boolovské hodnoty, reťazce, dátumy, vzorce
- Tabuľka zdieľaných reťazcov (
xl/sharedStrings.xml) s deduplikáciou na zapisovacej ceste - Palety štýlov na úrovni zošita —
Workbook.Fonts,Fills,BordersaNumberFormats— plusFontIndex/FillIndex/BorderIndex/NumberFormatIndexpre jednotlivé bunky. SaveAs emituje reálne bloky<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>; Open ich analyzuje späť, takže názov/veľkosť/tučné/kurzíva/farba, vzory výplne, okraje orámovania a vlastné formáty čísiel prežijú obojsmernú cestu - Šírky stĺpcov prostredníctvom
Worksheet.ColWidth[Col]a výšky riadkov prostredníctvomWorksheet.RowHeight[Row](blok<cols>pracovného hárka a atribútyhtpre jednotlivé<row>) - Vstavaný formát dátumu
cellXfna indexeXlsxXfIndexDate; hodnotyTDateTimesú označené automaticky - Zlúčené bunky (
<mergeCells>), vrátaneTXLSXRange.Merge(True)pre zlúčenie v štýle Excelu naprieč riadkami - Rozsahy pracovných hárkov prostredníctvom
Worksheet.Range,RCRange,UsedRange,EntireRowaEntireColumn. Pozri TXLSXRange pre hromadné hodnoty, vzorce,SetArrayFormula, indexy štýlov, formáty čísel, orámovania, príznaky ochrany, automatické prispôsobenie, zlúčenie, posun, zmenu veľkosti, viacúrovňové triedenieSort, vstavané štýly buniekApplyBuiltinStyle, pomocníkov pre kopírovanie/presun, pomocníkov pre vkladanie/mazanie celých riadkov/stĺpcov a export vybraného rozsahu do HTML - Hypertextové odkazy (
<hyperlinks>) zálohované prepojeniami pre externé URL adresy pre každý pracovný hárok - Komentáre buniek s kreslením VML (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml), takže bubliny sa vykresľujú v Exceli - Vložené obrázky (PNG / JPEG / GIF / BMP) prostredníctvom
Worksheet.Images, zapísané doxl/media/imageN.<ext>plus XML kreslenia a prepojenia pre jednotlivé hárky - Samostatné textové polia kreslenia prostredníctvom
Worksheet.AddTextBox, zapísané ako tvary kreslenia pracovného hárka s textovými telami namiesto komentárov buniek, s priamym vyhľadávaním ukotvenia a pomocníkmi pre mazanie rozsahu - Pomenované rozsahy na úrovni zošita prostredníctvom
Workbook.DefinedNames(s rozsahom pre celý zošit alebo pre konkrétny hárok prostredníctvomSheetIndex) - Výpočet vzorcov prostredníctvom
Workbook.CalculateaWorksheet.Calculate, zdieľajúci analyzátor a vyhodnocovač vzorcov XLS pre vzorce začínajúce sa na rovná sa, odkazy na bunky a rozsahy, odkazované bunky so vzorcami, odkazy naprieč hárkami, pomenované rozsahy a podporované textové, dátumové, pracovné dni, inžinierske/prevodové, bitové, štatistické, agregačné a matematické funkcie; na vyriešenie vlastných alebo nepodporovaných funkcií použiteWorkbook.OnUserFunctionaleboWorkbook.OnUserFunctionEx - Podmienené formátovanie pre jednotlivé hárky (
Worksheet.ConditionalFormats) a overenie údajov (Worksheet.DataValidations) vrátane skratky pre rozbaľovací zoznamAddListValidation(Range, Items) - Zoskupenia riadkov / stĺpcov (
RowOutlineLevel,ColOutlineLevel), stav skrytia (RowHidden,ColHidden) a stav zbalenej skupiny (RowCollapsed,ColCollapsed) - Ukotvenie priečok prostredníctvom
Worksheet.FreezePanes(Row, Col) - Nastavenie strany — šesť vlastností okrajov, veľkosť papiera, orientácia, mierka strany, prispôsobenie na šírku / prispôsobenie na výšku, plus
HeaderText/FooterText. Pomenované konštantyxlsxPaper*akoxlsxPaperLetter,xlsxPaperA4,xlsxPaperA3axlsxPaperLegalmôžu byť priradené kPaperSize - Automatický filter (
Worksheet.SetAutoFilter) - Tabuľky v štýle Excelu (TXLSXTable) s informáciami o štýle a stĺpcami tableColumns
API podkolekcií fasády
Fasádne triedy kolekcií spravujú podmienené formáty, overenia údajov, pomenované rozsahy, obrázky a tabuľky. Tu sú hlavné členy každej kolekcie:
- TXLSXConditionalFormats: Sprístupňuje pravidlá podmieneného formátovania. Vlastnosti:
CountMetódy:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations: Sprístupňuje overenia údajov. Vlastnosti:
CountMetódy:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames: Sprístupňuje pomenované názvy (pomenované rozsahy). Vlastnosti:
CountMetódy:DeleteByName,FindByName,IndexOfName - TXLSXImages: Sprístupňuje vložené obrázky. Vlastnosti:
CountMetódy:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables: Sprístupňuje tabuľky Excelu. Vlastnosti:
CountMetódy:AddExisting,DeleteByName,FindByName,IndexOfName
Podporované funkcie
- Vlastnosti dokumentu (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Companyatď.) zapísané dodocProps/core.xml+docProps/app.xml - Ochrana hesiel pracovného hárka / zošita (starší 16-bitový hash) prostredníctvom
Worksheet.Protect/Workbook.ProtectWorkbook; ukladanie chránené heslom AES kompatibilné s Excelom prostredníctvomSaveAsEncrypted, využívajúce akceleráciu AES-NI, ak je k dispozícii, inak prenosný softvérový fallback.OpenEncryptedstále vyvoláva výnimku pre šifrované balíky, kým nebude implementovaná podpora dešifrovania - Zachovanie projektu VBA prostredníctvom
Workbook.LoadVbaProjectFromFile/VbaProject; bajty prejdú obojsmernou cestou nezmenené. Platné obsahyvbaProject.binje možné skontrolovať aj prostredníctvomWorkbook.ParsedVBAProject - Grafy — stĺpcový / pruhový / čiarový / koláčový / plošný / prstencový prostredníctvom TXLSXChart, ukotvené na pracovnom hárku (
Worksheet.AddChart) alebo na celej strane na vyhradenom grafovom hárku prostredníctvomWorkbook.AddChartSheet(Name, Type, Title) - Bunky s formátovaným textom (rich-text) prostredníctvom TXLSXRichText s formátovaním písma pre jednotlivé časti; prechádzajú obojsmernou cestou cez tabuľku zdieľaných reťazcov
- Interné kotvy hypertextových odkazov prostredníctvom
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(nevyžaduje sa žiadny vzťah prepojení rels) - API na kopírovanie / presun / vymazanie rozsahu buniek na pracovnom hárku (
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Zarovnanie buniek prostredníctvom TXLSXAlignment +
AlignmentIndexpre každú bunku - Farba záložky pracovného hárka prostredníctvom
Worksheet.TabColor/TabColorIsAuto - Režim zobrazenia pracovného hárka prostredníctvom
Worksheet.View, vrátane normálneho zobrazenia, ukážky zlomov strán a zobrazenia rozloženia strany - Streamovacia cesta SaveAs (
Workbook.StreamingWrite := True), ktorá zostavuje a zapisuje každý pracovný hárok bez toho, aby držala ostatné v pamäti; XML akumulátor pre jednotlivé riadky používaTXLSWideStringBuilder, takže cyklus buniek zostáva lineárny - Obojsmerné
Openpre všetko vyššie uvedené okrem šifrovaných balíkov XLSX a identifikácie grafových hárkov, ktoré sa vracajú k dokumentovanému čiastočnému správaniu - Export a import na báze streamu:
SaveAs(Stream),Open(Stream)pre použitie v pamäti alebo pre polia typu BLOB - Čítanie/zápis OpenDocument Spreadsheet:
Workbook.OpenODSa generickéWorkbook.Openmôžu načítať balíky.ods, zatiaľ čoWorkbook.SaveAsODSaSaveAs(..., xlsxOpenDocumentSpreadsheet)zapisujú výstup ODS priamo. Pokrytie formátu zahŕňa hodnoty, vzorce, štýly, formátovaný text (rich text), rozmery riadkov/stĺpcov, zlúčenia, hypertextové odkazy, obrázky, grafy, pomenované rozsahy, AutoFilter, podmienené formáty, overenia údajov, ukotvenie priečok, nastavenie strany, hlavičky/päty, rozsahy tlače, zlomy strán, zoskupenia, farbu záložky a viditeľnosť hárkov v rámci podporovaných obojsmerných ciest - Možnosti exportu ODS: odovzdajte
TODSExportOptionsdoSaveAsODSna prepísanie reťazca generátora dokumentu alebo potlačenie častí grafov a obrázkov pri vytváraní ľahšieho balíka - Import textu s oddelenými hodnotami:
Workbook.OpenCSV(FileName)aWorkbook.OpenCSV(Stream)importujú údaje CSV alebo TSV s rozpoznávaním oddeľovača, detekciou kódovania BOM, úvodzovkami v štýle RFC 4180 a voliteľným odvodzovaním typu hodnoty.Open(FileName)automaticky smeruje súbory.csva.tsvdo importéra - Skenovanie metadát zošita:
Workbook.GetSheetNames(FileName, List)aWorkbook.GetSheetNames(Stream, List)načítavajú usporiadané názvy hárkov zxl/workbook.xmlbez načítania XML pracovného hárka - Ochrana buniek:
TXLSXCell.LockedaFormulaHidden— riadia, ktoré bunky sú upraviteľné alebo ktorých vzorce sú viditeľné, keď je hárok chránený - Automatické prispôsobenie šírky stĺpca a výšky riadka podľa obsahu bunky:
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - Vkladanie a mazanie riadkov / stĺpcov s plnou kaskádou:
InsertRows,DeleteRows,InsertCols,DeleteCols. Vedľajšie účinky sa šíria cez bunky, zlúčené rozsahy, hypertextové odkazy, komentáre, ukotvenie priečok, reťazcové odkazy na rozsahy, tabuľky, vzorce buniek, vzorce podmieneného formátu / overenia údajov, interné ciele hypertextových odkazov, odkazy na nastavenie tlače, manuálne zlomy strán, kritériá stĺpcov automatického filtra, rozsahy radov grafov, pomenované názvy, ukotvenia obrázkov a ukotvenia grafov - Rozšírené nastavenie strany:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Viditeľnosť hárka:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) aIsSelected - Manuálne zlomy strán:
AddRowBreak,AddColBreak, vyhľadávanie indexov a pomocníci pre odstránenie rozsahu - Kritériá stĺpca automatického filtra:
Worksheet.AddAutoFilterColumns jedným alebo dvoma AND/OR filtračnými pravidlami, plusWorksheet.AutoFilterColumns.FindByColIdaDeleteByColIdpre priame vyhľadávanie a odstránenie kritérií (TXLSXAutoFilterColumn) - Dátumová báza zošita:
Workbook.Date1904prepína medzi dátumovou epochou 1900 (predvolené pre Windows) a 1904 (Mac) - Diagonálne orámovania:
TXLSXBorder.DiagonalUpaDiagonalDownpovoľujú diagonálne čiary; štýl a farbu nesie diagonálny okrajDiagonal - Rozšírené vlastnosti písma:
TXLSXFont.VertAlign(horný index / dolný index),OutlineFont,Shadow,Family,CharSet - Metadáta pomenovaného rozsahu:
TXLSXDefinedName.HiddenaComment - Možnosti zobrazenia hárka:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - Staršia paleta indexovaných farieb OOXML:
Workbook.IndexedColor[0..63]sResetIndexedColors - Prepojenia na externé zošity:
Workbook.ExternalLinks/ TXLSXExternalLink — obojsmerný prenos metadát Target URL + SheetNames - Podpora farieb motívu (theme) pre
TXLSXFont,TXLSXFillaTXLSXBorderEdge: vlastnostiColorTheme/ColorIndex/TintAndShades prioritným usporiadaním (motív > indexovaná > RGB) - Export do CSV:
Workbook.SaveAsCSV— 4 preťaženia (FileName alebo Stream × aktívny hárok / explicitný SheetIndex + Delimiter), UTF-8 s BOM, úvodzovky RFC 4180 - Export do HTML:
Workbook.SaveAsHTMLaTXLSXRange.SaveAsHTMLzapisujú tabuľky HTML5 pre celý hárok zošita alebo iba vybraný obdĺžnik. Preťaženia s možnosťami akceptujúTXLSXHtmlExportOptionspre celodokumentový výstup, emisiu štýlov, emisiu BOM a pomenovanie tried tabuliek - Export do RTF:
Workbook.SaveAsRTF— 4 preťaženia, tabuľka RTF 1.6 so šírkami stĺpcov, formátovaním písma pre jednotlivé bunky a plným unicode BMP prostredníctvom 16-bitových escape sekvencií\uN?so znamienkom
Zdieľaná infraštruktúra
Obe fasády zdieľajú spoločnú sadu pomocných jednotiek nižšej úrovne, čo znamená, že deskriptory štýlov, hash tabuľky, AVL stromy, vstup/výstup ZIP a XML, prevody RGB na HLS a zostavovače reťazcov sú napísané raz a používané oboma cestami. Zdieľaní pomocníci zahŕňajú:
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— moderné deskriptory štýlovlxRgb— prevod farieb RGB / HLSlxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— deduplikačné kontajnery a stavebné bloky haldy buniek s podporou AVLlxXmlReader,lxXmlWriter,lxZipArchive— transportná vrstva OOXMLlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— pomocníci pre zostavenie streamov a reťazcov