XLSX Facade áttekintés (lxHandleX)
Az lxHandleX a dedikált homlokzati egység (facade unit) az Excel 2007+ (.xlsx) és OpenDocument Spreadsheet (.ods) munkafüzet-munkafolyamatokhoz; az eredeti lxHandle egységgel párhuzamosan létezik, így a korábbi kódok változtatás nélkül működnek tovább
lxHandle— elsődleges homlokzat (facade) az Excel 97-2003 BIFF formátum (.xls), valamint HTML, RTF, CSV és TSV exportálásokhoz; az összes meglévő felhasználói kód változatlanul használja ezt az egységetlxHandleX— elsődleges homlokzat (facade) az Excel 2007+ OOXML formátumhoz (.xlsx) és az ODS olvasási/írási munkafolyamatokhoz; saját munkafüzet- és munkalaptípusokat biztosít, így az XLSX-specifikus viselkedés nem épül be a BIFF kódútvonalba, valamint elérhetővé teszi az ODS importálást, exportálást, az automatikus ODS-észlelést azOpen,SourceFormatésTODSExportOptionshasználatával
Osztályhierarchia
Az XLSX homlokzat (facade) a következő osztályokat teszi elérhetővé:
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)
Ezek az osztályok függetlenek a lxHandle.TXLSWorkBook és a lxHandle.TXLSWorksheet osztályoktól; a mindkét formátumot igénylő alkalmazások egymás mellett használhatják mindkét homlokzatot:
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
Gyors kezdés
Az XLSX homlokzat ugyanazokat a hívási alakú konvenciókat követi, mint a BIFF homlokzat — SaveAs / Open a munkafüzeten, Sheets.Add / Sheets[i] a munkalapgyűjteményen és Cells.Item[Row, Col].Value a cellagyűjteményen; az alábbi példa egy kis munkafüzetet ír ki, amely az összes jelenleg támogatott funkciót bemutatja:
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;
Támogatott funkciók
- Cellaértékek: számok, logikai értékek, karakterláncok, dátumok, képletek
- Megosztott karakterláncok táblázata (
xl/sharedStrings.xml) duplikálásszűréssel az írási útvonalon - Munkafüzet szintű stíluspaletták —
Workbook.Fonts,Fills,BordersésNumberFormats— valamint cellánkéntiFontIndex/FillIndex/BorderIndex/NumberFormatIndex; a SaveAs valódi<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>blokkokat bocsát ki; az Open visszafejti őket, így a Name/Size/Bold/Italic/Color, kitöltési minták, szegélyélek és az egyéni számformátumok mind túlélik az oda-vissza utat - Oszloponkénti szélességek a
Worksheet.ColWidth[Col]segítségével és soronkénti magasságok aWorksheet.RowHeight[Row]segítségével (a munkalap<cols>blokkja és a soronkénti<row>htattribútumok) - Beépített dátum
cellXfa(z)XlsxXfIndexDateindexen; aTDateTimeértékek automatikusan megjelölésre kerülnek - Összevont cellák (
<mergeCells>), beleértve aTXLSXRange.Merge(True)metódust a sorok közötti Excel-stílusú összevonáshoz - Munkalaptartományok a
Worksheet.Range,RCRange,UsedRange,EntireRowésEntireColumnsegítségével; lásd a TXLSXRange leírást a csoportos értékekhez, képletekhez, aSetArrayFormula-hoz, a stílusindexekhez, a számformátumokhoz, a szegélyekhez, a védelmi jelzőkhöz, az automatikus méretezéshez, az egyesítéshez, az eltoláshoz, az átméretezéshez, aSorttöbbkulcsos rendezéshez, azApplyBuiltinStylebeépített cellastílusokhoz, a másolási/mozgatási segédekhez, a teljes sor/teljes oszlop beszúrási/törlési segédekhez és a kijelölt tartomány HTML exportálásához - Külső URL-ekhez munkalaponkénti rels-kapcsolatokkal támogatott hiperhivatkozások (
<hyperlinks>) - Cellamegjegyzések VML rajzolással (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml), így a buborékok megjelennek az Excelben - Beágyazott képek (PNG / JPEG / GIF / BMP) a
Worksheet.Imageshasználatával, kiírva axl/media/imageN.<ext>helyre, valamint laponkénti rajz XML és rels fájlokba - Önálló rajz szövegdobozok a
Worksheet.AddTextBoxsegítségével, amelyek munkalap-rajzalakzatként íródnak szövegtörzzsel a cellamegjegyzések helyett, közvetlen horgonykeresővel és tartománytörlési segítőkkel - Munkafüzet szintű elnevezett tartományok a
Workbook.DefinedNamessegítségével (munkafüzet-hatókörű vagy aSheetIndexrévén munkalap-hatókörű) - Képlet számítása a
Workbook.Calculateés aWorksheet.Calculatesegítségével, megosztva az XLS képletértelmezőt és -értékelőt az egyenlőségjellel kezdődő képletekhez, cella- és tartományhivatkozásokhoz, hivatkozott képletcellákhoz, munkalapok közötti hivatkozásokhoz, elnevezett tartományokhoz, valamint a támogatott szöveg, dátum, munkanap, mérnöki/alapkonverziós, bitenkénti, statisztikai, aggregációs és matematikai függvényekhez; egyéni vagy nem támogatott függvények feloldásához használja aWorkbook.OnUserFunctionvagy aWorkbook.OnUserFunctionExeseményt - Munkalaponkénti feltételes formázás (
Worksheet.ConditionalFormats) és adatérvényesítés (Worksheet.DataValidations), beleértve a legördülőAddListValidation(Range, Items)gyorselérést - Sor / oszlop tagolási csoportok (
RowOutlineLevel,ColOutlineLevel), rejtett állapot (RowHidden,ColHidden) és összecsukott csoportállapot (RowCollapsed,ColCollapsed) - Rögzített panelek a
Worksheet.FreezePanes(Row, Col)segítségével - Oldalbeállítás — hat margó tulajdonság, papírméret, tájolás, oldalméretezés, szélességre/magasságra igazítás, valamint
HeaderText/FooterText. Az olyan nevesítettxlsxPaper*konstansok, mint axlsxPaperLetter,xlsxPaperA4,xlsxPaperA3ésxlsxPaperLegalhozzárendelhetők aPaperSizetulajdonsághoz - Automatikus szűrés (
Worksheet.SetAutoFilter) - Excel-stílusú táblázatok (TXLSXTable) stílusinformációkkal és tableColumns értékekkel
Homlokzat (facade) részgyűjtemény API-k
A homlokzatgyűjtemény osztályok kezelik a feltételes formátumokat, az adatérvényesítéseket, a megnevezett tartományokat, a képeket és a táblázatokat; íme az egyes gyűjtemények fő tagjai:
- TXLSXConditionalFormats: Feltételes formázási szabályokat tesz elérhetővé. Tulajdonságok:
CountMetódusok:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations: Adatérvényesítéseket tesz elérhetővé. Tulajdonságok:
CountMetódusok:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames: Definiált neveket (nevesített tartományokat) tesz elérhetővé. Tulajdonságok:
CountMetódusok:DeleteByName,FindByName,IndexOfName - TXLSXImages: Beágyazott képeket tesz elérhetővé. Tulajdonságok:
CountMetódusok:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables: Excel táblázatokat tesz elérhetővé. Tulajdonságok:
CountMetódusok:AddExisting,DeleteByName,FindByName,IndexOfName
Támogatott funkciók
- Dokumentumtulajdonságok (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Companystb.) kiírása adocProps/core.xml+docProps/app.xmlfájlokba - Munkalap / munkafüzet jelszavas védelme (örökölt 16 bites hash) a
Worksheet.Protect/Workbook.ProtectWorkbooksegítségével; Excel-kompatibilis AES jelszóval védett mentés aSaveAsEncryptedhasználatával, AES-NI gyorsítást alkalmazva, ha elérhető, egyébként hordozható szoftveres fallback megoldással; azOpenEncryptedtovábbra is kivételt vált ki a titkosított csomagoknál, amíg a dekódolási támogatás meg nem érkezik - VBA projekt megőrzése a
Workbook.LoadVbaProjectFromFile/VbaProjecthasználatával; a bájtok változatlanok maradnak az oda-vissza út során; a validvbaProject.bintartalom szintén megvizsgálható aWorkbook.ParsedVBAProjectsegítségével - Grafikonok — oszlop / sáv / vonal / torta / terület / fánk a(z) TXLSXChart segítségével, munkalaphoz rögzítve (
Worksheet.AddChart), vagy teljes oldalas grafikon egy különálló grafikonlapon aWorkbook.AddChartSheet(Name, Type, Title)segítségével - Formázott szöveges (rich-text) cellák a TXLSXRichText segítségével, szakaszonkénti betűtípus-formázással; oda-vissza átalakítás a megosztott karakterlánc-táblán keresztül
- Belső hiperhivatkozás-horgonyok a
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")segítségével (nincs szükség rels-kapcsolatra) - Cellatartomány másolása / mozgatása / törlése API a munkalapon (
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Cellák igazítása a(z) TXLSXAlignment segítségével + cellánkénti
AlignmentIndex - Munkalapfül színe a
Worksheet.TabColor/TabColorIsAutotulajdonságon keresztül - Munkalapnézeti mód a
Worksheet.Viewtulajdonságon keresztül, beleértve a normál nézetet, az oldaltörés előnézetet és a lapelrendezés nézetet - Streaming SaveAs útvonal (
Workbook.StreamingWrite := True), amely felépíti és kiírja az egyes munkalapokat anélkül, hogy a többit a memóriában tartaná; a soronkénti XML akkumulátor aTXLSWideStringBuilder-t használja, így a cellaciklus lineáris marad - Oda-vissza működő
Opena fentiek mindegyikére, kivéve a titkosított XLSX csomagokat és a diagramlapok lapazonosítását, amelyek a dokumentált részleges viselkedésre esnek vissza - Adatfolyam-alapú exportálás és importálás:
SaveAs(Stream),Open(Stream)a memórián belüli vagy BLOB-mező használathoz - OpenDocument táblázatkezelő (Spreadsheet) olvasás/írás: a
Workbook.OpenODSés az általánosWorkbook.Openképes betölteni a.odscsomagokat, míg aWorkbook.SaveAsODSés aSaveAs(..., xlsxOpenDocumentSpreadsheet)közvetlenül ODS kimenetet ír. A támogatott oda-vissza átalakítások során a formátum lefedi az értékeket, képleteket, stílusokat, formázott szövegeket, sor-/oszlopméreteket, összevonásokat, hiperhivatkozásokat, képeket, diagramokat, elnevezett tartományokat, automatikus szűrőket (AutoFilter), feltételes formázásokat, adatérvényesítéseket, panelek rögzítését, oldalbeállításokat, élőfejeket/élőlábakat, nyomtatási tartományokat, oldaltöréseket, tagolási csoportokat, a lap fülének színét és a lap láthatóságát - ODS exportálási opciók: adja át a
TODSExportOptionsparamétert aSaveAsODSmetódusnak a dokumentumgeneráló karakterlánc felülbírálásához, vagy a diagram és kép részek elhagyásához egy kisebb méretű csomag előállításakor - Határolt szöveg importálása: a
Workbook.OpenCSV(FileName)és aWorkbook.OpenCSV(Stream)importálja a CSV vagy TSV adatokat elválasztó-felismeréssel, BOM kódolásészleléssel, RFC 4180 stílusú idézéssel és opcionális értéktípus-következtetéssel; azOpen(FileName)automatikusan a.csvés.tsvfájlokat az importálóhoz irányítja - Munkafüzet metaadatok beolvasása: a
Workbook.GetSheetNames(FileName, List)és aWorkbook.GetSheetNames(Stream, List)beolvassa a rendezett lapneveket axl/workbook.xmlfájlból anélkül, hogy betöltené a munkalap XML-t - Cellavédelem:
TXLSXCell.LockedésFormulaHidden— szabályozza, hogy a lap védelme esetén mely cellák szerkeszthetők, vagy melyek képletei láthatók - Oszlopszélesség és sormagasság automatikus igazítása a cellatartalom alapján:
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - Sorok/oszlopok beszúrása és törlése teljes kaszkádolással:
InsertRows,DeleteRows,InsertCols,DeleteCols. A mellékhatások végiggyűrűznek a cellákon, összevont tartományokon, hiperhivatkozásokon, megjegyzéseken, panelek rögzítésén, tartomány-karakterlánc hivatkozásokon, táblázatokon, cellaképleteken, feltételes formázási / adatérvényesítési képleteken, belső hiperhivatkozás-célokon, nyomtatási beállítások hivatkozásain, kézi oldaltöréseken, automatikus szűrési oszlopfeltételeken, diagramsorozat-tartományokon, definiált neveken, kép-horgonyokon és diagram-horgonyokon - Kiterjesztett oldalbeállítás:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Lapláthatóság:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) ésIsSelected - Kézi oldaltörések:
AddRowBreak,AddColBreak, indexkeresés és tartomány-eltávolító segédek - Autoszűrő oszlopfeltételek:
Worksheet.AddAutoFilterColumnegyszeres vagy ÉS/VAGY kétfeltételes szűrőszabályokkal, valamintWorksheet.AutoFilterColumns.FindByColIdésDeleteByColIda feltételek közvetlen kikereséséhez és eltávolításához (TXLSXAutoFilterColumn) - Munkafüzet dátumbázisa: a
Workbook.Date1904vált a 1900-as (Windows alapértelmezett) és az 1904-es (Mac) dátum-epoch között - Átlós szegélyek: a
TXLSXBorder.DiagonalUpés aDiagonalDownengedélyezi az átlós vonalakat; aDiagonalél hordozza a stílust és a színt - Kiterjesztett betűtípus-tulajdonságok:
TXLSXFont.VertAlign(felső index / alsó index),OutlineFont,Shadow,Family,CharSet - Elnevezett tartomány metaadatai:
TXLSXDefinedName.HiddenésComment - Munkalap nézet opciók:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - OOXML örökölt indexelt színpaletta:
Workbook.IndexedColor[0..63]aResetIndexedColorsmetódussal - Külső munkafüzet-hivatkozások:
Workbook.ExternalLinks/ TXLSXExternalLink — Cél URL + SheetNames metaadat oda-vissza út - Témaszín támogatás a következőkhöz:
TXLSXFont,TXLSXFillésTXLSXBorderEdge:ColorTheme/ColorIndex/TintAndShadetulajdonságok prioritási sorrenddel (téma > indexelt > RGB) - CSV exportálás:
Workbook.SaveAsCSV— 4 túlterhelés (FileName vagy Stream × aktív munkalap / explicit SheetIndex + Delimiter), UTF-8 BOM-mal, RFC 4180 idézőjelezés - HTML exportálás: a
Workbook.SaveAsHTMLés aTXLSXRange.SaveAsHTMLHTML5 táblázatokat ír ki egy teljes munkafüzetlapra vagy csak a kijelölt téglalapra; az Options túlterhelések elfogadják aTXLSXHtmlExportOptionsobjektumot a teljes dokumentum kimenetéhez, stíluskibocsátáshoz, BOM-kibocsátáshoz és a táblázatosztály elnevezéséhez - RTF exportálás:
Workbook.SaveAsRTF— 4 túlterhelés, RTF 1.6 táblázat oszlopszélességekkel, cellánkénti betűtípus-formázással és teljes BMP unicode támogatással az előjeles 16 bites\uN?escape szekvenciákon keresztül
Megosztott infrastruktúra
Mindkét homlokzat közös alacsonyabb szintű segédegységeken osztozik, ami azt jelenti, hogy a stílusleírók, a hashtáblák, az AVL-fák, a ZIP és XML I/O, az RGB-HLS konverziók, valamint a karakterlánc-építők egyszer vannak megírva, és mindkét útvonal használja őket A közös segédeszközök a következők:
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— modern stílusleíróklxRgb— RGB / HLS színkonverziólxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— deduplikáló konténerek és AVL-alapú cellakupac építőelemeklxXmlReader,lxXmlWriter,lxZipArchive— OOXML szállítási réteglxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— folyam- és karakterlánc-összeállító segédek