Prezentare generală a fațadei XLSX (lxHandleX)
lxHandleX este unitatea de fațadă dedicată pentru fluxurile de lucru cu registre de lucru Excel 2007+ (.xlsx) și OpenDocument Spreadsheet (.ods). Aceasta coexistă cu fațada originală lxHandle, astfel încât codul moștenit să funcționeze în continuare fără nicio modificare:
lxHandle— fațada principală pentru formatul Excel 97-2003 BIFF (.xls) și exporturile HTML, RTF, CSV și TSV. Tot codul de utilizator existent continuă să utilizeze această unitate neschimbatălxHandleX— fațada principală pentru formatul Excel 2007+ OOXML (.xlsx) și fluxurile de lucru de citire/scriere ODS. Oferă propriile sale tipuri de registre de lucru (workbook) și foi de lucru (worksheet), astfel încât comportamentul specific XLSX să nu fie adaptat pe calea de cod BIFF, și expune importul ODS, exportul și detectarea automată ODS prin intermediulOpen,SourceFormatșiTODSExportOptions
Ierarhie de clase
Fațada XLSX expune următoarele clase:
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)
Aceste clase sunt independente de lxHandle.TXLSWorkBook și lxHandle.TXLSWorksheet. Aplicațiile care au nevoie de ambele formate pot folosi ambele fațade în paralel:
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
Ghid de pornire rapidă
Fațada XLSX urmează aceleași convenții de formă a apelurilor ca și fațada BIFF — SaveAs / Open pe registrul de lucru, Sheets.Add / Sheets[i] pe colecția de foi de calcul și Cells.Item[Row, Col].Value pe colecția de celule. Exemplul de mai jos scrie un registru de lucru mic care utilizează fiecare caracteristică acceptată în prezent:
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;
Funcționalități acceptate
- Valori celulă: numere, booleeni, șiruri de caractere, date, formule
- Tabel de șiruri partajate (
xl/sharedStrings.xml) cu deduplicare pe calea de scriere - Palete de stiluri la nivel de registru de lucru —
Workbook.Fonts,Fills,BordersșiNumberFormats— plus per-celulăFontIndex/FillIndex/BorderIndex/NumberFormatIndex. SaveAs emite blocuri reale<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>; Open le analizează înapoi, astfel încât Name/Size/Bold/Italic/Color, modelele de umplere, marginile de bordură și formatele de numere personalizate supraviețuiesc călătoriei complete (round-trip) - Lățimi per coloană prin
Worksheet.ColWidth[Col]și înălțimi per rând prinWorksheet.RowHeight[Row](blocul<cols>al foii de calcul și atributelehtper-<row>) - Dată predefinită
cellXfla indexulXlsxXfIndexDate; valorileTDateTimesunt etichetate automat - Celule îmbinate (
<mergeCells>), inclusivTXLSXRange.Merge(True)pentru îmbinare în stil Excel pe rânduri - Intervale de foi de lucru prin
Worksheet.Range,RCRange,UsedRange,EntireRowșiEntireColumn. Consultați TXLSXRange pentru valori în lot, formule,SetArrayFormula, indici de stil, formate de numere, borduri, marcaje de protecție, potrivire automată, îmbinare, decalaj (offset), redimensionare, sortare cu mai multe cheiSort, stiluri de celule încorporateApplyBuiltinStyle, ajutoare pentru copiere/mutare, ajutoare pentru inserare/ștergere pe rând complet/coloană completă și exportul HTML al intervalului selectat - Hyperlinkuri (
<hyperlinks>) susținute de relații (rels) specifice fiecărei foi pentru URL-uri externe - Comentarii de celule cu desen VML (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml) astfel încât baloanele de comentarii să se randeze în Excel - Imagini încorporate (PNG / JPEG / GIF / BMP) via
Worksheet.Images, scrise înxl/media/imageN.<ext>plus fișiere XML de desenare și relații (rels) specifice fiecărei foi - Casete de text de desenare independente prin
Worksheet.AddTextBox, scrise ca forme de desen pe foaia de calcul cu corpuri de text în loc de comentarii de celule, cu asistenți pentru căutarea directă a ancorelor și ștergerea intervalelor - Intervale denumite la nivel de registru de lucru prin
Workbook.DefinedNames(cu domeniu de aplicare la nivel de registru sau la nivel de foaie prinSheetIndex) - Calculul formulelor prin
Workbook.CalculateșiWorksheet.Calculate, partajând parserul și evaluatorul de formule XLS pentru formule care încep cu semnul egal, referințe la celule și intervale, celule cu formule referite, referințe între foi, intervale cu nume definite și funcțiile acceptate de text, dată, zi de lucru, inginerești/conversie de bază, pe biți, statistice, de agregare și matematice; utilizațiWorkbook.OnUserFunctionsauWorkbook.OnUserFunctionExpentru a rezolva funcții personalizate sau neacceptate - Formatare condiționată per foaie de calcul (
Worksheet.ConditionalFormats) și validare a datelor (Worksheet.DataValidations), inclusiv scurtătura dropdownAddListValidation(Range, Items) - Grupuri de structură pentru rânduri/coloane (
RowOutlineLevel,ColOutlineLevel), stare ascunsă (RowHidden,ColHidden) și stare de grup restrâns (RowCollapsed,ColCollapsed) - Panouri înghețate via
Worksheet.FreezePanes(Row, Col) - Configurare pagină — șase proprietăți de margine, dimensiunea hârtiei, orientarea, scara paginii, încadrare pe lățime / încadrare pe înălțime, plus
HeaderText/FooterText. ConstantelexlsxPaper*denumite precumxlsxPaperLetter,xlsxPaperA4,xlsxPaperA3șixlsxPaperLegalpot fi atribuite proprietățiiPaperSize - Filtrare automată (
Worksheet.SetAutoFilter) - Tabele în stil Excel (TXLSXTable) cu informații de stil și tableColumns
API-uri de sub-colecție Facade
Clasele de colecție ale fațadei gestionează formatele condiționate, validările de date, intervalele denumite, imaginile și tabelele. Iată membrii de bază ai fiecărei colecții:
- TXLSXConditionalFormats: expune reguli de formatare condiționată. Proprietăți:
CountMetode:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations: expune validări de date. Proprietăți:
CountMetode:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames: expune nume definite (intervale denumite). Proprietăți:
CountMetode:DeleteByName,FindByName,IndexOfName - TXLSXImages: Expune imagini încorporate. Proprietăți:
CountMetode:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables: Expune tabele Excel. Proprietăți:
CountMetode:AddExisting,DeleteByName,FindByName,IndexOfName
Funcționalități acceptate
- Proprietățile documentului (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Companyetc.) scrise îndocProps/core.xml+docProps/app.xml - Protecția prin parolă a foii de lucru / registrului de lucru (hash legacy pe 16 biți) prin
Worksheet.Protect/Workbook.ProtectWorkbook; salvare protejată prin parolă AES compatibilă cu Excel prinSaveAsEncrypted, utilizând accelerarea AES-NI când este disponibilă și o alternativă software portabilă în caz contrar.OpenEncryptedgenerează în continuare excepții pentru pachetele criptate până când suportul de decriptare va fi disponibil - Păstrarea proiectului VBA prin
Workbook.LoadVbaProjectFromFile/VbaProject; octeții fac o călătorie completă (round-trip) neschimbați. Datele utile (payloads)vbaProject.binvalide pot fi, de asemenea, inspectate prinWorkbook.ParsedVBAProject - Diagrame — coloană / bară / linie / plăcintă / arie / inel prin TXLSXChart, ancorate pe o foaie de lucru (
Worksheet.AddChart) sau pe pagină completă pe o foaie de diagramă dedicată prinWorkbook.AddChartSheet(Name, Type, Title) - Celule cu text îmbogățit (rich-text) prin TXLSXRichText cu formatare font per secțiune; cicluri complete de salvare-încărcare prin tabelul de șiruri partajate
- Ancore de hyperlink interne via
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(nu este necesară o relație rels) - API pentru copierea / mutarea / ștergerea intervalului de celule în foaia de lucru (
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Alinierea celulei prin TXLSXAlignment +
AlignmentIndexper celulă - Culoarea filei foii de lucru prin
Worksheet.TabColor/TabColorIsAuto - Modul de vizualizare a foii de lucru prin
Worksheet.View, inclusiv vizualizarea normală, previzualizarea întreruperii de pagină și vizualizarea aspectului paginii - Calea de flux SaveAs (
Workbook.StreamingWrite := True) care construiește și scrie fiecare foaie de calcul fără a le păstra pe celelalte în memorie; acumulatorul XML per rând utilizeazăTXLSWideStringBuilder, astfel încât bucla de celule rămâne liniară - Ciclu complet de deschidere (
Open) pentru toate elementele de mai sus, cu excepția pachetelor XLSX criptate și a identificării foilor de diagrame, care revin la comportamentul parțial documentat - Export și import bazat pe flux (stream):
SaveAs(Stream),Open(Stream)pentru utilizare în memorie sau pentru câmpuri BLOB - Scriere/citire OpenDocument Spreadsheet:
Workbook.OpenODSși funcția genericăWorkbook.Openpot încărca pachete.ods, în timp ceWorkbook.SaveAsODSșiSaveAs(..., xlsxOpenDocumentSpreadsheet)scriu direct date de ieșire ODS. Suprafața formatului acoperă valori, formule, stiluri, text îmbogățit, dimensiuni de rând/coloană, îmbinări, hyperlinkuri, imagini, diagrame, intervale denumite, AutoFilter, formatări condiționate, validări de date, panouri fixate, configurare pagină, anteturi/subsoluri, intervale de imprimare, întreruperi de pagină, grupuri de structură, culoarea filei și vizibilitatea foii de calcul în cadrul ciclurilor de salvare-deschidere acceptate - Opțiuni de export ODS: transmiteți
TODSExportOptionscătreSaveAsODSpentru a suprascrie șirul generatorului de documente sau pentru a suprima părțile de diagrame și imagini atunci când se produce un pachet mai ușor - Import de text delimitat:
Workbook.OpenCSV(FileName)șiWorkbook.OpenCSV(Stream)importă date CSV sau TSV cu detectarea separatorului, detectarea codificării BOM, încadrare în ghilimele în stil RFC 4180 și deducerea opțională a tipului de valoare.Open(FileName)direcționează automat fișierele.csvși.tsvcătre importator - Scanarea metadatelor registrului de lucru:
Workbook.GetSheetNames(FileName, List)șiWorkbook.GetSheetNames(Stream, List)citesc numele de foi ordonate dinxl/workbook.xmlfără a încărca XML-ul foii de lucru - Protecția celulei:
TXLSXCell.LockedșiFormulaHidden— controlează care celule sunt editabile sau ale căror formule sunt vizibile atunci când foaia este protejată - Ajustare automată a lățimii coloanei și a înălțimii rândului pe baza conținutului celulei:
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - Inserarea și ștergerea de rânduri/coloane cu cascadare completă:
InsertRows,DeleteRows,InsertCols,DeleteCols. Efectele secundare se propagă prin celule, intervale îmbinate, hyperlinkuri, comentarii, panouri fixate, referințe de șiruri de intervale, tabele, formule de celule, formule de formatare condiționată / validare a datelor, ținte de hyperlinkuri interne, referințe de configurare a imprimării, întreruperi manuale de pagină, criterii de filtrare automată pentru coloane, intervale de serii de diagrame, nume definite, ancore de imagini și ancore de diagrame - Configurare extinsă a paginii:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Vizibilitatea foii:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) șiIsSelected - Întreruperi de pagină manuale: ajutoare pentru
AddRowBreak,AddColBreak, căutare de indici și eliminare de intervale - Criterii pentru coloana de filtrare automată:
Worksheet.AddAutoFilterColumncu reguli de filtrare cu un singur criteriu sau două criterii de tip ȘI/SAU, plusWorksheet.AutoFilterColumns.FindByColIdșiDeleteByColIdpentru căutarea și eliminarea directă a criteriilor (TXLSXAutoFilterColumn) - Baza de date a registrului de lucru:
Workbook.Date1904comută între epoca datei din 1900 (implicit pe Windows) și 1904 (Mac) - Borduri diagonale:
TXLSXBorder.DiagonalUpșiDiagonalDownactivează liniile diagonale; laturaDiagonalpoartă stilul și culoarea - Proprietăți extinse de font:
TXLSXFont.VertAlign(superscript / subscript),OutlineFont,Shadow,Family,CharSet - Metadate pentru intervale denumite:
TXLSXDefinedName.HiddenșiComment - Opțiuni de vizualizare a foii:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - Paletă de culori indexate OOXML moștenită:
Workbook.IndexedColor[0..63]cuResetIndexedColors - Legături externe către registre de lucru:
Workbook.ExternalLinks/ TXLSXExternalLink — dus-întors pentru metadate Target URL + SheetNames - Suport pentru culori de temă pe
TXLSXFont,TXLSXFillșiTXLSXBorderEdge: proprietățileColorTheme/ColorIndex/TintAndShadecu ordinea de prioritate (temă > indexat > RGB) - Export CSV:
Workbook.SaveAsCSV— 4 supraîncărcări (FileName sau Stream × active-sheet / SheetIndex explicit + Delimiter), UTF-8 cu BOM, încadrare în ghilimele conform RFC 4180 - Export HTML:
Workbook.SaveAsHTMLșiTXLSXRange.SaveAsHTMLscriu tabele HTML5 pentru o foaie întreagă de registru de lucru sau doar pentru dreptunghiul selectat. Supraîncărcările de opzioni acceptăTXLSXHtmlExportOptionspentru ieșire de document complet, emitere de stil, emitere BOM și denumire de clasă de tabel - Export RTF:
Workbook.SaveAsRTF— 4 supraîncărcări, tabel RTF 1.6 cu lățimi de coloană, formatare font per celulă și unicode BMP complet prin secvențe de eludare (escapes)\uN?pe 16 biți cu semn
Infrastructură partajată
Ambele fațade partajează un set comun de unități ajutătoare de nivel inferior, ceea ce înseamnă că descriptorii de stil, tabelele hash, arborii AVL, I/O ZIP și XML, conversiile RGB-la-HLS și constructorii de șiruri sunt scrise o singură dată și utilizate de oricare cale. Asistenții partajați includ:
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— descriptori de stil modernilxRgb— conversie de culori RGB / HLSlxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— containere de deduplicare și blocuri de construcție cell heap bazate pe AVLlxXmlReader,lxXmlWriter,lxZipArchive— strat de transport OOXMLlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— ajutoare pentru asamblarea fluxurilor și șirurilor de caractere