Documentazione HotXLS

Panoramica

HotXLS Logo
Libreria HotXLS di lettura/scrittura Excel è un componente Excel di lettura/scrittura ad alte prestazioni per Delphi & C++Builder Consente di creare nuovi fogli di calcolo Excel e di leggere o modificare i workbook XLS e XLSX esistenti senza che sia necessario installare Microsoft Excel o Office sul computer
HotXLS è scritto interamente in Object Pascal. Legge e scrive i file Excel direttamente a livello binario e OOXML, quindi non c'è alcun overhead di automazione COM/OLE né dipendenza dalla licenza o dalla presenza di Office. HotXLS supporta Delphi e C++Builder da XE5 fino a 13 Florence
La formattazione del colore XLS classico rimane intenzionalmente basata sulla palette. Vedi modello colori XLS classico per la scelta ThemeColor / TintAndShade

Architettura a doppia facade

HotXLS espone due facade che convivono, così il codice XLS legacy e il nuovo codice XLSX possono stare fianco a fianco senza alcun refactoring:
lxHandle Facade principale per il formato BIFF8 Excel 97–2003 (.xls), oltre all'esportazione HTML, RTF, CSV e TSV. Tutto il codice utente esistente continua a usare questa unità senza modifiche. Punti di ingresso: TXLSWorkbook, TXLSWorksheet, IXLSWorkbook, IXLSRange
lxHandleX Facade principale per la lettura/scrittura del formato OOXML Excel 2007+ (.xlsx) e OpenDocument Spreadsheet (.ods). Fornisce i propri tipi di workbook e foglio di lavoro, così il comportamento specifico di XLSX non viene riportato indietro sul percorso del codice BIFF. Punti di ingresso: TXLSXWorkbook, TXLSXWorksheet, TXLSXCell
Entrambe le facade condividono lo stesso motore di formule, lo stesso livello di supporto Unicode e la stessa pipeline di esportazione Vedi panoramica della facade XLSX per la gerarchia completa delle classi esposte da lxHandleX

Avvio rapido

I seguenti frammenti mostrano il codice minimo per creare un workbook con un foglio di lavoro e scrivere un valore in una cella.

Classic XLS (lxHandle)

uses lxHandle;

var
  Book: IXLSWorkbook;
  ws:   TXLSWorksheet;
begin
  Book := TXLSWorkbook.Create;
  // Add a worksheet and give it a name
  ws := Book.Sheets.Add;
  ws.Name := 'Sheet1';

  // Write values to cells using A1 notation
  ws.Range['A1'].Value := 'Hello';
  ws.Range['B1'].Value := 42;
  ws.Range['C1'].Formula := '=B1*2';

  // Apply basic formatting
  ws.Range['A1'].Font.Bold := True;
  ws.Range['A1'].Interior.Color := clYellow;

  Book.SaveAs('output.xls');
end;

XLSX (lxHandleX)

uses lxHandleX;

var
  Book: TXLSXWorkbook;
  ws:   TXLSXWorksheet;
  cell: TXLSXCell;
begin
  Book := TXLSXWorkbook.Create;
  try
    ws := Book.Sheets.Add('Sheet1');

    // Write a string and a numeric value
    ws.Cells[1, 1].Value := 'Product';
    ws.Cells[1, 2].Value := 'Price';
    ws.Cells[2, 1].Value := 'Widget';
    ws.Cells[2, 2].Value := 9.99;

    // Apply a currency number format
    cell := ws.Cells[2, 2];
    cell.NumberFormat := '$#,##0.00';

    Book.SaveAs('output.xlsx');
  finally
    Book.Free;
  end;
end;
Per una panoramica più ampia che copre entrambe le facade in un unico progetto demo, consulta la demo API Tour

Funzionalità

Supporto I/O file e stream

Leggi file Excel esistenti, scrivi file Excel nuovi o esistenti, gestisci la protezione con password XLS classica e i flussi di lavoro di salvataggio crittografato XLSX e elenca rapidamente i nomi dei fogli da file XLS e XLSX o da stream senza caricare l'intero workbook. L'apertura di un CSV come workbook è supportata tramite IXLSWorkbook.OpenCSV

Valori delle celle e formule

Leggi e scrivi i valori delle celle di tutti i tipi nativi di Excel: numero, stringa, data/ora, booleano e formula Il motore di calcolo integrato valuta le formule sia nei workbook XLS classici che in quelli XLSX e supporta:
  • Funzioni di testo (LEFT, MID, TRIM, SUBSTITUTE, …)
  • Funzioni di data e giorni lavorativi (DATE, NETWORKDAYS, WORKDAY, …)
  • Funzioni di ingegneria e conversione di base (BIN2DEC, HEX2DEC, …)
  • Funzioni bitwise (BITAND, BITOR, BITXOR, …)
  • Funzioni statistiche e di aggregazione (AVERAGE, SUMIF, COUNTIFS, …)
  • Funzioni matematiche (ROUND, MOD, POWER, …)
Una callback OnUserFunction consente di gestire a runtime le funzioni di foglio personalizzate o non supportate. Vedi callback OnUserFunction per la firma e gli esempi
Formula evaluation example

Formattazione delle celle

Accesso completo agli attributi dell'aspetto delle celle:
  • Caratteri — nome, dimensione, colore (RGB o colore del tema + tinta), grassetto, corsivo, sottolineato, barrato, apice, pedice, ombra e contorno
  • Allineamento — allineamento orizzontale e verticale, orientamento del testo (angolo), livello di rientro, testo a capo, adattamento automatico e ordine di lettura (RTL/LTR)
  • Bordi — tutti e quattro i lati e le diagonali, stile della linea, spessore e colore RGB / tema
  • Interno (riempimento) — riempimento pieno, riempimenti a motivo, colori di primo piano e di sfondo inclusi i colori del tema con TintAndShade
  • Formati numerici — stringhe di formato integrate e personalizzate per data, ora, valuta, percentuale e notazione scientifica
  • Commenti / annotazioni — aggiungi, leggi e stilizza i commenti delle celle

Operazioni sugli intervalli

IXLSRange (facade classica) e TXLSXRange (facade XLSX) forniscono un ricco insieme di operazioni sugli intervalli:
  • Unisci e separa le celle; accedi all'area unita di qualsiasi cella
  • Copia, sposta, inserisci ed elimina gli intervalli, con controllo della direzione di spostamento
  • Raggruppa e separa righe o colonne per le viste con struttura/compattazione
  • Adatta automaticamente l'altezza delle righe e la larghezza delle colonne al contenuto delle celle
  • Applica stili di cella denominati integrati (ApplyBuiltinStyle)
  • Selezioni multi-area (TXLSWorksheet.SelectAreas)
  • Callback di iterazione ForEachCell per l'elaborazione batch delle celle

Funzionalità del foglio di lavoro

Il controllo a livello di foglio di lavoro copre:
  • Nome del foglio, colore della scheda, visibilità (nascosto / molto nascosto) e navigazione basata sull'indice
  • Protezione del foglio con granularità per autorizzazione; protezione a livello di workbook
  • Riquadri bloccati, riquadri suddivisi e posizione di scorrimento
  • Intervalli AutoFilter con criteri; elenca le regole di convalida dei dati
  • Formattazione condizionale: scale di colore (2 e 3 colori), barre dei dati e set di icone
  • Trova testo e sostituisci testo in un foglio di lavoro
  • Opzioni di visualizzazione: colore delle linee della griglia, modalità di visualizzazione delle formule, visualizzazione degli zeri, visualizzazione delle intestazioni, visualizzazione da destra a sinistra, visualizzazione dei simboli della struttura e livello di zoom
  • Tabelle strutturate (TXLSTable / TXLSXTable): aggiungi, accedi e stilizza le tabelle Excel con righe di intestazione e righe a bande
  • Grafici: aggiungi fogli grafico e grafici incorporati tramite TXLSWorksheetsAddChartSheet e TXLSXChart

Collegamenti ipertestuali e intervalli denominati

Aggiungi e leggi collegamenti ipertestuali (URL, mailto e riferimenti di cella all'interno del workbook) tramite IXLSHyperLinks. Definisci e risolvi intervalli denominati a livello di workbook e di foglio di lavoro tramite IXLSNames / TXLSXDefinedNames. Gli intervalli denominati possono essere usati nelle formule e risolti nuovamente in un intervallo di celle tramite RefersToRange

Immagini e forme

Incorpora immagini raster (BMP, JPG, PNG, GIF) nei fogli di lavoro tramite TXLSShapes.AddPicture / TXLSXWorksheet.AddImage. Crea caselle di testo autonome nel XLS classico tramite TXLSShapes.AddTextBox. Preserva le regole di connettore OfficeArt create da Excel e le regole di risoluzione nei disegni BIFF8 ed espone le opzioni FOPT grezze delle forme tramite TXLSShape.OfficeArtOptions per flussi di lavoro di disegno avanzati

Impostazione di pagina e stampa

Accesso completo al layout di stampa tramite IXLSPageSetup:
  • Dimensioni della carta (A4, Letter, Legal e molte altre; vedi PaperSize)
  • Orientamento (verticale / orizzontale), margini, centratura orizzontale / verticale
  • Stringhe di intestazione e piè di pagina con i codici di formattazione di Excel (grassetto, corsivo, numero di pagina, data, ecc.; vedi codici di formattazione intestazione/piè di pagina)
  • Interruzioni di pagina orizzontali e verticali manuali
  • Scalatura adatta alle pagine; percentuale di zoom; area di stampa; titoli di stampa (ripeti righe / colonne)
  • Qualità bozza; bianco e nero; stampa linee della griglia; stampa intestazioni; stampa note

Formati di esportazione

Esporta interi workbook, singoli fogli di lavoro o intervalli di celle arbitrari in:
  • HTML — documento completo o frammento di tabella inline per l'anteprima o i flussi di lavoro via email; controllabile tramite TXLSHTMLExport e TXLSXHtmlExportOptions
  • RTF — rich text per l'importazione nei word processor
  • CSV — valori separati da virgola con delimitatore e codifica configurabili
  • TSV — valori separati da tabulazione
  • ODS — OpenDocument Spreadsheet tramite la facade lxHandleX

Esportazione di database e griglie

Esporta qualsiasi dataset compatibile con TDataSet o una TDBGrid direttamente in Excel, HTML o RTF usando i TDataToXLS o TGridToXLS componenti. Entrambi i componenti generano gli eventi AfterCell, AfterRow, AfterTitle e AfterGroup per un controllo granulare dell'output e supportano i campi di raggruppamento multilivello

Conservazione dei progetti VBA

HotXLS preserva i payload dei progetti VBA quando gestisce in round-trip workbook abilitati alle macro. L'ispezione di sola lettura dei moduli è disponibile tramite TXLSVBAProject e TXLSVBAModule. Chiama IXLSWorkbook.HasVBAProject per rilevare un payload e LoadVBAProjectFromFile / SaveVBAProjectToFile per trasferirlo tra i file

Unicode e testo internazionale

Tutta la gestione delle stringhe è nativa Unicode. HotXLS legge e scrive file Excel creati in qualsiasi lingua, incluse CJK, arabo, ebraico, tailandese e altre scritture, con supporto corretto del testo bidirezionale e dell'ordine di lettura
Unicode character support example

Tabelle pivot (XLS classico)

Crea tabelle pivot da un intervallo di origine con TXLSWorksheet.AddPivotTable, configura il posizionamento dei campi e i formati numerici dei campi dati e ispeziona il modello pivot tramite TXLSWorksheet.PivotTables. Vedi API delle tabelle pivot XLS classiche per i dettagli su campi e filtri

Vantaggi

No Office dependency Legge e scrive i file XLS e XLSX direttamente a livello binario. Microsoft Excel o Office non deve essere installato, concesso in licenza o in esecuzione. Questo elimina l'overhead dell'automazione COM/OLE, evita le restrizioni di threading imposte dall'interoperabilità di Office e consente di usare HotXLS in contesti lato server e di servizio dove un'installazione desktop di Office è impraticabile
High performance I parser BIFF8 e OOXML sono scritti in Object Pascal nativo senza allocazione intermedia del DOM XML nel percorso critico. I workbook di grandi dimensioni con centinaia di migliaia di righe possono essere letti e scritti con un picco di memoria ridotto. La deduplicazione delle stringhe condivise e la compressione delle formule condivise vengono applicate automaticamente per mantenere piccole le dimensioni dei file
OLE migration path La superficie API della facade classica (workbook, foglio di lavoro, intervallo, carattere, bordi, interno, impostazione di pagina) rispecchia fedelmente il modello a oggetti di Excel noto dall'automazione OLE. Questo rende semplice la migrazione dei progetti esistenti basati su OLE: sostituisci le chiamate COM con le chiamate HotXLS, rimuovi la dipendenza da Office e ottieni prestazioni native
Dual-facade design Il codice XLS legacy continua a compilare ed eseguire senza modifiche contro lxHandle, mentre il nuovo codice XLSX usa la facade più ricca lxHandleX. Migrare un formato di file alla volta è sicuro e incrementale
Formula engine included Un motore di calcolo multi-passaggi integrato gestisce le funzioni di foglio più comuni senza richiedere a Excel di ricalcolare all'apertura. Le funzioni personalizzate vengono gestite tramite la callback OnUserFunction
Easy to use I componenti Delphi rapidi da integrare (TDataToXLS, TGridToXLS) non richiedono codice per le attività di esportazione comuni. L'API fluente degli intervalli supporta la notazione A1, la notazione R1C1 e l'indicizzazione a base zero di righe/colonne
Thread-safe file I/O Poiché non esiste un processo Office condiviso, più istanze TXLSXWorkbook possono essere create e salvate in contemporanea su thread indipendenti senza sincronizzazione, rendendo HotXLS adatto ai server multi-thread di generazione di report

Compatibilità

HotXLS è compatibile con le seguenti versioni di RAD Studio:
Delphi XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence
C++Builder XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo, 10.3 Rio, 10.4 Sydney, 11 Alexandria, 12 Athens, 13 Florence
Target platforms Windows 32-bit e 64-bit
Excel file formats XLS (BIFF8, Excel 97–2003), XLSX (OOXML, Excel 2007+), ODS (OpenDocument 1.2)
Export-only formats HTML, RTF, CSV, TSV

Vedi anche