Přehled XLSX Facade (lxHandleX)
lxHandleX je vyhrazená fasádní jednotka pro pracovní postupy se sešity Excel 2007+ (.xlsx) a OpenDocument Spreadsheet (.ods);koexistuje s původní fasádou lxHandle, takže starší kód nadále funguje bez jakýchkoli změn:
lxHandle— primární fasáda pro formát Excel 97-2003 BIFF (.xls), exporty do HTML, RTF, CSV a TSV;veškerý stávající uživatelský kód nadále používá tuto jednotku beze změnylxHandleX— primární fasáda pro formát Excel 2007+ OOXML (.xlsx) a pracovní postupy čtení/zápisu ODS;poskytuje vlastní typy sešitů a listů, takže chování specifické pro XLSX není zpětně aplikováno na cestu kódu BIFF, a zpřístupňuje import ODS, export, automatickou detekci ODS prostřednictvímOpen,SourceFormataTODSExportOptions
Hierarchie tříd
Fasáda XLSX zpřístupňuje následující třídy:
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)
Tyto třídy jsou nezávislé na lxHandle.TXLSWorkBook a lxHandle.TXLSWorksheet;aplikace, které vyžadují oba formáty, mohou používat obě fasády vedle sebe:
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
Rychlý start
Fasáda XLSX se řídí stejnými konvencemi volání jako fasáda BIFF — SaveAs / Open na sešitu, Sheets.Add / Sheets[i] na kolekci listů a Cells.Item[Row, Col].Value na kolekci buněk;níže uvedený příklad zapíše malý sešit, který využívá všechny aktuálně podporované funkce:
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é funkce
- Hodnoty buněk: čísla, logické hodnoty, řetězce, kalendářní data, vzorce
- Tabulka sdílených řetězců (
xl/sharedStrings.xml) s deduplikací na zapisovací cestě - Palety stylů na úrovni sešitu —
Workbook.Fonts,Fills,BordersaNumberFormats— a navíc indexyFontIndex/FillIndex/BorderIndex/NumberFormatIndexpro jednotlivé buňky;SaveAs generuje skutečné bloky<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>;Open je načte zpět, takže Name/Size/Bold/Italic/Color, vzory výplní, okraje ohraničení a vlastní formáty čísel zůstanou při obousměrném převodu zachovány - Šířky sloupců prostřednictvím
Worksheet.ColWidth[Col]a výšky řádků prostřednictvímWorksheet.RowHeight[Row](blok listu<cols>a atributyhtu jednotlivých<row>) - Vestavěný formát data
cellXfna indexuXlsxXfIndexDate;hodnotyTDateTimejsou označovány automaticky - Sloučené buňky (
<mergeCells>), včetněTXLSXRange.Merge(True)pro sloučení napříč řádky ve stylu Excelu - Rozsahy listu prostřednictvím
Worksheet.Range,RCRange,UsedRange,EntireRowaEntireColumn;viz TXLSXRange pro hromadné hodnoty, vzorce,SetArrayFormula, indexy stylů, formáty čísel, ohraničení, příznaky ochrany, automatické přizpůsobení, sloučení, posun, změnu velikosti, řazeníSortpodle více klíčů, vestavěné styly buněkApplyBuiltinStyle, pomocníky pro kopírování/přesun, pomocníky pro vkládání/odstraňování celých řádků/sloupců a export vybraného rozsahu do HTML - Hypertextové odkazy (
<hyperlinks>) podporované relacemi pro externí adresy URL na úrovni jednotlivých listů - Komentáře buněk s kreslením VML (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml), takže se v Excelu zobrazují bubliny - Vložené obrázky (PNG / JPEG / GIF / BMP) prostřednictvím
Worksheet.Images, zapisované doxl/media/imageN.<ext>a navíc kreslicí XML a relace pro jednotlivé listy - Samostatná textová pole kreslení prostřednictvím
Worksheet.AddTextBox, zapisovaná jako tvary kreslení listu s textovými těly namísto komentářů buněk, s přímým vyhledáváním kotev a pomocníky pro odstraňování rozsahů - Pojmenované rozsahy na úrovni sešitu prostřednictvím
Workbook.DefinedNames(s rozsahem sešitu nebo listu prostřednictvímSheetIndex) - Výpočet vzorců prostřednictvím
Workbook.CalculateaWorksheet.Calculate, sdílející parser a vyhodnocovač vzorců XLS pro vzorce začínající rovnítkem, odkazy na buňky a rozsahy, odkazované buňky se vzorci, odkazy napříč listy, rozsahy pojmenovaných názvů a podporované textové, datové, pracovní dny, inženýrské/převody základů, bitové, statistické, agregační a matematické funkce;k vyřešení vlastních nebo nepodporovaných funkcí použijteWorkbook.OnUserFunctionneboWorkbook.OnUserFunctionEx - Podmíněné formátování pro jednotlivé listy (
Worksheet.ConditionalFormats) a ověřování dat (Worksheet.DataValidations) včetně zástupce pro rozbalovací seznamAddListValidation(Range, Items) - Skupiny osnovy řádků / sloupců (
RowOutlineLevel,ColOutlineLevel), stav skrytí (RowHidden,ColHidden) a stav sbalené skupiny (RowCollapsed,ColCollapsed) - Ukotvení příček prostřednictvím
Worksheet.FreezePanes(Row, Col) - Vzhled stránky — šest vlastností okrajů, velikost papíru, orientace, měřítko stránky, přizpůsobit na šířku / přizpůsobit na výšku, a navíc
HeaderText/FooterText;pojmenované konstantyxlsxPaper*jakoxlsxPaperLetter,xlsxPaperA4,xlsxPaperA3axlsxPaperLegallze přiřadit doPaperSize - Automatický filtr (
Worksheet.SetAutoFilter) - Tabulky ve stylu Excelu (TXLSXTable) s informacemi o stylu a sloupci tableColumns
API podkolekcí fasády
Třídy kolekcí fasády spravují podmíněné formáty, ověřování dat, pojmenované rozsahy, obrázky a tabulky;zde jsou hlavní členové jednotlivých kolekcí:
- TXLSXConditionalFormats:
Zpřístupňuje pravidla podmíněného formátování;
vlastnosti:
Countmetody:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations:
Zpřístupňuje ověřování dat;
vlastnosti:
Countmetody:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames:
Zpřístupňuje definované názvy (pojmenované rozsahy);
vlastnosti:
Countmetody:DeleteByName,FindByName,IndexOfName - TXLSXImages:
Zpřístupňuje vložené obrázky;
vlastnosti:
Countmetody:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables:
Zpřístupňuje tabulky Excelu;
vlastnosti:
Countmetody:AddExisting,DeleteByName,FindByName,IndexOfName
Podporované funkce
- Vlastnosti dokumentu (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Companya tak dále) zapisované dodocProps/core.xml+docProps/app.xml - Ochrana listu / sešitu heslem (starší 16bitový hash)
prostřednictvím
Worksheet.Protect/Workbook.ProtectWorkbook;uložení chráněné heslem AES kompatibilní s Excelem prostřednictvímSaveAsEncrypted, využívající akceleraci AES-NI, pokud je k dispozici, a jinak přenosný softwarový záložní mechanismus;OpenEncryptedstále vyvolává výjimku pro šifrované balíčky, dokud nebude zavedena podpora dešifrování - Zachování projektu VBA prostřednictvím
Workbook.LoadVbaProjectFromFile/VbaProject;bajty zůstávají při obousměrném převodu nezměněny;platnévbaProject.bindatové části lze také kontrolovat prostřednictvímWorkbook.ParsedVBAProject - Grafy — sloupcový / pruhový / spojnicový / výsečový / plošný / prstencový prostřednictvím
TXLSXChart, ukotvené
na listu (
Worksheet.AddChart) nebo na celou stránku na vyhrazeném listu grafu prostřednictvímWorkbook.AddChartSheet(Name, Type, Title) - Buňky s formátovaným textem prostřednictvím TXLSXRichText s formátováním písma pro jednotlivé běhy;přenáší se obousměrně přes tabulku sdílených řetězců
- Interní kotvy hypertextových odkazů prostřednictvím
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(není vyžadována žádná relace rels) - API pro kopírování / přesun / vymazání rozsahu buněk na listu
(
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Zarovnání buněk prostřednictvím
TXLSXAlignment +
AlignmentIndexpro jednotlivé buňky - Barva záložky listu prostřednictvím
Worksheet.TabColor/TabColorIsAuto - Režim zobrazení listu prostřednictvím
Worksheet.View, včetně normálního zobrazení, náhledu konců stránek a zobrazení rozložení stránky - Streamovací cesta SaveAs (
Workbook.StreamingWrite := True) která vytváří a zapisuje každý list, aniž by ostatní držela v paměti;akumulátor XML pro jednotlivé řádky používáTXLSWideStringBuilder, takže smyčka buněk zůstává lineární - Obousměrný
Openpro vše výše uvedené kromě šifrovaných balíčků XLSX a identifikace listů grafů, které se vracejí k dokumentovanému částečnému chování - Export a import založený na streamech:
SaveAs(Stream),Open(Stream)pro použití v paměti nebo v polích BLOB - Čtení/zápis OpenDocument Spreadsheet:
Workbook.OpenODSa obecnýWorkbook.Openmohou načítat balíčky.ods, zatímcoWorkbook.SaveAsODSaSaveAs(..., xlsxOpenDocumentSpreadsheet)zapisují přímo výstup ODS;rozsah formátu pokrývá hodnoty, vzorce, styly, formátovaný text, rozměry řádků/sloupců, sloučení, hypertextové odkazy, obrázky, grafy, pojmenované rozsahy, AutoFilter, podmíněné formáty, ověřování dat, ukotvení příček, vzhled stránky, záhlaví/zápatí, tiskové rozsahy, konce stránek, skupiny osnovy, barvu záložky a viditelnost listu v rámci podporovaných obousměrných převodů - Možnosti exportu ODS: předejte
TODSExportOptionsdoSaveAsODSk přepsání řetězce generátoru dokumentu nebo k potlačení částí grafů a obrázků při vytváření lehčího balíčku - Import textu s oddělovači:
Workbook.OpenCSV(FileName)aWorkbook.OpenCSV(Stream)importují data CSV nebo TSV s rozpoznáváním oddělovačů, detekcí kódování BOM, uvozováním ve stylu RFC 4180 a volitelným odvozováním typu hodnoty;Open(FileName)automaticky směruje soubory.csva.tsvdo importéru automaticky - Skenování metadat sešitu:
Workbook.GetSheetNames(FileName, List)aWorkbook.GetSheetNames(Stream, List)načítají seřazené názvy listů zxl/workbook.xmlbez načítání XML listu - Ochrana buněk:
TXLSXCell.LockedaFormulaHidden— řídí, které buňky jsou upravitelné nebo jejichž vzorce jsou viditelné, když je list chráněn - Auto-fit column width and row height from cell content:
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - Vkládání a odstraňování řádků / sloupců s plnou kaskádou:
InsertRows,DeleteRows,InsertCols,DeleteCols;vedlejší účinky se šíří buňkami, sloučenými rozsahy, hypertextovými odkazy, komentáři, ukotvením příček, odkazy na rozsahy jako řetězce, tabulkami, vzorci buněk, vzorci podmíněného formátování / ověřování dat, interními cíli hypertextových odkazů, odkazy na nastavení tisku, ručními konci stránek, kritérii sloupců automatického filtru, rozsahy řad grafů, definovanými názvy, kotvami obrázků a kotvami grafů - Rozšířené nastavení stránky:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Viditelnost listu:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) aIsSelected - Ruční konce stránek:
AddRowBreak,AddColBreak, vyhledávání indexů a pomocníci pro odstranění rozsahu - Kritéria sloupců automatického filtru:
Worksheet.AddAutoFilterColumns pravidly filtru s jedním nebo dva kritérii AND/OR, a navícWorksheet.AutoFilterColumns.FindByColIdaDeleteByColIdpro přímé vyhledávání a odstraňování kritérií (TXLSXAutoFilterColumn) - Základ data sešitu:
Workbook.Date1904přepíná mezi datovým epochami 1900 (výchozí pro Windows) a 1904 (Mac) - Diagonální ohraničení:
TXLSXBorder.DiagonalUpaDiagonalDownpovolují diagonální čáry;styl a barvu nese diagonální okrajDiagonal - Rozšířené vlastnosti písma:
TXLSXFont.VertAlign(horní index / dolní index),OutlineFont,Shadow,Family,CharSet - Metadata pojmenovaného rozsahu:
TXLSXDefinedName.HiddenaComment - Možnosti zobrazení listu:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - Starší paleta indexovaných barev OOXML:
Workbook.IndexedColor[0..63]sResetIndexedColors - Odkazy na externí sešity:
Workbook.ExternalLinks/ TXLSXExternalLink — obousměrný přenos metadat cílové adresy URL + SheetNames - Podpora barev motivu na
TXLSXFont,TXLSXFillaTXLSXBorderEdge: vlastnostiColorTheme/ColorIndex/TintAndShades řazením priorit (motiv > indexováno > RGB) - Export do CSV:
Workbook.SaveAsCSV— 4 přetížení (FileName nebo Stream × aktivní list / explicitní SheetIndex + Delimiter), UTF-8 s BOM, uvozování RFC 4180 - Export do HTML:
Workbook.SaveAsHTMLaTXLSXRange.SaveAsHTMLzapisují tabulky HTML5 pro celý list sešitu nebo pouze pro vybraný obdélník;přetížení možností přijímajíTXLSXHtmlExportOptionspro výstup celého dokumentu, vyzařování stylů, vyzařování BOM a pojmenování třídy tabulky - Export do RTF:
Workbook.SaveAsRTF— 4 přetížení, tabulka RTF 1.6 s šířkami sloupců, formátováním písma pro jednotlivé buňky a plným unicode BMP pomocí signed-16-bit\uN?escape sekvencí
Sdílená infrastruktura
Obě fasády sdílejí společnou sadu pomocných jednotek nižší úrovně, což znamená, že popisovače stylů, tabulky hash, stromy AVL, ZIP a XML I/O, převody RGB na HLS a tvůrci řetězců jsou napsány jednou a používány kteroukoli cestou;sdílení pomocníci zahrnují:
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— moderní popisovače stylůlxRgb— převod barev RGB / HLSlxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— deduplikační kontejnery a stavební bloky haldy buněk s podporou AVLlxXmlReader,lxXmlWriter,lxZipArchive— transportní vrstva OOXMLlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— pomocníci pro sestavení streamů a řetězců