Documentație HotXLS

Clasa TXLSXWorkbook

Container de nivel superior pentru un registru de lucru Excel 2007+ (.xlsx). Declarat în lxHandleX. Conține o colecție TXLSXSheets și oferă metode SaveAs și Open

Declarație

type
  TXLSXFileFormat = (xlsxOpenXMLWorkbook, xlsxOpenDocumentSpreadsheet);

  TODSExportOptions = class
    constructor Create;
    property Generator: WideString;
    property IncludeCharts: Boolean;
    property IncludeImages: Boolean;
  end;

  TXLSXWorkbook = class
    constructor Create;
    destructor Destroy; override;
    function SaveAs(const FileName: WideString): Integer; overload;
    function SaveAs(const FileName: WideString; FileFormat: TXLSXFileFormat): Integer; overload;
    function SaveAs(Stream: TStream): Integer; overload;
    function SaveAs(Stream: TStream; FileFormat: TXLSXFileFormat): Integer; overload;
    function Open(const FileName: WideString): Integer; overload;
    function Open(const FileName: WideString; const Password: WideString): Integer; overload;
    function Open(Stream: TStream): Integer; overload;
    function OpenCSV(const FileName: WideString): Integer; overload;
    function OpenCSV(const FileName: WideString; ASeparator: WideChar;
      ADetectTypes: Boolean): Integer; overload;
    function OpenCSV(Stream: TStream): Integer; overload;
    function OpenCSV(Stream: TStream; ASeparator: WideChar;
      ADetectTypes: Boolean): Integer; overload;
    function OpenODS(const FileName: WideString): Integer; overload;
    function OpenODS(Stream: TStream): Integer; overload;
    function SaveAsODS(const FileName: WideString): Integer; overload;
    function SaveAsODS(Stream: TStream): Integer; overload;
    function SaveAsODS(const FileName: WideString; Options: TODSExportOptions): Integer; overload;
    function SaveAsODS(Stream: TStream; Options: TODSExportOptions): Integer; overload;
    function GetODSSheetNames(const FileName: WideString; AList: TStrings): Integer; overload;
    function GetODSSheetNames(Stream: TStream; AList: TStrings): Integer; overload;
    function GetSheetNames(const FileName: WideString; AList: TStrings): Integer; overload;
    function GetSheetNames(Stream: TStream; AList: TStrings): Integer; overload;
    function SaveAsCSV(const FileName: WideString): Integer; overload;
    function SaveAsCSV(const FileName: WideString; SheetIndex: Integer; Delimiter: WideChar): Integer; overload;
    function SaveAsCSV(Stream: TStream): Integer; overload;
    function SaveAsCSV(Stream: TStream; SheetIndex: Integer; Delimiter: WideChar): Integer; overload;
    function SaveAsHTML(const FileName: WideString): Integer; overload;
    function SaveAsHTML(const FileName: WideString; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsHTML(const FileName: WideString; SheetIndex: Integer): Integer; overload;
    function SaveAsHTML(const FileName: WideString; SheetIndex: Integer; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsHTML(Stream: TStream): Integer; overload;
    function SaveAsHTML(Stream: TStream; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsHTML(Stream: TStream; SheetIndex: Integer): Integer; overload;
    function SaveAsHTML(Stream: TStream; SheetIndex: Integer; Options: TXLSXHtmlExportOptions): Integer; overload;
    function SaveAsRTF(const FileName: WideString): Integer; overload;
    function SaveAsRTF(const FileName: WideString; SheetIndex: Integer): Integer; overload;
    function SaveAsRTF(Stream: TStream): Integer; overload;
    function SaveAsRTF(Stream: TStream; SheetIndex: Integer): Integer; overload;
    // AES encryption (ECMA-376 Standard Encryption) write path.
    // OpenEncrypted still raises for encrypted packages.
    function SaveAsEncrypted(const FileName, APassword: WideString): Integer;
    function OpenEncrypted(const FileName, APassword: WideString): Integer;
    function CanReadEncrypted(const FileName: WideString): Boolean;
    function Calculate(const Formula: WideString): Variant;
    property OnUserFunction: TXLSUserFunctionEvent;
    property OnUserFunctionEx: TXLSUserFunctionExEvent;
    // Document properties (docProps/core.xml + docProps/app.xml).
    property Title, Author, Subject, Keywords, Description,
             Category, LastModifiedBy, Company,
             Application, AppVersion: WideString;
    property Created, Modified: TDateTime;
    // Workbook protection (16-bit legacy hash).
    procedure ProtectWorkbook; overload;
    procedure ProtectWorkbook(const APassword: WideString); overload;
    procedure ProtectWorkbook(const APassword: WideString; ALockStructure, ALockWindows: Boolean); overload;
    procedure UnProtectWorkbook;
    property IsWorkbookProtected: Boolean;
    property LockStructure, LockWindows: Boolean;
    // VBA project payload (round-trips byte-for-byte). Workbook is saved
    // with macro-enabled content type when HasVbaProject is True.
    procedure LoadVbaProjectFromFile(const AFileName: WideString);
    procedure ClearVbaProject;
    function HasVbaProject: Boolean;
    property VbaProjectDefined: Boolean;
    property VbaProject: AnsiString;
    property ParsedVBAProject: TXLSVBAProject;
    // Chart sheet helper — creates a sheet flagged IsChartSheet and
    // seeds Charts[0] with a default full-page anchor.
    function AddChartSheet(const AName: WideString;
      AChartType: TXLSXChartType; const ATitle: WideString): TXLSXWorksheet;
    // Streaming SaveAs path (TXLSWideStringBuilder + one sheet at a time).
    property StreamingWrite: Boolean;
    // Workbook-level collections.
    property ActiveSheet: Integer;
    property Minimized: Boolean;
    property WindowHidden: Boolean;
    property ShowHorizontalScroll: Boolean;
    property ShowVerticalScroll: Boolean;
    property ShowSheetTabs: Boolean;
    property XWindow: Integer;
    property YWindow: Integer;
    property WindowWidth: Integer;
    property WindowHeight: Integer;
    property TabRatio: Integer;
    property FirstSheet: Integer;
    property AutoFilterDateGrouping: Boolean;
    property Date1904: Boolean;
    property SourceFormat: TXLSXFileFormat;
    property IndexedColor[Index: Integer]: LongWord;
    function  HasCustomIndexedColor(Index: Integer): Boolean;
    function  CustomIndexedColorCount: Integer;
    procedure ResetIndexedColors;
    property Sheets: TXLSXSheets;
    property Fonts: TXLSXFonts;
    property Fills: TXLSXFills;
    property Borders: TXLSXBorders;
    property NumberFormats: TXLSXNumberFormats;
    property Alignments: TXLSXAlignments;
    property DefinedNames: TXLSXDefinedNames;
    property ExternalLinks: TXLSXExternalLinks;
  end;
      

Membri

Sheets foaie de lucru colecție. See TXLSXSheets
Fonts Paletă de fonturi la nivel de registru de lucru. Celulele aleg un font prin setarea TXLSXCell.FontIndex la un indice bazat pe 1 în această colecție. Vezi TXLSXFont / TXLSXFonts
Fills Paletă de umpleri la nivel de registru de lucru. Celulele aleg o umplere prin setarea TXLSXCell.FillIndex la un indice bazat pe 1 în această colecție. Vezi TXLSXFill / TXLSXFills
Borders Paletă de chenare la nivel de registru de lucru. Celulele aleg un chenar prin setarea TXLSXCell.BorderIndex la un indice bazat pe 1 în această colecție. Vezi TXLSXBorder / TXLSXBorders
NumberFormats Paletă personalizată de formate numerice la nivel de registru de lucru. Celulele aleg un format prin setarea TXLSXCell.NumberFormatIndex la un indice bazat pe 1 în această colecție. Vezi TXLSXNumberFormat / TXLSXNumberFormats
DefinedNames Intervale numite la nivel de registru de lucru (la nivelul registrului de lucru sau al foii). Vezi TXLSXDefinedName / TXLSXDefinedNames
Calculate Compilează și evaluează un șir de formulă Excel în foaia activă, iar un = inițial este acceptat. Referințele la celule, intervalele, formulele stocate în celule referite, referințele între foi, intervalele numite și funcțiile acceptate de text, dată, zi lucrătoare, inginerie/conversie de bază, pe biți, statistice, agregate și matematice sunt evaluate de motorul comun de formule HotXLS. Vezi OnUserFunction pentru funcții personalizate sau neacceptate
OnUserFunction, OnUserFunctionEx Callback folosit de Calculate când o formulă apelează o funcție personalizată sau neacceptată. Vezi callback-ul OnUserFunction / OnUserFunctionEx
GetSheetNames(FileName, AList), GetSheetNames(Stream, AList) Citește xl/workbook.xml și adaugă numele foilor de calcul în AList în ordinea registrului de lucru, fără a încărca XML-ul foii. Suprasarcina de flux așteaptă un flux complet de pachet XLSX. Returnează numărul de nume citite sau -1 când pachetul nu poate fi deschis
Alignments Paletă de aliniere a celulelor la nivel de registru de lucru. Celulele aleg o intrare prin setarea TXLSXCell.AlignmentIndex la un indice bazat pe 1 în această colecție. Vezi TXLSXAlignment
Document properties Titlu, autor, subiect, cuvinte-cheie, descriere, categorie, LastModifiedBy, companie, Application, AppVersion, Created, Modified. Setarea oricăreia dintre ele completează docProps/core.xml + docProps/app.xml la SaveAs; altfel registrul de lucru păstrează setul minim de părți
ProtectWorkbook / UnProtectWorkbook Comutator de protecție al registrului de lucru cu un hash de parolă vechi opțional pe 16 biți și steagurile LockStructure / LockWindows. Reflectat ca <workbookProtection> în xl/workbook.xml
LoadVbaProjectFromFile / VbaProject / HasVbaProject / VbaProjectDefined LoadVbaProjectFromFile importă un payload brut vbaProject.bin; VbaProject expune octeții; HasVbaProject și proprietatea numai-citire VbaProjectDefined indică dacă există un payload. Salvați cu extensia .xlsm când macrocomenzile trebuie activate de Excel
ParsedVBAProject Vizualizare parsată, numai-citire, a payloadului curent vbaProject.bin. Când payloadul este un storage OLE VBA valid, returnează un TXLSVBAProject care expune numele modulelor și textul sursă; altfel returnează nil. Payloadul brut VbaProject rămâne octeții autoritativi folosiți la round-trip SaveAs/Open
AddChartSheet(Name, Type, Title) Creează o foaie marcată IsChartSheet = True și inițializează Charts[0] cu o ancoră implicită sensată pe pagină întreagă. SaveAs scrie aceste foi în xl/chartsheets/sheetN.xml. Vezi TXLSXChart
StreamingWrite Când True, SaveAs folosește WriteWorksheetXmlStreaming pentru fiecare foaie - nu se păstrează niciun cache sheetXmls, iar sharedStrings.xml este emis la final după ce fiecare foaie a populat SST. Împreună cu TXLSWideStringBuilder pe rând, aceasta menține memoria liniară pe foi mari. Valoarea implicită este False (comportamentul existent)
SaveAsEncrypted / OpenEncrypted / CanReadEncrypted Suport de scriere pentru ECMA-376 Standard Encryption. SaveAsEncrypted scrie un container OLE Compound File protejat AES-128, conform standardului, pentru parole necompletate, folosind accelerație AES-NI când este disponibilă și un fallback software portabil altfel. Ieșirea criptată se deschide în Excel 2007 și ulterior cu parola folosită la salvare. CanReadEncrypted detectează octeții magici OLE2; OpenEncrypted revine transparent la Open simplu pentru fișiere necriptate și tot ridică EXlsxEncryptionNotImplemented pentru pachete criptate până când suportul de decriptare este disponibil
SaveAs(FileName) Scrie registrul de lucru în fișierul dat. Returnează 1 la succes, negativ la eșec. Dacă registrul de lucru nu are foi, o Sheet1 implicită este adăugată înainte de scriere
SaveAs(FileName, FileFormat) Acceptă xlsxOpenXMLWorkbook pentru ieșire OOXML sau xlsxOpenDocumentSpreadsheet pentru un pachet OpenDocument Spreadsheet (.ods) direct. SaveAsODS este scurtătura numită pentru calea ODS și oferă aceeași ieșire plus control opțional TODSExportOptions
SaveAs(Stream) / SaveAs(Stream, FileFormat) Scrie registrul de lucru direct în orice TStream. Suprasarcina FileFormat acceptă xlsxOpenXMLWorkbook sau xlsxOpenDocumentSpreadsheet, fiind potrivită pentru generare XLSX sau ODS în memorie și pentru căi de stocare BLOB. Returnează 1 la succes
Open(FileName) Citește o arhivă OOXML .xlsx și înlocuiește colecția Sheets cu conținutul ei. Returnează 1 la succes
Open(FileName, Password) Rezervat pentru suportul viitor pentru XLSX criptat. Astăzi se comportă ca Open(FileName) - parola este ignorată
Open(Stream) Citește o arhivă OOXML .xlsx dintr-un TStream. Returnează 1 la succes
OpenCSV(FileName) / OpenCSV(Stream) Importă text CSV sau TSV în registrul de lucru cu detectarea automată a separatorului (,, ;, tab sau pipe), detectarea codificării UTF-8 / UTF-16 bazată pe BOM, câmpuri între ghilimele în stil RFC 4180 și inferență opțională a tipului de valoare prin suprasarcinile ADetectTypes. Apelarea Open(FileName) pe .csv sau .tsv trimite automat aici. Vezi metoda OpenCSV
OpenODS(FileName) / OpenODS(Stream) Importă un pachet OpenDocument Spreadsheet (.ods) dintr-un fișier sau flux. Cititorul încarcă content.xml, informațiile de stil partajat din styles.xml și setările de vizualizare când sunt prezente, păstrând numele foilor, valorile scalare, rezultatele formulelor din cache, conversia de bază a referințelor de formulă, rândurile/coloanele/celulele repetate, intervalele îmbinate, rich text, hyperlinkurile, comentariile, imaginile încorporate, graficele încorporate, rândurile/coloanele/foile ascunse, înălțimile rândurilor, lățimile coloanelor, stilurile moștenite/implicite, formatele numerice/de dată/oră/monedă/științific/fracție, starea de protecție a celulelor și foilor, intervalele numite, ariile de imprimare, pauzele manuale de pagină, panourile înghețate, intervalele AutoFilter, grupurile de structură pe rânduri/coloane, anteturile/subsolurile, validările de date inclusiv prompturile, formatele condiționale inclusiv formulele/scările de culoare/barele de date și culoarea filei foii. Semantica completă OpenFormula, cheile de protecție ODS, geometria comentariilor, formatarea avansată a comentariilor și funcțiile din afara conținutului foii nu sunt convertite
SaveAsODS(FileName) / SaveAsODS(Stream) Salvează registrul de lucru ca un pachet OpenDocument Spreadsheet valid. Scrie direct mimetype-ul ODF, manifestul, metadatele, stilurile și conținutul foii, păstrând valorile tipizate, formulele, stilurile, rich text, dimensiunile, îmbinările, hyperlinkurile, imaginile, graficele, intervalele numite, intervalele AutoFilter, formatele condiționale, validările de date, panourile înghețate, configurarea paginii, anteturile/subsolurile, intervalele de imprimare, pauzele manuale de pagină, grupurile de structură, culoarea filei și vizibilitatea foii atunci când aceste funcții sunt reprezentate în modelul de registru de lucru HotXLS
TODSExportOptions Controlează exportul ODS. Generator înlocuiește valoarea meta:generator din meta.xml; o valoare goală folosește șirul de generator intern HotXLS. IncludeCharts și IncludeImages au implicit True și, când sunt False, elimină împreună cadrele de desen, părțile pachetului și intrările de manifest corespunzătoare, astfel încât ieșirea să nu aibă referințe orfane la grafice sau imagini. Instanța de opțiuni aparține apelantului și trebuie eliberată
GetODSSheetNames(FileName, AList), GetODSSheetNames(Stream, AList) Citește numai numele tabelelor ODS din content.xml în AList fără a reseta sau popula registrul de lucru. Folosiți asta când un selector de fișier sau un flux de import are nevoie de numele foilor înainte de încărcarea registrului de lucru
SaveAsCSV overloads Patru suprasarcini (FileName sau Stream × foaie activă implicită / SheetIndex explicit + Delimiter). Scrie foaia aleasă ca CSV UTF-8 cu BOM. Valorile de dată sunt randate ca yyyy-mm-dd hh:nn:ss; celulele cu formulă sunt calculate înainte de export, iar textul formulei este folosit doar când calculul nu este disponibil. Returnează 0 la succes
SaveAsHTML overloads Suprasarcinile cu opțiuni acceptă TXLSXHtmlExportOptions pentru Title, WriteDocument, IncludeStyles, IncludeBOM și TableClass. Setați WriteDocument la False pentru un fragment de tabel; setați IncludeBOM la False când încorporați ieșirea într-un răspuns UTF-8 existent. Ieșirea exportată păstrează hyperlinkurile celulelor ca ancore <a> și imaginile ancorate ca URI-uri de imagine data: inline; exportul la nivel de registru de lucru include ancore din afara celulelor populate. Comentariile de celulă sunt emise și ca atribute title escapate în <td>, iar exportul la nivel de registru de lucru include ancore doar-comentariu. Când IncludeStyles este activat, valorile explicite ColWidth sunt emise ca lățimi <col> și valorile explicite RowHeight ca stiluri de înălțime <tr>. Segmentele rich text din celule sunt emise ca elemente <span> escapate, cu stiluri inline pentru font, culoare, accent și subliniere, când IncludeStyles este activat. Bordurile celulelor sunt emise ca reguli CSS border-left, border-right, border-top și border-bottom când IncludeStyles este activat. Rândurile și coloanele ascunse marcate de RowHidden / ColHidden, plus coloanele cu lățime zero explicită, sunt omise din tabelul generat și din <colgroup>. Setările de aliniere verticală sunt emise ca reguli CSS vertical-align când IncludeStyles este activat
SaveAsRTF overloads Patru suprasarcini (FileName sau Stream × foaie activă implicită / SheetIndex explicit). Scrie foaia aleasă ca document RTF 1.6 cu un tabel simplu. Lățimile coloanelor sunt derivate din datele ColWidth (1 unitate de caracter ≈ 96 twips; implicit 809 twips). Se aplică bold / italic / mărimea fontului per celulă; caracterele non-ASCII sunt codificate ca escape-uri Unicode RTF \uN? pe 16 biți cu semn. Celulele îmbinate nu sunt întinse. Returnează 0 la succes
ActiveSheet Indice bazat pe 1 al foii active (selectate) (0 când nu există niciuna), corespunzător ActiveSheetIndex din motorul clasic XLS. SaveAs scrie activeTab="N" pe <workbookView> (atributul OOXML activeTab rămâne bazat pe 0) când trebuie emise opțiunile de vizualizare ale registrului de lucru și marchează foaia corespunzătoare cu tabSelected="1"
Minimized / WindowHidden / ShowHorizontalScroll / ShowVerticalScroll Steaguri ale cromaticii ferestrei registrului de lucru scrise în <workbookView>. Minimized scrie minimized="1", WindowHidden scrie visibility="hidden", iar ShowHorizontalScroll / ShowVerticalScroll ascund sau arată barele de derulare ale registrului de lucru. Open face round-trip pentru toate cele patru valori
XWindow / YWindow / WindowWidth / WindowHeight Geometria ferestrei registrului de lucru scrisă în <workbookView>. XWindow și YWindow stochează originea ferestrei, iar WindowWidth și WindowHeight stochează dimensiunea ei. Valorile sunt limitate la 0..65535 și fac round-trip la încărcare
ShowSheetTabs / TabRatio / FirstSheet / AutoFilterDateGrouping Opțiuni de vizualizare ale ferestrei registrului de lucru scrise în <workbookView>. ShowSheetTabs ascunde sau arată bara filelor foilor, TabRatio controlează împărțirea lățimii dintre bara filelor și bara de derulare și este limitat la 0..1000, FirstSheet selectează prima filă vizibilă ca index de foaie bazat pe 0 și este limitat la o foaie existentă, iar AutoFilterDateGrouping controlează gruparea datelor Excel în listele derulante AutoFilter. Open face round-trip pentru toate cele patru valori
Date1904 Baza de date a registrului de lucru. False (implicit) = epoca Windows 1900; True = epoca Mac 1904 (mută fiecare serial de dată cu 1462 de zile). Setați asta înainte de a atribui valori de celulă TDateTime, astfel încât Excel să afișeze aceeași dată din calendar
SourceFormat Raportează familia de pachete încărcată de cel mai recent apel reușit Open sau OpenODS. Returnează xlsxOpenXMLWorkbook pentru XLSX și xlsxOpenDocumentSpreadsheet pentru ODS; un registru de lucru creat nou raportează xlsxOpenXMLWorkbook până când se deschide un fișier
IndexedColor[Index] Valoare ARGB pentru slotul dat din paleta OOXML de culori indexate (0..63). Citirea returnează suprascrierea utilizatorului, dacă există; altfel returnează valoarea OOXML implicită (XlsxDefaultIndexedPalette). Scrierea suprascrie slotul N; apoi SaveAs emite un bloc complet <indexedColors> cu toate cele 64 de sloturi
HasCustomIndexedColor / CustomIndexedColorCount / ResetIndexedColors HasCustomIndexedColor(N) returnează True când slotul N a fost suprascris explicit. CustomIndexedColorCount returnează numărul de sloturi suprascrise (0 = niciun bloc <colors> emis de SaveAs). ResetIndexedColors aruncă toate suprascrierile și restabilește paleta implicită
ExternalLinks Colecție de referințe externe de registru de lucru. Fiecare intrare TXLSXExternalLink conține un URL țintă și o listă SheetNames. SaveAs emite blocul <externalReferences> în xl/workbook.xml și părțile corespunzătoare xl/externalLinks/. Open face round-trip pentru Target și SheetNames; valorile de celulă în cache din <sheetDataSet> nu sunt păstrate

Exemplu

Scrierea și redeschiderea unui registru de lucru:
uses lxHandleX;

var
  wb: TXLSXWorkbook;
begin
  wb := TXLSXWorkbook.Create;
  try
    wb.Sheets.Add('Demo').Cells.Item[1, 1].Value := 'Hello';
    wb.SaveAs('demo.xlsx');

    wb.Open('demo.xlsx');
    ShowMessage(wb.Sheets[0].Cells.Item[1, 1].Value);
  finally
    wb.Free;
  end;
end;
    

Vezi și