Panoramica della facciata XLSX (lxHandleX)
lxHandleX è l'unità di facciata dedicata per i flussi di lavoro delle cartelle di lavoro Excel 2007+ (.xlsx) e OpenDocument Spreadsheet (.ods). Coesiste con la facciata originale lxHandle in modo che il codice legacy continui a funzionare senza alcuna modifica:
lxHandle— facciata principale per il formato Excel 97-2003 BIFF (.xls), esportazioni HTML, RTF, CSV e TSV. Tutto il codice utente esistente continua a utilizzare questa unità senza modifichelxHandleX— facciata principale per il formato Excel 2007+ OOXML (.xlsx), i flussi di lavoro di lettura/scrittura ODS e il sottoinsieme valori-e-stili XLSB; fornisce tipi separati di cartella di lavoro e foglio di lavoro, il rilevamento automatico del package tramiteOpen,SourceFormat, formati di output espliciti eTODSExportOptions
Gerarchia delle classi
La facciata XLSX espone le seguenti classi:
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)
Queste classi sono indipendenti da lxHandle.TXLSWorkBook e lxHandle.TXLSWorksheet. Le applicazioni che necessitano di entrambi i formati possono utilizzare entrambe le facciate affiancate:
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
Avvio rapido
La facciata XLSX segue le stesse convenzioni di chiamata della facciata BIFF — SaveAs / Open sulla cartella di lavoro, Sheets.Add / Sheets[i] sulla raccolta di fogli di lavoro e Cells.Item[Row, Col].Value sulla raccolta di celle. L'esempio seguente scrive una piccola cartella di lavoro che esercita ogni caratteristica attualmente supportata:
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;
Caratteristiche supportate
- Valori delle celle: numeri, booleani, stringhe, date, formule
- Tabella delle stringhe condivise (
xl/sharedStrings.xml) con deduplicazione nel percorso di scrittura - Tavolozze degli stili a livello di cartella di lavoro —
Workbook.Fonts,Fills,BorderseNumberFormats— più per cellaFontIndex/FillIndex/BorderIndex/NumberFormatIndex. SaveAs emette blocchi reali<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>; Open li analizza in modo che Nome/Dimensione/Grassetto/Corsivo/Colore, motivi di riempimento, bordi e formati numerici personalizzati sopravvivano tutti al viaggio di andata e ritorno - Larghezze per colonna tramite
Worksheet.ColWidth[Col]e altezze per riga tramiteWorksheet.RowHeight[Row](blocco del foglio di lavoro<cols>e attributihtper<row>) cellXfdella data integrato all'indiceXlsxXfIndexDate; i valoriTDateTimevengono taggati automaticamente- Celle unite (
<mergeCells>), inclusoTXLSXRange.Merge(True)per l'unione in stile Excel tra le righe - Intervalli del foglio di lavoro tramite
Worksheet.Range,RCRange,UsedRange,EntireRoweEntireColumn. Vedi TXLSXRange per valori batch, formule,SetArrayFormula, indici di stile, formati numerici, bordi, flag di protezione, adattamento automatico, unione, offset, ridimensionamento, ordinamento multichiaveSort, stili di cella integratiApplyBuiltinStyle, helper di copia/spostamento, helper di inserimento/eliminazione di intere righe/intere colonne ed esportazione HTML dell'intervallo selezionato - Collegamenti ipertestuali (
<hyperlinks>) supportati da relazioni per foglio di lavoro per URL esterni - Commenti delle celle con disegno VML (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml) in modo che i fumetti vengano visualizzati in Excel - Immagini incorporate (PNG / JPEG / GIF / BMP) tramite
Worksheet.Images, scritte inxl/media/imageN.<ext>più XML di disegno e relazioni per foglio - Caselle di testo di disegno indipendenti tramite
Worksheet.AddTextBox, scritte come forme di disegno del foglio di lavoro con corpi di testo anziché commenti di cella, con ricerca diretta dell'ancora e helper per l'eliminazione dell'intervallo - Intervalli denominati a livello di cartella di lavoro tramite
Workbook.DefinedNames(con ambito cartella di lavoro o ambito foglio tramiteSheetIndex) - Calcolo delle formule tramite
Workbook.CalculateeWorksheet.Calculate, condividendo il parser e l'analizzatore di formule XLS per formule con segno di uguale iniziale, riferimenti a celle e intervalli, celle di formule referenziate, riferimenti incrociati tra fogli, intervalli con nome definito e funzioni supportate di testo, data, giorno lavorativo, ingegneria/conversione di base, bit a bit, statistiche, aggregate e matematiche; utilizzareWorkbook.OnUserFunctionoWorkbook.OnUserFunctionExper risolvere funzioni personalizzate o non supportate - Formattazione condizionale per foglio di lavoro (
Worksheet.ConditionalFormats) e convalida dei dati (Worksheet.DataValidations) inclusa la scorciatoia a discesaAddListValidation(Range, Items) - Gruppi di struttura di righe / colonne (
RowOutlineLevel,ColOutlineLevel), stato nascosto (RowHidden,ColHidden) e stato di gruppo compresso (RowCollapsed,ColCollapsed) - Riquadri bloccati tramite
Worksheet.FreezePanes(Row, Col) - Impostazione della pagina — sei proprietà dei margini, dimensione della carta, orientamento, scala di pagina, adatta alla larghezza / adatta all'altezza, più
HeaderText/FooterText. Costanti denominatexlsxPaper*comexlsxPaperLetter,xlsxPaperA4,xlsxPaperA3exlsxPaperLegalpossono essere assegnate aPaperSize - Filtro automatico (
Worksheet.SetAutoFilter) - Tabelle in stile Excel (TXLSXTable) con informazioni sullo stile e tableColumns
API delle sotto-raccolte della facciata
Le classi delle raccolte della facciata gestiscono formati condizionali, convalide dei dati, intervalli denominati, immagini e tabelle. Ecco i membri principali di ogni raccolta:
- TXLSXConditionalFormats: Espone le regole di formattazione condizionale. Proprietà:
CountMetodi:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations: Espone le convalide dei dati. Proprietà:
CountMetodi:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames: Espone i nomi definiti (intervalli denominati). Proprietà:
CountMetodi:DeleteByName,FindByName,IndexOfName - TXLSXImages: Espone le immagini incorporate. Proprietà:
CountMetodi:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables: Espone le tabelle di Excel. Proprietà:
CountMetodi:AddExisting,DeleteByName,FindByName,IndexOfName - TXLSConnections: Espone le connessioni dati esterne della cartella di lavoro tramite
Workbook.ConnectionsProprietà:CountMetodi:Add,AddExisting,FindById,FindByName,NextId,Validate - TXLSQueryTables: Espone le definizioni dei risultati di query del foglio di lavoro tramite
Worksheet.QueryTablesProprietà:CountMetodi:Add,AddExisting,FindByName,FindByResultTableName,Validate
Caratteristiche supportate
- Proprietà del documento (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Company, ecc.) scritte indocProps/core.xml+docProps/app.xml - Protezione con password del foglio di lavoro / della cartella di lavoro (hash a 16 bit legacy) tramite
Worksheet.Protect/Workbook.ProtectWorkbook; salvataggio protetto da password AES compatibile con Excel tramiteSaveAsEncrypted, utilizzando l'accelerazione AES-NI quando disponibile e il fallback software portatile in caso contrario.OpenEncryptedgenera comunque un'eccezione per i pacchetti crittografati fino a quando non sarà disponibile il supporto per la decrittografia - Preservazione del progetto VBA tramite
Workbook.LoadVbaProjectFromFile/VbaProject; i byte rimangono invariati nel viaggio di andata e ritorno. I payloadvbaProject.binvalidi possono anche essere ispezionati tramiteWorkbook.ParsedVBAProject - Grafici — a colonne / a barre / a linee / a torta / ad area / ad anello tramite TXLSXChart, ancorati su un foglio di lavoro (
Worksheet.AddChart) o a pagina intera su un foglio grafico dedicato tramiteWorkbook.AddChartSheet(Name, Type, Title) - Celle di testo formattato tramite TXLSXRichText con formattazione del carattere per esecuzione; viaggio di andata e ritorno attraverso la tabella delle stringhe condivise
- Ancore di collegamento ipertestuale interno tramite
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(nessuna relazione rels necessaria) - API per copiare / spostare / cancellare l'intervallo di celle sul foglio di lavoro (
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Allineamento delle celle tramite TXLSXAlignment +
AlignmentIndexper cella - Colore della scheda del foglio di lavoro tramite
Worksheet.TabColor/TabColorIsAuto - Modalità di visualizzazione del foglio di lavoro tramite
Worksheet.View, incluse la visualizzazione normale, l'anteprima delle interruzioni di pagina e la visualizzazione del layout di pagina - Percorso SaveAs in streaming (
Workbook.StreamingWrite := True) che compila e scrive ogni foglio di lavoro senza tenere gli altri in memoria; l'accumulatore XML per riga utilizzaTXLSWideStringBuilderin modo che il ciclo delle celle rimanga lineare - Viaggio di andata e ritorno
Openper tutto quanto sopra tranne i pacchetti XLSX crittografati e l'identificazione del foglio grafico, che tornano al comportamento parziale documentato - Esportazione e importazione basate su flusso:
SaveAs(Stream),Open(Stream)per l'uso in memoria o nei campi BLOB - Lettura/scrittura di fogli di calcolo OpenDocument:
Workbook.OpenODSe il genericoWorkbook.Openpossono caricare pacchetti.ods, mentreWorkbook.SaveAsODSeSaveAs(..., xlsxOpenDocumentSpreadsheet)scrivono direttamente l'output ODS. La superficie del formato copre valori, formule, stili, testo formattato, dimensioni di riga/colonna, unioni, collegamenti ipertestuali, immagini, grafici, intervalli denominati, filtro automatico, formati condizionali, convalide dei dati, riquadri bloccati, impostazione della pagina, intestazioni/piè di pagina, intervalli di stampa, interruzioni di pagina, gruppi di struttura, colore della scheda e visibilità del foglio nei viaggi di andata e ritorno supportati - Opzioni di esportazione ODS: passare
TODSExportOptionsaSaveAsODSper ignorare la stringa del generatore del documento o sopprimere le parti di grafici e immagini quando si produce un pacchetto più leggero - Importazione di testo delimitato:
Workbook.OpenCSV(FileName)eWorkbook.OpenCSV(Stream)importano dati CSV o TSV con rilevamento del separatore, rilevamento della codifica BOM, citazioni in stile RFC 4180 e inferenza opzionale del tipo di valore.Open(FileName)indirizza automaticamente i file.csve.tsvall'importatore - Scansione dei metadati della cartella di lavoro:
Workbook.GetSheetNames(FileName, List)eWorkbook.GetSheetNames(Stream, List)leggono i nomi dei fogli ordinati daxl/workbook.xmlsenza caricare l'XML del foglio di lavoro - Protezione delle celle:
TXLSXCell.LockedeFormulaHidden— controllano quali celle sono modificabili o le cui formule sono visibili quando il foglio è protetto - Adattamento automatico della larghezza della colonna e dell'altezza della riga dal contenuto della cella:
Worksheet.AutoFitColumn,AutoFitColumns,Worksheet.AutoFitRow,Worksheet.AutoFitRows - Inserimento ed eliminazione di righe / colonne con cascata completa:
InsertRows,DeleteRows,InsertCols,DeleteCols. Gli effetti collaterali si propagano attraverso celle, intervalli uniti, collegamenti ipertestuali, commenti, riquadri bloccati, riferimenti a stringhe di intervallo, tabelle, formule di celle, formule di formattazione condizionale / convalida dei dati, destinazioni di collegamenti ipertestuali interni, riferimenti di impostazione di stampa, interruzioni di pagina manuali, criteri di colonna di filtro automatico, intervalli di serie di grafici, nomi definiti, ancore di immagini e ancore di grafici - Impostazione della pagina estesa:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Accesso opaco al payload del driver di stampa tramite
PrinterDriverData,HasPrinterDriverDataeClearPrinterDriverData; array di byte e copie del foglio di lavoro hanno proprietà indipendente, i payload sono limitati a 1 MiB, e la cancellazione rimuove la relazione del foglio di lavoro e la parte binaria del pacchetto senza sostituire i campi tipizzati di impostazione pagina; il caricamento collega solo l'identificatore esatto di relazionepageSetupcon il tipo di relazione richiesto e una destinazione esistente, mentre i riferimenti mancanti, di tipo errato o pendenti emettonoxlsDiagnosticPrinterSettingsRelationshipInvalidsenza prendere in prestito un'altra parte binaria - Calibrazione del rendering a livello di cartella di lavoro tramite
RenderCalibration,CaptureRenderCalibrationeResetRenderCalibration, con assegnazione validata dell'intero record e istantanee indipendenti per operazione di larghezza, altezza, interlinea, margini delle celle, scalatura dello schermo e DPI di misurazione - Geometria e misurazione dei font di proprietà dell'operazione tramite
CreateRenderGeometry, con calibrazione immutabile e identità della generazione della cartella di lavoro, chiavi di cache complete per font e consapevoli del ritorno a capo, caching locale limitata e conversioni condivise di pixel, punti, larghezza di colonna, MDW e larghezza utile della cella - L'AutoFit cattura un'istanza della geometria a livello di cartella di lavoro per operazione e misura i font delle celle visibili e il testo mandato a capo con spaziature e margini calibrati; l'impaginazione cattura un'istanza separata per ogni build, mantiene invariate le pagine logiche esistenti fino alla build successiva e non scrive mai le dimensioni del foglio di lavoro
- Visibilità del foglio:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) eIsSelected - Interruzioni di pagina manuali:
AddRowBreak,AddColBreak, ricerca dell'indice e helper per la rimozione dell'intervallo - Criteri di colonna del filtro automatico:
Worksheet.AddAutoFilterColumncon regole di filtro a criterio singolo o AND/OR a due criteri, piùWorksheet.AutoFilterColumns.FindByColIdeDeleteByColIdper la ricerca diretta e la rimozione dei criteri (TXLSXAutoFilterColumn) - Base della data della cartella di lavoro:
Workbook.Date1904passa tra l'epoca della data del 1900 (predefinita di Windows) e del 1904 (Mac) - Bordi diagonali:
TXLSXBorder.DiagonalUpeDiagonalDownabilitano le linee diagonali; il bordoDiagonaltrasporta lo stile e il colore - Proprietà dei caratteri estese:
TXLSXFont.VertAlign(apice / pedice),OutlineFont,Shadow,Family,CharSet - Metadati dell'intervallo denominato:
TXLSXDefinedName.HiddeneComment - Opzioni di visualizzazione del foglio:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - Tavolozza dei colori indicizzati legacy OOXML:
Workbook.IndexedColor[0..63]conResetIndexedColors - Collegamenti a cartelle di lavoro esterne:
Workbook.ExternalLinks/ TXLSXExternalLink — URL di destinazione + viaggio di andata e ritorno dei metadati SheetNames - Connessioni dati esterne e risultati di query:
Workbook.Connections/Worksheet.QueryTables— refresh tipizzato, credenziali, comando, web, testo, parametri, campi, tabelle e binding di nomi definiti con round-trip sicuro per le estensioni - Supporto del colore del tema su
TXLSXFont,TXLSXFilleTXLSXBorderEdge: proprietàColorTheme/ColorIndex/TintAndShadecon ordine di priorità (tema > indicizzato > RGB) - Conversione BIFF8 tramite gli overload su file e stream di
SaveXLSXWorkbookAsXLS, con un piano deterministico della tavolozza a 56 colori, preservazione degli slot indicizzati già usati dagli stili della cartella di lavoro, quantizzazione OKLab pesata quando i colori diretti superano gli slot disponibili, attraversamento sparso delle celle caricate e rifiuto in preflight di righe o colonne fuori dalla griglia XLS; i campi di stampa tipizzati e i dati opachi della stampante vengono convertiti indipendentemente, i limiti BIFF8 vengono verificati prima di scrivere lo stream di destinazione, i campi standard hanno priorità sui default privati duplicati, e il flagUsePrinterDefaultssolo-OOXML non viene sintetizzato nell'XLS Classic - Esportazione CSV:
Workbook.SaveAsCSV— 4 overload (FileName o Stream × active-sheet / esplicito SheetIndex + Delimiter), UTF-8 con BOM, citazioni in stile RFC 4180 - Esportazione HTML:
Workbook.SaveAsHTMLeTXLSXRange.SaveAsHTMLscrivono tabelle HTML5 per un intero foglio della cartella di lavoro o solo per il rettangolo selezionato. Gli overload delle opzioni accettanoTXLSXHtmlExportOptionsper l'output dell'intero documento, l'emissione dello stile, l'emissione di BOM e la denominazione della classe della tabella - Esportazione RTF:
Workbook.SaveAsRTF— 4 overload, tabella RTF 1.6 con larghezze di colonna, formattazione del carattere per cella e Unicode full-BMP tramite escape\uN?a 16 bit con segno
Infrastruttura condivisa
Entrambe le facciate condividono un insieme comune di unità helper di livello inferiore, il che significa che descrittori di stile, tabelle hash, alberi AVL, I/O ZIP e XML, conversioni da RGB a HLS e generatori di stringhe vengono scritti una sola volta e utilizzati da entrambi i percorsi Gli helper condivisi includono:
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— descrittori di stile modernilxRgb— conversione di colore RGB / HLSlxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— contenitori di deduplicazione e blocchi costitutivi dell'heap delle celle supportati da AVLlxXmlReader,lxXmlWriter,lxZipArchive— livello di trasporto OOXMLlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— helper per l'assemblaggio di flussi e stringhe