XLSX Facade Overview (lxHandleX)
lxHandleX adalah unit fasad khusus untuk alur kerja buku kerja Excel 2007+ (.xlsx) dan OpenDocument Spreadsheet (.ods). Ini berdampingan dengan fasad lxHandle asli sehingga kode warisan tetap berfungsi tanpa perubahan apa pun
lxHandle— primary facade for the Excel 97-2003 BIFF format (.xls), HTML, RTF, CSV, and TSV exports. All existing user code continues to use this unit unchangedlxHandleX— primary facade for the Excel 2007+ OOXML format (.xlsx) and ODS read/write workflows. Provides its own workbook and worksheet types so XLSX-specific behavior is not retrofitted onto the BIFF code path, and exposes ODS import, export, automatic ODS detection throughOpen,SourceFormat, andTODSExportOptions
Hierarki kelas
Fasad XLSX mengekspos kelas-kelas berikut:
type
TXLSXBuku Kerja = 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
TXLSXHyperlink = class // hyperlink collection
TXLSXKomentar = class // cell-comment collection
TXLSXGambar = 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)
Kelas-kelas ini independen dari lxHandle.TXLSWorkBook dan
lxHandle.TXLSWorksheet. Aplikasi yang membutuhkan kedua format dapat
menggunakan kedua fasad secara berdampingan:
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXBuku Kerja)
Mulai cepat
The XLSX facade follows the same call-shape conventions as the BIFF
facade — SaveAs / Open on the workbook,
Sheets.Add / Sheets[i] on the worksheet
collection, and Cells.Item[Row, Col].Value on the cell
collection. The example below writes a small workbook that exercises every
currently-supported feature:
uses lxHandleX;
var
wb: TXLSXBuku Kerja;
ws: TXLSXWorksheet;
bold, yellow, box, currency: Integer;
begin
wb := TXLSXBuku Kerja.Buat;
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;
Fitur yang didukung
- Nilai sel: angka, boolean, string, tanggal, rumus
- Tabel string bersama (
xl/sharedStrings.xml) dengan deduplikasi pada jalur penulisan - Buku Kerja-level style palettes —
Buku Kerja.Fonts,Fills,Borders, andNumberFormats— plus per-cellFontIndex/FillIndex/BorderIndex/NumberFormatIndex. SaveAs emits real<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>blocks; Open parses them back so Name/Size/Bold/Italic/Color, fill patterns, border edges, and custom number formats all survive the round-trip - Per-column widths via
Worksheet.ColWidth[Col]and per-row heights viaWorksheet.RowHeight[Row](worksheet<cols>block and per-<row>htattributes) - Gaya tanggal bawaan
cellXfpada indeksXlsxXfIndexDate; nilaiTDateTimeditandai secara otomatis - Merged cells (
<mergeCells>), includingTXLSXRange.Merge(True)for Excel-style merge across rows - Rentang lembar kerja via
Worksheet.Range,RCRange,UsedRange,EntireRow, danEntireColumn. Lihat TXLSXRange untuk nilai batch, rumus,SetArrayFormula, indeks gaya, format angka, batas, bendera perlindungan, kecocokan otomatis, penggabungan, offset, pengubahan ukuran, pengurutan multi-kunciSort, gaya sel bawaanApplyBuiltinStyle, pembantu salin/pindah, pembantu penyisipan/penghapusan seluruh baris/seluruh kolom, dan ekspor HTML rentang terpilih - Hyperlink (
<hyperlinks>) yang didukung oleh rels per lembar kerja untuk URL eksternal - Komentar sel dengan gambar VML (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml) sehingga balon dirender di Excel - Embedded images (PNG / JPEG / GIF / BMP) via
Worksheet.Gambar, written toxl/media/imageN.<ext>plus per-sheet drawing XML and rels - Kotak teks gambar mandiri via
Worksheet.AddTextBox, ditulis sebagai bentuk gambar lembar kerja dengan badan teks alih-alih komentar sel, dengan pencarian jangkar langsung dan pembantu penghapusan rentang - Rentang bernama tingkat buku kerja via
Buku Kerja.DefinedNames(berlingkup buku kerja atau berlingkup lembar melaluiSheetIndex) - Perhitungan rumus via
Buku Kerja.HitungdanWorksheet.Hitung, berbagi pengurai dan evaluator rumus XLS untuk rumus bertanda sama dengan di depan, referensi sel dan rentang, sel rumus yang direferensikan, referensi lintas lembar, rentang nama yang ditentukan, dan fungsi teks, tanggal, hari kerja, rekayasa/konversi basis, bitwise, statistik, agregat, dan matematika yang didukung; gunakanBuku Kerja.OnUserFunctionatauBuku Kerja.OnUserFunctionExuntuk menyelesaikan fungsi kustom atau tidak didukung - Pemformatan bersyarat per lembar kerja
(
Worksheet.ConditionalFormats) dan validasi data (Worksheet.DataValidations) termasuk pintasan dropdownAddListValidation(Range, Items) - Grup kerangka baris / kolom (
RowOutlineLevel,ColOutlineLevel), status tersembunyi (RowHidden,ColHidden), dan status grup diciutkan (RowCollapsed,ColCollapsed) - Panel beku via
Worksheet.FreezePanes(Row, Col) - Page setup — six margin properties, paper size, orientation,
page scale, fit-to-width / fit-to-height, plus
HeaderText/FooterText. NamedxlsxPaper*constants such asxlsxPaperLetter,xlsxPaperA4,xlsxPaperA3, andxlsxPaperLegalcan be assigned toPaperSize - Autofilter (
Worksheet.SetAutoFilter) - Tabel gaya Excel (TXLSXTable) dengan info gaya dan tableColumns
API sub-koleksi fasad
Kelas koleksi fasad mengelola format bersyarat, validasi data, rentang bernama, gambar, dan tabel. Berikut adalah anggota inti dari setiap koleksi:
- TXLSXConditionalFormats:
Mengekspos aturan pemformatan bersyarat.
Properti:
CountMetode:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations:
Mengekspos validasi data.
Properti:
CountMetode:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames:
Mengekspos nama yang ditentukan (rentang bernama).
Properti:
CountMetode:DeleteByName,FindByName,IndexOfName - TXLSXGambar:
Mengekspos gambar tersemat.
Properti:
CountMetode:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables:
Mengekspos tabel Excel.
Properti:
CountMetode:AddExisting,DeleteByName,FindByName,IndexOfName
Fitur yang didukung
- Properti dokumen (
Buku Kerja.Title,Author,Subject,Keywords,Description,LastModifiedBy,Company, dll.) ditulis kedocProps/core.xml+docProps/app.xml - Perlindungan kata sandi lembar kerja / buku kerja (hash 16-bit lama)
melalui
Worksheet.Protect/Buku Kerja.ProtectBuku Kerja; penyimpanan dilindungi kata sandi AES yang kompatibel dengan Excel melaluiSaveAsEncrypted, menggunakan akselerasi AES-NI jika tersedia dan fallback perangkat lunak portabel jika tidak.OpenEncryptedtetap memicu pengecualian untuk paket terenkripsi sampai dukungan dekripsi tersedia - Pelestarian proyek VBA via
Buku Kerja.LoadVbaProjectFromFile/VbaProject; byte pulang-pergi tidak berubah. PayloadvbaProject.binyang valid juga dapat diperiksa melaluiBuku Kerja.ParsedVBAProject - Charts — column / bar / line / pie / area / doughnut via
TXLSXChart, anchored
on a worksheet (
Worksheet.AddChart) or full-page on a dedicated chart sheet viaBuku Kerja.AddChartSheet(Name, Type, Title) - Sel rich-text via TXLSXRichText dengan pemformatan font per-run; pulang-pergi melalui tabel string bersama
- Jangkar hyperlink internal via
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(tidak memerlukan hubungan rels) - API salin / pindah / bersihkan rentang sel pada lembar kerja
(
CopyRange,CopyRangeTo,MoveRange,BersihkanRange) - Penyelarasan sel via
TXLSXAlignment +
AlignmentIndexper sel - Warna tab lembar kerja via
Worksheet.TabColor/TabColorIsAuto - Mode tampilan lembar kerja via
Worksheet.Lihat, termasuk tampilan normal, pratinjau pemisah halaman, dan tampilan tata letak halaman - Jalur SaveAs streaming (
Buku Kerja.StreamingWrite := True) yang membangun dan menulis setiap lembar kerja tanpa menahan yang lain di memori; akumulator XML per baris menggunakanTXLSWideStringBuildersehingga loop sel tetap linier - Pulang-pergi
Openuntuk semua hal di atas kecuali paket XLSX terenkripsi dan identifikasi lembar bagan, yang kembali ke perilaku parsial yang didokumentasikan - Ekspor dan impor berbasis stream:
SaveAs(Stream),Open(Stream)untuk penggunaan dalam memori atau bidang BLOB - Baca/tulis OpenDocument Spreadsheet:
Buku Kerja.OpenODSdanBuku Kerja.Opengenerik dapat memuat paket.ods, sedangkanBuku Kerja.SaveAsODSdanSaveAs(..., xlsxOpenDocumentSpreadsheet)menulis keluaran ODS secara langsung. Cakupan format meliputi nilai, rumus, gaya, rich-text, dimensi baris/kolom, penggabungan, hyperlink, gambar, bagan, rentang bernama, AutoFilter, format bersyarat, validasi data, panel beku, pengaturan halaman, header/footer, rentang cetak, pemisah halaman, grup kerangka, warna tab, dan visibilitas lembar di seluruh putaran balik yang didukung - Opsi ekspor ODS: berikan
TODSExportOptionskeSaveAsODSuntuk mengabaikan string generator dokumen atau menekan bagian bagan dan gambar saat menghasilkan paket yang lebih ringan - Impor teks terdelimitasi:
Buku Kerja.OpenCSV(FileName)danBuku Kerja.OpenCSV(Stream)mengimpor data CSV atau TSV dengan pendeteksian pemisah, deteksi pengodean BOM, pengutipan gaya RFC 4180, dan inferensi tipe nilai opsional.Open(FileName)mengarahkan file.csvdan.tsvke pengimpor secara otomatis - Pemindaian metadata buku kerja:
Buku Kerja.GetSheetNames(FileName, List)danBuku Kerja.GetSheetNames(Stream, List)membaca nama lembar terurut darixl/workbook.xmltanpa memuat XML lembar kerja - Perlindungan sel:
TXLSXCell.LockeddanFormulaHidden— mengontrol sel mana yang dapat diedit atau yang rumusnya terlihat saat lembar dilindungi - Lebar kolom dan tinggi baris yang pas otomatis dari konten sel:
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - Penyisipan dan penghapusan baris / kolom dengan cascade penuh:
InsertRows,DeleteRows,InsertCols,DeleteCols. Efek samping menyebar melalui sel, rentang terpenggabung, hyperlink, komentar, panel beku, referensi string rentang, tabel, rumus sel, rumus format bersyarat / validasi data, target hyperlink internal, referensi pengaturan cetak, pemisah halaman manual, kriteria kolom autofilter, rentang seri bagan, nama yang ditentukan, jangkar gambar, dan jangkar bagan - Pengaturan halaman tambahan:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintCatatan,PrintOverThenDown - Visibilitas lembar:
Worksheet.Visibilitas(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) danIsSelected - Pemisah halaman manual: pembantu
AddRowBreak,AddColBreak, pencarian indeks, dan penghapusan rentang - Kriteria kolom autofilter:
Worksheet.AddAutoFilterColumndengan aturan filter kriteria tunggal atau AND/OR dua kriteria, ditambahWorksheet.AutoFilterColumns.FindByColIddanDeleteByColIduntuk pencarian langsung kriteria dan penghapusan (TXLSXAutoFilterColumn) - Basis tanggal buku kerja:
Buku Kerja.Date1904beralih antara epos tanggal 1900 (default Windows) dan 1904 (Mac) - Batas diagonal:
TXLSXBorder.DiagonalUpdanDiagonalDownmengaktifkan garis diagonal; tepiDiagonalmembawa gaya dan warna - Properti font tambahan:
TXLSXFont.VertAlign(superscript / subscript),OutlineFont,Shadow,Family,CharSet - Metadata rentang bernama:
TXLSXDefinedName.HiddendanComment - Opsi tampilan lembar:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - Palet warna terindeks warisan OOXML:
Buku Kerja.IndexedColor[0..63]denganResetIndexedColors - Tautan buku kerja eksternal:
Buku Kerja.ExternalLinks/ TXLSXExternalLink — URL target + metadata SheetNames pulang-pergi - Theme color support on
TXLSXFont,TXLSXFill, andTXLSXBorderEdge:ColorTheme/ColorIndex/TintAndShadeproperties with priority ordering (theme > indexed > RGB) - CSV export:
Buku Kerja.SaveAsCSV— 4 overloads (FileName or Stream × active-sheet / explicit SheetIndex + Delimiter), UTF-8 with BOM, RFC 4180 quoting - Ekspor HTML:
Buku Kerja.SaveAsHTMLdanTXLSXRange.SaveAsHTMLmenulis tabel HTML5 untuk seluruh lembar buku kerja atau hanya persegi panjang yang dipilih. Overload opsi menerimaTXLSXHtmlExportOptionsuntuk keluaran dokumen penuh, emisi gaya, emisi BOM, dan penamaan kelas tabel - Ekspor RTF:
Buku Kerja.SaveAsRTF— 4 overload, tabel RTF 1.6 dengan lebar kolom, pemformatan font per sel, dan unicode BMP penuh via escape\uN?16-bit bertanda
Infrastruktur bersama
Kedua fasad berbagi sekumpulan unit pembantu tingkat rendah yang sama, yang berarti deskriptor gaya, tabel hash, pohon AVL, ZIP dan XML I/O, konversi RGB-ke-HLS dan pembangun string ditulis sekali dan digunakan oleh salah satu jalur Pembantu yang dibagikan meliputi:
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— modern style descriptorslxRgb— RGB / HLS color conversionlxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— deduplicating containers and AVL-backed cell heap building blockslxXmlReader,lxXmlWriter,lxZipArchive— OOXML transport layerlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— stream and string assembly helpers