Общ преглед на XLSX Facade (lxHandleX)
lxHandleX е специализираният модул на фасада за работни процеси с работни книги на Excel 2007+ (.xlsx) и OpenDocument Spreadsheet (.ods). Той съществува съвместно с оригиналната фасада lxHandle, така че наследеният код да продължи да работи без никакви промени
lxHandle— основна фасада за формат Excel 97-2003 BIFF (.xls), експортиране в HTML, RTF, CSV и TSV. Целият съществуващ потребителски код продължава да използва този модул непромененlxHandleX— основна фасада за Excel 2007+ OOXML формат (.xlsx) и работни процеси за четене/запис на ODS. Предоставя собствени типове работни книги и работни листове, така че специфичното за XLSX поведение да не се адаптира към BIFF кодовия път, и предоставя ODS импортиране, експортиране, автоматично откриване на ODS чрезOpen,SourceFormatиTODSExportOptions
Йерархия на класовете
Фасадата XLSX излага следните класове
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)
Тези класове са независими от lxHandle.TXLSWorkBook и
lxHandle.TXLSWorksheet. Приложенията, които се нуждаят от двата формата, могат
да използват двете фасади една до друга
uses
lxHandle, // XLS / HTML / RTF / CSV workbook (TXLSWorkBook)
lxHandleX; // XLSX workbook (TXLSXWorkbook)
Бърз старт
Фасадата XLSX следва същите конвенции за форма на извикване като фасадата BIFF
— SaveAs / Open за работната книга,
Sheets.Add / Sheets[i] за колекцията от работни листове
и Cells.Item[Row, Col].Value за колекцията от клетки. Примерът по-долу записва малка работна книга, която упражнява всяка
поддържана в момента функция
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;
Поддържани функции
- Стойности на клетки: числа, булеви стойности, низове, дати, формули
- Таблица със споделени низове (
xl/sharedStrings.xml) с дедупликация по пътя на запис - Палитри от стилове на ниво работна книга —
Workbook.Fonts,Fills,BordersиNumberFormats— плюс за всяка клеткаFontIndex/FillIndex/BorderIndex/NumberFormatIndex. SaveAs предава реални<fonts>/<fills>/<borders>/<numFmts>+<cellXfs>блокове; Open ги анализира обратно, така че Name/Size/Bold/Italic/Color, шаблони за запълване, граници и персонализирани числови формати оцеляват след двупосочното пътуване - Ширини за колони чрез
Worksheet.ColWidth[Col]и височини за редове чрезWorksheet.RowHeight[Row](блок<cols>на работния лист и атрибутиhtза всеки<row>) - Вградена дата
cellXfна индексXlsxXfIndexDate; стойностите наTDateTimeсе маркират автоматично - Слети клетки (
<mergeCells>), включителноTXLSXRange.Merge(True)за сливане по редове в стил Excel - Диапазони на работния лист чрез
Worksheet.Range,RCRange,UsedRange,EntireRowиEntireColumn. Вижте TXLSXRange за пакетни стойности, формули,SetArrayFormula, индекси на стилове, числови формати, граници, флагове за защита, автоматично напасване, сливане, отместване, преоразмеряване,Sortсортиране по няколко ключа,ApplyBuiltinStyleвградени стилове на клетки, помощни инструменти за копиране/преместване, помощни инструменти за вмъкване/изтриване на цели редове/цели колони и експортиране на избрания диапазон в HTML - Хипервръзки (
<hyperlinks>), поддържани от rels за външни URL адреси за всеки работен лист - Коментари на клетки с VML чертеж (
xl/commentsN.xml+xl/drawings/vmlDrawingN.vml), така че балончетата да се изобразяват в Excel - Вградени изображения (PNG / JPEG / GIF / BMP) чрез
Worksheet.Images, записани вxl/media/imageN.<ext>плюс XML за чертежи и rels за всеки лист - Самостоятелни текстови кутии за чертане чрез
Worksheet.AddTextBox, записани като графични фигури в работния лист с текстови тела вместо коментари на клетки, с директно търсене на котви и помощници за изтриване на диапазони - Именувани диапазони на ниво работна книга чрез
Workbook.DefinedNames(с обхват на работната книга или с обхват на листа чрезSheetIndex) - Изчисляване на формули чрез
Workbook.CalculateиWorksheet.Calculate, споделящи XLS парсера за формули и оценителя за формули, започващи с равно, препратки към клетки и диапазони, реферирани клетки с формули, препратки между листове, диапазони с дефинирани имена и поддържани функции за текст, дата, работен ден, инженерни/базови преобразувания, побитови, статистически, агрегатни и математически функции; използвайтеWorkbook.OnUserFunctionилиWorkbook.OnUserFunctionExза разрешаване на персонализирани или неподдържани функции - Условно форматиране за всеки работен лист
(
Worksheet.ConditionalFormats) и проверка на данни (Worksheet.DataValidations), включително бързия клавиш за падащо менюAddListValidation(Range, Items) - Групи от структура за редове / колони (
RowOutlineLevel,ColOutlineLevel), скрито състояние (RowHidden,ColHidden) и състояние на свита група (RowCollapsed,ColCollapsed) - Замразени панели чрез
Worksheet.FreezePanes(Row, Col) - Настройки на страницата — шест свойства на маргините, размер на хартията, ориентация,
мащаб на страницата, вместване по ширина / вместване по височина, плюс
HeaderText/FooterText. Наименуваните константиxlsxPaper*катоxlsxPaperLetter,xlsxPaperA4,xlsxPaperA3иxlsxPaperLegalмогат да бъдат присвоени наPaperSize - Автоматичен филтър (
Worksheet.SetAutoFilter) - Таблици в стил Excel (TXLSXTable) с информация за стил и tableColumns
API за подколекции на фасадата
Класовете за колекция на фасадата управляват условни формати, проверки на данни, именувани диапазони, изображения и таблици. Ето основните членове на всяка колекция
- TXLSXConditionalFormats:
Излага правила за условно форматиране.
Свойства:
CountМетоди:AddAboveAverage,AddColorScale2,AddColorScale3,AddDataBar,AddExisting,AddExpression,AddIconSet,AddSimpleRule,AddTextRule,AddTop10,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDataValidations:
Излага проверки на данни.
Свойства:
CountМетоди:AddExisting,AddList,DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXDefinedNames:
Излага дефинирани имена (именувани диапазони).
Свойства:
CountМетоди:DeleteByName,FindByName,IndexOfName - TXLSXImages:
Излага вградени изображения.
Свойства:
CountМетоди:DeleteAt,DeleteInRange,FindAt,IndexOfCell - TXLSXTables:
Излага таблици на Excel.
Свойства:
CountМетоди:AddExisting,DeleteByName,FindByName,IndexOfName
Поддържани функции
- Свойства на документа (
Workbook.Title,Author,Subject,Keywords,Description,LastModifiedBy,Companyи др.), записани вdocProps/core.xml+docProps/app.xml - Защита с парола на работен лист / работна книга (наследен 16-битов хеш)
чрез
Worksheet.Protect/Workbook.ProtectWorkbook; съвместим с Excel запис със защита с парола по AES чрезSaveAsEncrypted, използвайки AES-NI ускорение, когато е налично, и преносим софтуерен резервен вариант в противен случай.OpenEncryptedвсе още повдига изключение за криптирани пакети, докато не бъде въведена поддръжка за декриптиране - Запазване на VBA проект чрез
Workbook.LoadVbaProjectFromFile/VbaProject; байтовете остават непроменени при двупосочното пътуване. ВалиднитеvbaProject.binданни могат да бъдат инспектирани и чрезWorkbook.ParsedVBAProject - Диаграми — колона / стълб / линия / кръгова / област / пръстеновидна чрез
TXLSXChart, закотвени
на работен лист (
Worksheet.AddChart) или на цяла страница в специален лист с диаграми чрезWorkbook.AddChartSheet(Name, Type, Title) - Клетки с форматиран текст чрез TXLSXRichText с форматиране на шрифта за всяко изпълнение; двупосочно пътуване през таблицата със споделени низове
- Вътрешни котви за хипервръзки чрез
Worksheet.AddHyperlinkToCell(Row, Col, "Sheet2!A1")(не е необходима rels връзка) - API за копиране / преместване / изчистване на диапазон от клетки в работния лист
(
CopyRange,CopyRangeTo,MoveRange,ClearRange) - Подравняване на клетки чрез
TXLSXAlignment +
AlignmentIndexза всяка клетка - Цвят на раздела на работния лист чрез
Worksheet.TabColor/TabColorIsAuto - Режим на изглед на работния лист чрез
Worksheet.View, включително нормален изглед, предварителен преглед на разделянето на страници и изглед на оформлението на страницата - Път за поточно предаване на SaveAs (
Workbook.StreamingWrite := True), който създава и записва всеки работен лист, без да държи останалите в паметта; XML акумулаторът за всеки ред използваTXLSWideStringBuilder, така че цикълът на клетките да остане линеен - Двупосочно отваряне
Openза всичко по-горе, с изключение на шифровани пакети XLSX и идентифициране на листа с диаграми, които се връщат към документираното частично поведение - Експортиране и импортиране на база потоци:
SaveAs(Stream),Open(Stream)за използване в паметта или в BLOB полета - Четене/запис на OpenDocument Spreadsheet:
Workbook.OpenODSи общотоWorkbook.Openмогат да зареждат.odsпакети, докатоWorkbook.SaveAsODSиSaveAs(..., xlsxOpenDocumentSpreadsheet)записват ODS изход директно. Форматът обхваща стойности, формули, стилове, форматиран текст, размери на редове/колони, сливания, хипервръзки, изображения, диаграми, именувани диапазони, автоматичен филтър, условни формати, проверки на данни, замразени панели, настройка на страницата, горни/долни колонтитули, диапазони за печат, разделяне на страници, структурирани групи, цвят на раздела и видимост на листа в поддържаните двупосочни пътувания - Опции за експортиране на ODS: предайте
TODSExportOptionsнаSaveAsODS, за да презапишете низа на генератора на документи или да потиснете частите от диаграми и изображения при създаване на по-лек пакет - Импортиране на текст с разделители:
Workbook.OpenCSV(FileName)иWorkbook.OpenCSV(Stream)импортират CSV или TSV данни с откриване на разделител, откриване на кодиране на BOM, цитиране в стил RFC 4180 и незадължително извличане на типа стойност.Open(FileName)автоматично пренасочва.csvи.tsvфайлове към импортора - Сканиране на метаданни на работна книга:
Workbook.GetSheetNames(FileName, List)иWorkbook.GetSheetNames(Stream, List)четат подредени имена на листове отxl/workbook.xmlбез зареждане на XML на работния лист - Защита на клетки:
TXLSXCell.LockedandFormulaHidden— контролират кои клетки могат да се редактират или чиито формули са видими, когато листът е защитен - Автоматично напасване на ширината на колона и височината на ред от съдържанието на клетката:
Worksheet.AutoFitColumn,AutoFitColumns,AutoFitRow,AutoFitRows - Вмъкване и изтриване на ред / колона с пълно каскадно разпространение:
InsertRows,DeleteRows,InsertCols,DeleteCols. Страничните ефекти се разпространяват през клетки, слети диапазони, хипервръзки, коментари, замразен панел, препратки към низове от диапазони, таблици, формули на клетки, формули за условно форматиране / проверка на данни, цели на вътрешни хипервръзки, препратки за настройка на печат, ръчни прекъсвания на страници, критерии за автоматично филтриране на колони, диапазони от серии от диаграми, дефинирани имена, котви за изображения и котви за диаграми - Разширени настройки на страницата:
PrintArea,PrintTitleRows,PrintTitleCols,PrintGridlines,PrintHeadings,BlackAndWhite,Draft,PrintNotes,PrintOverThenDown - Видимост на листа:
Worksheet.Visibility(xlsxSheetVisible/xlsxSheetHidden/xlsxSheetVeryHidden) иIsSelected - Ръчни прекъсвания на страници:
AddRowBreak,AddColBreak, търсене на индекс и помощни инструменти за премахване на диапазон - Критерии за автоматично филтриране на колони:
Worksheet.AddAutoFilterColumnс единични или AND/OR правила за филтриране с два критерия, плюсWorksheet.AutoFilterColumns.FindByColIdиDeleteByColIdза директно търсене и премахване на критерии (TXLSXAutoFilterColumn) - База от дати на работната книга:
Workbook.Date1904превключва между епохата на датите 1900 (по подразбиране за Windows) и 1904 (Mac) - Диагонални рамки:
TXLSXBorder.DiagonalUpиDiagonalDownактивират диагоналните линии; ръбътDiagonalноси стила и цвета - Разширени свойства на шрифта:
TXLSXFont.VertAlign(горен / долен индекс),OutlineFont,Shadow,Family,CharSet - Метаданни за именуван диапазон:
TXLSXDefinedName.HiddenиComment - Опции за изглед на листа:
Worksheet.Zoom,DisplayGridLines,DisplayZeros,DisplayRightToLeft,StandardWidth,StandardHeight - ООXML наследена палитра с индексирани цветове:
Workbook.IndexedColor[0..63]сResetIndexedColors - Външни връзки към работни книги:
Workbook.ExternalLinks/ TXLSXExternalLink — Целеви URL адрес + двупосочно пътуване на метаданни за SheetNames - Поддръжка на теми за цветове в
TXLSXFont,TXLSXFillиTXLSXBorderEdge: свойстваColorTheme/ColorIndex/TintAndShadeсвойства с подреждане по приоритет (тема > индексирана > RGB) - Експортиране в CSV:
Workbook.SaveAsCSV— 4 претоварвания (име на файл или поток × активен лист / явен SheetIndex + разделител), UTF-8 с BOM, цитиране в съответствие с RFC 4180 - Експортиране в HTML:
Workbook.SaveAsHTMLиTXLSXRange.SaveAsHTMLзаписват HTML5 таблици за цял работен лист или само за избрания правоъгълник. Претоварените опции приематTXLSXHtmlExportOptionsза извеждане на целия документ, извеждане на стил, извеждане на BOM и наименуване на класа на таблицата - Експортиране в RTF:
Workbook.SaveAsRTF— 4 претоварвания, RTF 1.6 таблица с ширини на колони, форматиране на шрифта за всяка клетка и пълна BMP уникод поддръжка чрез подписани 16-битови кодове за екраниране\uN?
Споделена инфраструктура
И двете фасади споделят общ набор от помощни модули на по-ниско ниво, което означава, че дескрипторите на стилове, хеш таблиците, AVL дърветата, ZIP и XML I/O, RGB-към-HLS преобразуванията и конструкторите на низове се записват веднъж и се използват от всеки кодов път. Споделените помощни инструменти включват:
lxStyleXf,lxStyleFont,lxStyleColor,lxStyleFill,lxStyleBorder— съвременни дескриптори на стиловеlxRgb— преобразуване на цвят RGB / HLSlxHashTable,lxKeyList,lxAvlTree,lxCols,lxRows— контейнери за дедупликация и градивни блокове за купчини от клетки, поддържани от AVLlxXmlReader,lxXmlWriter,lxZipArchive— транспортен слой на OOXMLlxStrBuilder,lxCacheStream,lxWStream,lxZlibStream— помощни инструменти за сглобяване на потоци и низове