Жизненный цикл локального кэша сводных таблиц и нативная раскладка
Версия 2.384.94 добавляет представления с общим кэшем, создание и явное удаление локальных не-OLAP срезов сводных таблиц, реконструкцию группированных кэшей и ограниченный генератор метаданных нативной раскладки
Общие представления и создание срезов
SecondPivot := Sheet.AddPivotTable(FirstPivot.Cache, 20, 1, 'SecondView');
Cache := Workbook.CreatePivotSlicerCache(FirstPivot, 'Category');
if Cache.ConnectPivotTable(SecondPivot) <> 1 then
raise Exception.Create('The second view could not be connected');
Slicer := Sheet.Slicers.Add(Cache, 1, 6, 8, 8);
TXLSXWorksheet.AddPivotTable(ACache: TXLSPivotCache; DestRow, DestCol: Integer; const Name: WideString): TXLSPivotTable создаёт ещё одно представление кэша, принадлежащего этой книге; он проверяет владение, геометрию и имена до подключения представления
TXLSXWorkbook.CreatePivotSlicerCache(ATable: TXLSPivotTable; const AFieldName: WideString): TXLSXSlicerCache создаёт или безопасно переиспользует кэш поддерживаемого исходного поля, а TXLSXSlicerCache.ConnectPivotTable(ATable: TXLSPivotTable): Integer подключает существующее локальное представление с общим кэшем
TXLSXSlicers.Add(ACache: TXLSXSlicerCache; ARow1, ACol1, ARow2, ACol2: Integer): TXLSXSlicer создаёт UI листа по явным включающим границам ячеек с отсчётом от 1; исходные имена, части кэша, ссылки на рисунки и членство представления ставятся в промежуточное состояние до изменения
Группированные, вычисляемые и OLAP источники срезов, чужие кэши, несогласованные импортированные домены и неоднозначные независимые маски одного поля отклоняются; поддерживаемый импортированный XML представления сохраняет несвязанные расширения при добавлении нового UI
Явное удаление и будущие элементы
if Workbook.RemoveSlicerCache(Cache, xlsxSlicerPreserveCurrentSelection) <> 1 then
raise Exception.Create('The Slicer cache could not be removed');
TXLSXSlicerRemovalMode содержит xlsxSlicerClearSelection и xlsxSlicerPreserveCurrentSelection; TXLSXWorkbook.RemoveSlicerCache(ACache: TXLSXSlicerCache; AMode: TXLSXSlicerRemovalMode): Integer удаляет привязанный UI, ссылки на рисунки, нативные части кэша и подключения вместе
Режим очистки снимает ограничение этого среза, сохраняя независимые фильтры и предикаты вызывающего; режим сохранения переносит текущее ограничение в обычные маски элементов сводной таблицы перед удалением среза
Операция возвращает 1 при успехе и -1 для неподдерживаемых или небезопасных привязок; все затронутые представления и состояние кэша проверяются и ставятся в промежуточное состояние до фиксации, а неоднозначное владение одним полем отклоняется без догадок
TXLSPivotField.IncludeNewItemsInFilter: Boolean по умолчанию False; удерживаемое ручное подмножество исключает заново дописанные элементы, если эта политика не включена явно, тогда как неограниченное поле включает их
Поэтому сохранённая выборка остаётся стабильной после роста источника, а режим очистки включает новые исходные элементы; импортированные и авторские списки элементов сериализуют одну и ту же политику скрытия будущих элементов
Существующие операции Delete и Clear коллекций по-прежнему охраняют последнее привязанное представление среза; используйте явную операцию книги, когда кэш и его подключённые ограничения должны быть удалены вместе
Реконструкция фиксированных группированных кэшей
Обновление ставит в промежуточное состояние идентичности числовых, датных и явных дискретных групп из проверенных связей база/родитель, включая импортированные производные поля, у которых отсутствуют столбцы записей; исходные поля только со связью сохраняют исходные значения вместо собственной группировки
Поддерживаемые домены сохраняют существующие дескрипторы элементов, подписи и порядковые номера групп; числовая и датная группировка использует одно разрешение на поле и фиксированный нативный домен элементов групп, а датной группировке нужен интервал 1
TXLSPivotCacheField.GroupAutoStart и TXLSPivotCacheField.GroupAutoEnd по умолчанию True и сохраняют импортированную политику границ; новые значения, требующие расширения домена или перегруппировки, отклоняются до изменения
Дискретные группы требуют существующего сопоставления для каждого исходного элемента; циклические родители, неверные типизированные домены, неуникальные строковые подписи, вычисляемые базы, поля свойств элементов и неподдерживаемые разрешения родителей отклоняются транзакционно
Обычный Make реконструирует поддерживаемые устаревшие или отсутствующие производные значения записей, а MakePreview делает это только на отсоединённой копии; сохранение опускает внутренние заглушки общих элементов из производных нативных доменов и выдаёт ровно объявленные индексы элементов групп
Предварительный просмотр метаданных нативной раскладки
function TryXLSXGeneratePivotLayout(const Xml: WideString; Table: TXLSPivotTable; out ResultXml, Reason: WideString): Boolean;
Хелпер lxPivotXml ставит в промежуточное состояние rowItems, colItems, метаданные осей и расположение для поддерживаемых непустых локальных компактных представлений, используя точные идентичности полей и элементов кэша; он поддерживает обычные иерархии, промежуточные итоги по умолчанию сверху или снизу и любую ось данных
Эта операция только с метаданными требует явного Cache.RefreshOnLoad=True; она сохраняет неизвестный XML и возвращает исходный XML с пояснением на английском, когда группированные или вычисляемые поля, пользовательские промежуточные итоги, неподдерживаемая раскладка или несогласованные импортированные идентичности не могут быть представлены
Хелпер не переписывает ячейки листа и не меняет живые флаги таблицы; вызывающим, которым нужен кэшированный вывод на лист, следует предоставить подходящего писателя и отдельно поддерживаемую операцию материализации
TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter; ALayoutWriter: TlxPivotLayoutWriter): Integer поставляет синхронные callback'и раскладки из отсоединённого предварительного просмотра, сохраняя исходную идентичность EvaluationSourceTable
TlxPivotLayoutWriter получает исходную таблицу, оси строк и столбцов, скопированные векторы индексов полей и элементов кэша, TlxPivotLayoutItemKind, вид промежуточного итога и длину префикса; xlplikData, xlplikSubtotal и xlplikGrand различают идентичности агрегатов без разбора подписей
Векторы используют TlxPivotLayoutIndices и валидны в течение callback'а; исключения пробрасываются, а прежние варианты Make и MakePreview с одним писателем остаются доступны
TXLSPivotTables._AddOwned(ATable: TXLSPivotTable) резервирует ёмкость коллекции до передачи владения и поддерживает внутреннее транзакционное подключение представлений; приложениям обычно следует использовать методы авторинга листа
Границы
Версия 2.384.95 добавляет нативный кэшированный вывод на лист, read-only доступность перекрёстной фильтрации и явную очистку исторических элементов; сериализованный нативный показ отсутствия данных, авторинг шкал времени и более широкая сериализация группированной раскладки сохраняют отдельные границы принятия