Översikt över XLSX-fasad (lxHandleX)
lxHandleX är den dedikerade fasadenheten för kalkylbladsarbetsflöden i Excel 2007+ (.xlsx) och OpenDocument Spreadsheet (.ods). Den samexisterar med den ursprungliga lxHandle-fasaden så att befintlig kod fortsätter att fungera utan några ändringar
lxHandle— primär fasad för Excel 97-2003 BIFF-formatet (.xls), samt HTML-, RTF-, CSV- och TSV-export. All befintlig användarkod fortsätter att använda denna enhet oförändradlxHandleX— primär fasad för Excel 2007+ OOXML-formatet (.xlsx) och läs-/skrivarbetsflöden för ODS. Tillhandahåller egna typer för arbetsböcker och kalkylblad så att XLSX-specifikt beteende inte eftermonteras på BIFF-kodsökvägen, och exponerar import och export av ODS samt automatisk ODS-igenkänning viaOpen,SourceFormatochTODSExportOptions
Klasshierarki
XLSX-fasaden exponerar följande klasser
type
TXLSXWorkbook = class // arbetsbok på toppnivå med SaveAs / Open
TXLSXHtmlExportOptions = class // alternativ för HTML-dokument, stil, BOM och tabellklass
TODSExportOptions = class // ODS-exportalternativ för generator, diagram och bildupplösning
TXLSXSheets = class // kalkylbladssamling i arbetsboken
TXLSXFonts = class // teckensnittspalett på arbetsboksnivå
TXLSXFont = class // enskild teckensnittsbeskrivning
TXLSXFills = class // fyllningspalett på arbetsboksnivå
TXLSXFill = class // enskild fyllning (mönster + för- och bakgrundsfärg)
TXLSXBorders = class // kantlinjespalett på arbetsboksnivå
TXLSXBorder = class // fyra kanter + diagonal kantlinje
TXLSXNumberFormats = class // anpassade formatkoder på arbetsboksnivå
TXLSXDefinedNames = class // namngivna områden på arbetsboksnivå
TXLSXWorksheet = class // enskilt kalkylblad med celler och dekorationer
TXLSXCells = class // cellsamling i kalkylbladet
TXLSXCell = class // enskild cell (värde, formel, *Index stilreferenser)
TXLSXRange = class // rektangulärt kalkylbladsområdesomslag
TXLSXMergedCells = class // samling av sammanfogade områden
TXLSXHyperlinks = class // samling av hyperlänkar
TXLSXComments = class // samling av cellkommentarer
TXLSXImages = class // bildsamling (ritningar + media)
TXLSXConditionalFormats = class // regler för villkorsstyrd formatering
TXLSXDataValidations = class // datavalideringsregler
TXLSXTables = class // tabellsamling i Excel-stil
TXLSXCharts = class // diagramsamling (förankrade eller på helsida)
TXLSXChart = class // enskilt diagram (stapel / liggande stapel / linje / paj / spridning / bubbel / radar)
TXLSXChartSeries = class // diagramserier med områden för kategori, värde och bubbelstorlek
TXLSXTextBox = class // fristående ritad textruta på kalkylbladet
TXLSXRichText = class // rich text-innehåll per körning för celler
TXLSXAlignment = class // celljustering / radbrytning / indrag / rotation
TXLSXExternalLinks = class // samling av externa arbetsbokslänkar
TXLSXExternalLink = class // enskild extern arbetsboksreferens (mål-URL + kalkylbladsnamn)
Dessa klasser är oberoende av lxHandle.TXLSWorkBook och lxHandle.TXLSWorksheet. Program som behöver båda formaten kan använda båda fasaderna sida vid sida
uses
lxHandle, // XLS / HTML / RTF / CSV-arbetsbok (TXLSWorkBook)
lxHandleX; // XLSX-arbetsbok (TXLSXWorkbook)
Snabbstart
XLSX-fasaden följer samma anropskonventioner som BIFF-fasaden — SaveAs / Open på arbetsboken, Sheets.Add / Sheets[i] på kalkylbladssamlingen och Cells.Item[Row, Col].Value på cellsamlingen. Exemplet nedan skapar en liten arbetsbok som använder alla funktioner som för närvarande stöds
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; // taggad som datum
ws.Cells.Item[2, 2].Formula := 'SUM(B1:B1)';
ws.Cells.Item[3, 1].FillIndex := yellow + 1; // framhäv cell
ws.Cells.Item[3, 2].BorderIndex := box + 1; // inramad cell
ws.ColWidth[1] := 24;
ws.RowHeight[1] := 28;
ws.MergeCells(4, 1, 4, 3);
ws.Range['A8:C10'].Merge(True); // sammanfoga radvis
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;
Funktioner som stöds
- Cellvärden: tal, booleska värden, strängar, datum, formler
- Tabell för delade strängar (
xl/sharedStrings.xml) med deduplicering på skrivsökvägen - Stilpaletter på arbetsboksnivå —
Workbook.Fonts,Fills,BordersochNumberFormats— plusFontIndex/FillIndex/BorderIndex/NumberFormatIndexper cell. SaveAs genererar riktiga block för<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>; Open tolkar tillbaka dem så att namn/storlek/fetstil/kursiv/färg, fyllnadsmönster, kantlinjer och anpassade talformat överlever sparandet och inläsningen - Kolumnbredder via
Worksheet.ColWidth[Col]och radhöjder viaWorksheet.RowHeight[Row](kalkylbladets block<cols>och radattributenhtper<row>) - Inbyggd
cellXfför datum vid indexXlsxXfIndexDate;TDateTime-värden taggas automatiskt - Sammanfogade celler (
<mergeCells>), inklusiveTXLSXRange.Merge(True)för sammanfogning radvis i Excel-stil - Kalkylbladsområden via
Worksheet.Range,RCRange,UsedRange,EntireRowochEntireColumn. Se TXLSXRange för batchvärden, formler,SetArrayFormula, stilindex, talformat, ramar, skyddsflaggor, autoanpassning, sammanfogning, förskjutning, storleksändring, sortering med flera nycklar viaSort, inbyggda cellstilar viaApplyBuiltinStyle, hjälpfunktioner för kopiera/flytta, hjälpfunktioner för infoga/ta bort hela rader eller kolumner samt HTML-export av markerade områden - Hyperlänkar (
<hyperlinks>) som stöds av relationer per kalkylblad för externa URL-adresser - Cellkommentarer med VML-ritning (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml) så att ballonger renderas i Excel - Inbäddade bilder (PNG / JPEG / GIF / BMP) via
Worksheet.Images, skrivna tillxl/media/imageN.<ext>plus ritnings-XML och relationer per kalkylblad - Fristående ritade textrutor via
Worksheet.AddTextBox, skrivna som ritformer på kalkylbladet med textinnehåll istället för cellkommentarer, med direkt sökning efter förankringar och hjälpfunktioner för områdesborttagning - Namngivna områden på arbetsboksnivå via
Workbook.DefinedNames(med omfång för hela arbetsboken eller kalkylbladet viaSheetIndex) - Formelberäkning via
Workbook.CalculateochWorksheet.Calculate, som delar XLS-formeltolkaren och utvärderaren för formler med inledande likhetstecken, cell- och områdesreferenser, refererade formelceller, korsbladsreferenser, namngivna områden samt stödda funktioner för text, datum, arbetsdagar, teknik/baskonvertering, bitvisa operationer, statistik, aggregering och matematik; användWorkbook.OnUserFunctionellerWorkbook.OnUserFunctionExför att lösa anpassade eller icke-stödda funktioner - Villkorsstyrd formatering per kalkylblad (
Worksheet.ConditionalFormats) och datavalidering (Worksheet.DataValidations) inklusive genvägen för rullgardinsmenyAddListValidation(Range, Items)shortcut - Dispositionsgrupper för rader/kolumner (
RowOutlineLevel,ColOutlineLevel), dolt tillstånd (RowHidden,ColHidden) och komprimerat grupptillstånd (RowCollapsed,ColCollapsed) - Låsta rutor via
Worksheet.FreezePanes(Row, Col) - Sidinställningar — sex marginalegenskaper, pappersstorlek, orientering, sidskala, anpassa till bredd/höjd, samt
HeaderText/FooterText. NamngivnaxlsxPaper*-konstanter såsomxlsxPaperLetter,xlsxPaperA4,xlsxPaperA3ochxlsxPaperLegalkan tilldelas tillPaperSize - Autofilter (
Worksheet.SetAutoFilter) - Tabeller i Excel-stil (TXLSXTable) med stilinformation och tabellkolumner
API:er för fasadens underordnade samlingar
Fasadens samlingsklasser hanterar villkorsstyrda format, datavalideringar, namngivna områden, bilder och tabeller. Här är kärnmedlemmarna i varje samling
- TXLSXConditionalFormats:
Exponerar regler för villkorsstyrd formatering
Egenskaper:
CountMetoder:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations:
Exponerar datavalideringar
Egenskaper:
CountMetoder:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames:
Exponerar namngivna områden
Egenskaper:
CountMetoder:DeleteByName,FindByName,IndexOfName - TXLSXImages:
Exponerar inbäddade bilder
Egenskaper:
CountMetoder:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables:
Exponerar Excel-tabeller
Egenskaper:
CountMetoder:AddExisting,DeleteByName,FindByName,IndexOfName
Funktioner som stöds
- Dokumentegenskaper (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Companyosv.) skrivna tilldocProps/core.xml+docProps/app.xml - Lösenordsskydd för kalkylblad/arbetsbok (äldre 16-bitars hash) via
Worksheet.Protect/Workbook.ProtectWorkbook; Excel-kompatibel AES-lösenordsskyddad sparande viaSaveAsEncrypted, som använder AES-NI-acceleration när den är tillgänglig och bärbar mjukvaru-fallback annars.OpenEncryptedger fortfarande fel för krypterade paket tills avkrypteringsstöd implementeras - Bevarande av VBA-projekt via
Workbook.LoadVbaProjectFromFile/VbaProject; byte-sekvensen överförs oförändrad. GiltigavbaProject.bin-innehåll kan också inspekteras viaWorkbook.ParsedVBAProject - Diagram — stapel-, liggande stapel-, linje-, paj-, ytre- och munkdiagram via TXLSXChart, förankrade på ett kalkylblad (
Worksheet.AddChart) eller helsida på ett dedikerat diagramblad viaWorkbook.AddChartSheet(Name, Type, Title) - Celler med rik text via TXLSXRichText med teckensnittsformatering per körning; sparas och läses in via tabellen för delade strängar
- Interna ankarlänkar via
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(ingen rels-relation behövs) - API:er för kopiering, flyttning och rensning av cellområden på kalkylbladet (
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Celljustering via TXLSXAlignment +
AlignmentIndexper cell - Flikfärg för kalkylblad via
Worksheet.TabColor/TabColorIsAuto - Visningsläge för kalkylblad via
Worksheet.View, inklusive normal vy, sidbrytningsförhandsgranskning och sidlayoutvy - Strömmande SaveAs-sökväg (
Workbook.StreamingWrite := True) som bygger och skriver varje kalkylblad utan att hålla de andra i minnet; radackumulatorn för XML använderTXLSWideStringBuilderså att cellslingan verkar linjär - Sparande och inläsning (round-trip) via
Openför allt ovan utom krypterade XLSX-paket och bladsidentifiering för diagramblad, vilka faller tillbaka på det dokumenterade partiella beteendet - Strömbaserad export och import:
SaveAs(Stream),Open(Stream)för användning i minnet eller i BLOB-fält - Läsning/skrivning av OpenDocument Spreadsheet:
Workbook.OpenODSoch den allmännaWorkbook.Openkan ladda.odspaket, medanWorkbook.SaveAsODSochSaveAs(..., xlsxOpenDocumentSpreadsheet)skriver ODS-utdata direkt. Formatytan täcker värden, formler, stilar, rich text, rad-/kolumndimensioner, sammanfogningar, hyperlänkar, bilder, diagram, namngivna områden, autofilter, villkorsstyrda format, datavalideringar, låsta rutor, sidinställningar, sidhuvuden/sidfötter, utskriftsområden, sidbrytningar, dispositionsgrupper, flikfärg och bladsynlighet i alla stödda tur-och-retur-operationer - Exportalternativ för ODS: skicka
TODSExportOptionstillSaveAsODSför att åsidosätta dokumentets generatorsträng eller dölja diagram- och bilddelar vid generering av ett lättare paket - Import av avgränsad text:
Workbook.OpenCSV(FileName)ochWorkbook.OpenCSV(Stream)importerar CSV- eller TSV-data med avgränsarigenkänning, BOM-kodningsdetektering, citering i RFC 4180-stil samt valfri typidentifiering av värden.Open(FileName)dirigerar automatiskt.csv- och.tsv-filer till importören - Skanning av arbetsboksmetadata:
Workbook.GetSheetNames(FileName, List)ochWorkbook.GetSheetNames(Stream, List)läser sorterade kalkylbladsnamn frånxl/workbook.xmlutan att ladda kalkylblads-XML - Cellskydd:
TXLSXCell.LockedochFormulaHidden— styr vilka celler som är redigerbara eller vars formler är synliga när bladet är skyddat - Autoanpassa kolumnbredd och radhöjd från cellinnehåll:
Worksheet.AutoFitColumn,AutoFitColumns,Worksheet.AutoFitRow,AutoFitRows - Infogning och borttagning av rader/kolumner med fullständig kaskad:
InsertRows,DeleteRows,InsertCols,DeleteCols. Sidoeffekter sprids genom celler, sammanfogade områden, hyperlänkar, kommentarer, låsta rutor, referenser i områdessträngar, tabeller, cellformler, formler för villkorsstyrd formatering / datavalidering, interna hyperlänksmål, utskriftsreferenser, manuella sidbrytningar, kolumnkriterier för autofilter, diagramseriers områden, namngivna områden, bildförankringar och diagramförankringar - Utökade sidinställningar:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Bladsynlighet:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) ochIsSelected - Manuella sidbrytningar:
AddRowBreak,AddColBreak, indexsökning samt hjälpfunktioner för områdesborttagning - Kolumnkriterier för autofilter:
Worksheet.AddAutoFilterColumnmed regler för ett kriterium eller AND/OR med två kriterier, plusWorksheet.AutoFilterColumns.FindByColIdochDeleteByColIdför direkt kriteriesökning och borttagning (TXLSXAutoFilterColumn) - Arbetsbokens datumbas:
Workbook.Date1904växlar mellan datumepokerna 1900 (Windows-standard) och 1904 (Mac) - Diagonala kantlinjer:
TXLSXBorder.DiagonalUpochDiagonalDownaktiverar de diagonala linjerna; den diagonala kanten bär stilen och färgen - Utökade egenskaper för teckensnitt:
TXLSXFont.VertAlign(upphöjd / nedsänkt),OutlineFont,Shadow,Family,CharSet - Metadata för namngivna områden:
TXLSXDefinedName.HiddenochComment - Alternativ för bladvy:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - Äldre indexerad färgpalett för OOXML:
Workbook.IndexedColor[0..63]medResetIndexedColors - Externa arbetsbokslänkar:
Workbook.ExternalLinks/ TXLSXExternalLink — sparar och läser in metadata för mål-URL + kalkylbladsnamn - Stöd för temafärger i
TXLSXFont,TXLSXFillochTXLSXBorderEdge: egenskaper förColorTheme/ColorIndex/TintAndShademed prioritetsordning (tema > indexerad > RGB) - CSV-export:
Workbook.SaveAsCSV— 4 överlagringar (filnamn eller ström × aktivt blad / explicit kalkylbladsindex + avgränsare), UTF-8 med BOM, citering i RFC 4180-stil - HTML-export:
Workbook.SaveAsHTMLochTXLSXRange.SaveAsHTMLskriver HTML5-tabeller för ett helt kalkylblad eller endast det markerade området. Överlagringar med alternativ accepterarTXLSXHtmlExportOptionsför generering av fullständiga dokument, stilutmatning, BOM-utmatning samt tabellklassnamngivning - RTF-export:
Workbook.SaveAsRTF— 4 överlagringar, RTF 1.6-tabell med kolumnbredder, teckensnittsformatering per cell och full-BMP unicode via tecknade 16-bitars\uN?-escapes
Gemensam infrastruktur
Båda fasaderna delar en gemensam uppsättning hjälpfunktioner på lägre nivå, vilket innebär att stilbeskrivningar, hashtabeller, AVL-träd, ZIP- och XML-in/utdata, RGB-till-HLS-konverteringar och strängbyggare skrivs en gång och används av båda kodsökvägarna. De delade hjälpfunktionerna inkluderar
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— moderna stilbeskrivningarlxRgb— RGB / HLS-färgkonverteringlxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— deduplicerande behållare och AVL-stödda byggblock för cellhögarlxXmlReader,lxXmlWriter,lxZipArchive— transportskikt för OOXMLlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— hjälpfunktioner för ström- och strängmontering