Нативный вывод сводных таблиц, запросы перекрёстной фильтрации и отсутствующие элементы
Нативный кэшированный вывод на лист
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 плана не освободит промежуточные данные, и фиксируйте каждый план только один раз
Отклонённая постановка поля в этап откатывает этот этап, поэтому план можно переиспользовать; неподдерживаемые изменения после подготовки отклоняются до фиксации