Документация HotXLS

Нативный вывод сводных таблиц, запросы перекрёстной фильтрации и отсутствующие элементы

Нативный кэшированный вывод на лист

function TXLSXWorkbook.MaterializeNativePivotTable(
  ATable: TXLSPivotTable): Integer;
function TXLSXWorkbook.MaterializeNativePivotTable(
  ATable: TXLSPivotTable; AAdoptExisting: Boolean): Integer;

Операция ставит в промежуточное состояние полную нативную сетку отчёта — компактную, табличную или структурную — вместе с её расположением, rowItems, colItems и метаданными оси данных до фиксации значений листа и владения выводом; метод возвращает 1 при успехе или -1 с диагностикой при неподдерживаемом состоянии или коллизии

Поддерживаемые непустые локальные представления сохраняют текущие фильтры, точные идентичности элементов кэша, обычные иерархии, поддерживаемые группированные домены, промежуточные итоги по умолчанию или пользовательские и любую поддерживаемую ось данных; нативная сетка использует исходные значения агрегатов, а не перекомбинирует отображаемые средние или другие неаддитивные результаты

Существующие объекты ячеек и форматирование остаются доступны, а сжатие или перемещение отчёта очищает только неизменённые ранее собственные значения; отредактированный вывод, пересечение с источником, объединения, формулы, массивы и другие отчёты отклоняются до изменения

Импортированный скалярный вывод требует явного принятия с AAdoptExisting=True; последующие обновления используют персистентное владение отдельными ячейками, в том числе после сохранения и повторного открытия

Операция читает текущие записи кэша и не обновляет исходные данные и не пересчитывает формулы; Cache.RefreshOnLoad=False валиден, потому что лист теперь содержит фактические поставленные в промежуточное состояние нативные результаты

Callback'и фильтров записей вызывающего участвуют в отсоединённом предварительном просмотре, но не имеют представления в OOXML; явное нативное обновление Excel не может воспроизвести произвольные ограничения callback'ов, а поддерживаемые персистентные ручные фильтры и фильтры срезов сохраняют своё представление в файле

Поддерживаемые вычисляемые поля кэша SUM и вычисляемые элементы во владении кэша используют контракт контекстных сумм, описанный в нативных вычисляемых полях сводных таблиц и элементах во владении кэша; пользовательские подписи элементов и неподдерживаемые комбинации раскладки отклоняются явно, а поддерживаемая сгенерированная сырая раскладка сохраняет несвязанный XML и текущие маски элементов

TryXLSXMakeNativePivotLayout(const Xml: WideString; Table: TXLSPivotTable; AWriter: TlxPivotResultWriter; out ResultXml, Reason: WideString): Boolean — низкоуровневый хелпер поставленной в промежуточное состояние раскладки в lxPivotXml

Его писатель получает весь прямоугольник отчёта в порядке строк, включая пустые ячейки, со смещениями от нуля относительно якоря таблицы; preflight XML и сетки завершается до первого callback'а, но записи вызывающего нельзя откатить, если callback выбросит исключение

Фасад книги поставляет отсоединённого писателя-захватчика для транзакционных обновлений ячеек; объединённые поставленные в промежуточное состояние предварительный просмотр и нативные Variant-сетки ограничены 4194304 ячейками

Путь нативного предварительного просмотра может запросить нативную ориентацию общих итогов через необязательный параметр AUseNativeGrandTotals метода TXLSPivotTable.MakePreview; прежние вызовы с одним писателем и писателем раскладки сохраняют прежнее поведение

Раскладка и повторяющиеся подписи

Установите Compact и Outline на отчёте и каждом поле строки до материализации; табличные поля используют оба флага как False, структурные поля — Compact=False и Outline=True, а компактные — оба флага как True

property TXLSPivotField.RepeatLabels: Boolean;

RepeatLabels по умолчанию False, копируется независимо вместе с полем и читает или пишет нативное расширение x14:pivotField fillDownLabels; он повторяет подписи предков в табличном и структурном выводе и не влияет на поле, у которого включены оба флага — compact и outline

Каждое отдельное поле строки получает собственный физический столбец, а соседние компактные структурные поля разделяют столбец подписей; несколько мер в строках следуют CompactData, а несколько мер в столбцах сохраняют независимые подписи данных и общие итоги

Промежуточные итоги табличного вида по умолчанию появляются под своей группой; структурный SubtotalTop выбирает расположение сверху или снизу, а меры в строках используют отдельные строки агрегатов под группой и сохраняют подпись каждой меры

Нативный кэшированный вывод оставляет отсутствующие пересечения строк и столбцов пустыми и сохраняет настоящий числовой ноль; обычный Make и предварительные просмотры без нативной опции сохраняют прежнее поведение для пустых результатов

Неактивные поля и поля мер наследуют раскладку отчёта в поставленных в промежуточное состояние нативных метаданных, чтобы явное обновление Excel сохраняло подходящие подписи полей и данных; операция сохраняет живые настройки полей и существующие проверки владения

Импортированные расширения повторяющихся подписей принимают псевдонимы пространств имён, включая объявления на самом элементе расширения; неизвестный несвязанный XML остаётся нетронутым на пути нативной материализации

Группированные элементы, порядок осей и пользовательские промежуточные итоги

Нативный вывод поддерживает полные числовые группы диапазонов, группы дат и ручные группы элементов, представленные существующими типизированными метаданными группировки кэша; сгенерированные подписи сохраняют точные импортированные GroupItemLabels, включая Unicode и локализованные датные подписи

Группировка вычисляется на отсоединённом кэше, сохраняя записи живого кэша, дескрипторы общих элементов и идентичности групп; неверные границы, нулевые интервалы, неполные домены или неподдерживаемые типы значений элементов групп отклоняются до изменения вывода листа

Существующая позиция TXLSPivotField.Position с отсчётом от нуля определяет стабильный порядок нативных осей строк или столбцов; равные позиции сохраняют авторский порядок полей, поэтому заново созданные поля с позицией по умолчанию сохраняют прежний порядок

Импортированные нативные иерархии Year/Month и родители/ручные элементы сохраняют свою явную последовательность осей, тогда как индексы полей кэша, индексы полей представления и базовые идентичности вычисления отображения остаются без изменений; ручные группы следуют явному порядку элементов сводной таблицы, а не сортировке подписей групп или индексов кэша

Пользовательские промежуточные итоги строк поддерживают xlpsSum, xlpsCount, xlpsAverage, xlpsMax, xlpsMin, xlpsProduct, xlpsCountNumbers, xlpsStdDev, xlpsStdDevP, xlpsVar и xlpsVarP, включая несколько выбранных функций, табличные или структурные поля и меры в строках

Каждая функция агрегирует исходные записи на собственной области промежуточного итога; её поставленные в промежуточное состояние метаданные строки независимо идентифицируют выбранную функцию, сохраняя поведение явного обновления Excel для неаддитивных вычислений и пустых или ошибочных результатов

Импортированный выбор пользовательского промежуточного итога исключает неявный автоматический итог, даже когда defaultSubtotal отсутствует в нативном XML; приложения не должны сочетать xlpsDefault с пользовательскими функциями, и такой неоднозначный типизированный запрос отклоняется до изменения

Несколько уровней полей столбцов с промежуточными итогами, неподдерживаемые компактные комбинации оси данных, свёрнутые элементы и пользовательские подписи остаются вне этого контракта нативного вывода; вычисляемые поля и элементы имеют собственные более узкие требования к SUM и идентичности элементов, а сохранение сырых данных не означает поддержку пересчёта или материализации возможности

Сохранение, повторное открытие и повторная материализация сохраняют поддерживаемые группировки, порядок осей и идентичности промежуточных итогов; импортированные нативные представления и независимо скопированные типизированные кэши также сверены с Excel и при первом открытии, и при явном обновлении

Нативные вычисления отображения

Установите ShowDataAs или ExtendedShowDataAs каждого обычного поля данных перед вызовом MaterializeNativePivotTable; базовые и расширенные режимы отображения взаимоисключающие

Базовые режимы включают разность, процент от базового элемента, разность в процентах, нарастающий итог, процент от строки, столбца или общего итога и индекс; расширенные режимы включают проценты от родительской строки, родительского столбца и выбранного родителя, накопленный процент и плотные ранги по возрастанию или убыванию

BaseField — это индекс поля сводной таблицы с отсчётом от нуля для сравнений, нарастающих итогов, процентов от выбранного родителя и рангов; сравнения используют позицию BaseItem с отсчётом от нуля или xlPivotBaseItemPrevious и xlPivotBaseItemNext для соседних видимых элементов в действующем порядке отображения

Проценты от родительской строки и родительского столбца выбирают соответствующее самое внутреннее поле оси без использования BaseField; отсутствующее соответствующее поле оси оставляет эти результаты пустыми

Простые проценты делят на исходный агрегат на соответствующей области, включая неаддитивные средние; накопленные проценты суммируют отображаемые агрегаты элементов и используют исходный итог оси для самого внутреннего базового поля, а внешнее базовое поле использует сумму по совпадающим оставшимся элементам, поэтому средние могут превышать 100 процентов

Нативные ранги считают различные предшествующие значения агрегатов, а сравнения сохраняют поведение Excel для пустых значений и ошибок при отсутствующих пересечениях, отсутствующих базах, нулевых делителях и границах «предыдущий» и «следующий»; простые проценты трактуют отсутствующий числитель как ноль

Общие итоги используют нативную семантику выбранного режима, включая пустые итоги вдоль оси сравнения или нарастающего итога; смена режима отображения сохраняет транзакционные проверки владения, коллизий и бюджета отчёта

Сохранение и повторное открытие сохраняют выбранный базовый или расширенный режим и базовые идентичности, а поставленные в промежуточное состояние нативные метаданные поддерживают явное обновление Excel; обычный Make и предварительные просмотры без нативной опции сохраняют свой прежний вычислительный контракт

Доступность перекрёстной фильтрации срезов

property TXLSXSlicerCache.ItemHasData[Index: Integer]: Boolean;

Этот read-only запрос вычисляет текущие поддерживаемые не-OLAP записи кэша, игнорируя собственную выборку этого среза и сохраняя выборки других срезов, ручные фильтры, предикаты вызывающего и применимые агрегатные фильтры

Доступность — это объединение по подключённым представлениям; исторические элементы без совпавших записей не имеют данных, пустые меры не имеют данных, а непустой текст, Boolean, ноль, ошибки и даты считаются данными по проверенному нативному контракту

Запрос использует аренду на чтение и отсоединённый предварительный просмотр записей, сохраняет живые дескрипторы и выборку и соблюдает FormulaArrayMemoryLimit; сбой callback'а, повторный вход, неверные привязки или неподдерживаемые агрегатные вычисляемые элементы вызывают исключение без фиксации живых изменений

Запрос доступности не обновляет кэши, не пересчитывает формулы, не выполняет файловый ввод-вывод и не обновляет сериализованные нативные флаги отсутствия данных; приложениям не следует выводить состояние нативного UI из этой read-only операции

TlxPivotRecordWriter = procedure(ATable: TXLSPivotTable;
  ARecordIndex: Integer) of object;
function TXLSPivotTable.MakeRecordPreview(AWriter: TlxPivotRecordWriter;
  AFilterOwner: TObject = nil; AFilter: TlxPivotRecordFilter = nil): Integer;

Расширенный callback записей получает отсоединённый предварительный просмотр и индекс записи с отсчётом от нуля после поддерживаемой простой и агрегатной фильтрации; EvaluationSourceTable сохраняет исходную идентичность представления, а возвращаемое значение — количество выданных записей

Замещающий фильтр подменяет только зарегистрированный callback указанного владельца; другие владельцы и внешний предикат остаются активными, а замещающий callback не-nil требует владельца не-nil

Явная очистка исторических элементов

Removed := Workbook.PurgePivotCacheMissingItems(
  Pivot.CacheId, 0);
if Removed < 0 then
  raise Exception.Create('The cache member purge was rejected');

TXLSXWorkbook.PurgePivotCacheMissingItems(ACacheId: Integer; ARetainMissingItemsPerField: Integer = 0): Integer удаляет неиспользуемые элементы после полной проверки и перемаппинга поддерживаемых связных представлений и срезов

Метод возвращает общее количество удалённых общих элементов по всем полям, ноль для успешного отсутствия работы или -1 с диагностикой 1402; текущие записи сохраняют каждый упомянутый элемент плюс не более запрошенного числа неиспользуемых элементов на поле, выбираемых по наибольшему исходному индексу общего элемента

Удерживаемые элементы сохраняют исходный относительный порядок и дескрипторы объектов, а логические индексы становятся компактными; связные дескрипторы полей и элементов, ручные флаги скрытия и детализации, активные элементы страниц или сравнения и выборки срезов сохраняют свои идентичности

Флаги и границы домена пересчитываются по удерживаемому домену; поддерживаемые импортированные сжатые позиции строк, столбцов и страниц перемаппятся явно, а фиктивные ссылки общих итогов и порядковые номера псевдополя данных остаются без изменений

Поддерживаются обычные полные локальные кэши листов; группированные, вычисляемые кэши, кэши свойств элементов, OLAP, внешние, неполные или неоднозначные кэши и неподдерживаемые непрозрачные метаданные идентичности отклоняются до изменения

Удаление активного элемента страницы или сравнения, целого выбранного подмножества среза или ранее непустого действующего пересечения отклоняется атомарно; примитивные атрибуты элементов, которые были бы потеряны при типизированной пересборке, тоже отклоняются

Известное расширение владения материализацией остаётся без изменений, поскольку его координаты и типизированные токены значений не содержат индексов элементов кэша; несвязанные непрозрачные расширения не считаются безопасными по умолчанию

Очистка не обновляет исходные данные, не переписывает ячейки отчёта листа, не вызывает callback'и записей и не применяет метаданные MissingItemsLimit автоматически; обновление остаётся дополнением, пока эта операция не запрошена явно

Расширенная координация очистки

TXLSPivotCache._PrepareMissingItemPurge возвращает непрозрачный TXLSPivotCachePurgePlan; приложениям обычно следует использовать фасад книги, чтобы были включены все связные представления и срезы

MapItem и RemainingItemCount осматривают перемаппинг кэша, StagePivotField регистрирует связное поле и возвращает его индекс этапа, а MapViewItemPosition осматривает отображение позиции этого поля в файле; удалённые элементы отображаются в -1, а RemovedCount сообщает общее число удалений

Validate проверяет исходную схему, записи, идентичности владения полями и элементами и поставленные выборки представлений; Commit проверяет снова и передаёт подготовленное владение без выделения памяти и callback'ов после первого живого обмена

План владеет отсоединёнными снимками, держит свой изменяемый промежуточный кэш приватным и никогда не владеет исходными кэшами и представлениями; держите эти исходники живыми, пока Destroy плана не освободит промежуточные данные, и фиксируйте каждый план только один раз

Отклонённая постановка поля в этап откатывает этот этап, поэтому план можно переиспользовать; неподдерживаемые изменения после подготовки отклоняются до фиксации