Шкалы времени сводных таблиц и состояния данных срезов
Доступно с версии 2.384.98 для поддерживаемых локальных не-OLAP сводных таблиц через фасад XLSX-книги
Создание и подключение шкалы времени
TimelineCache := Workbook.CreatePivotTimelineCache(Pivot, 'EventDate');
if TimelineCache = nil then
raise Exception.Create('The Timeline cache was rejected');
TimelineView := ReportSheet.Timelines.Add(TimelineCache, 2, 7, 7, 12);
if TimelineView = nil then
raise Exception.Create('The Timeline view was rejected');
if TimelineCache.SetDateRange(EncodeDate(2026, 1, 1),
EncodeDate(2026, 1, 31)) < 0 then
raise Exception.Create('The Timeline selection was rejected');
TXLSXWorkbook.CreatePivotTimelineCache(ATable: TXLSPivotTable; const AFieldName: WideString): TXLSXTimelineCache создаёт или переиспользует проверенный кэш датного поля и необходимые идентичности пакета; сбой возвращает nil до фиксации промежуточного состояния
TXLSXWorkbook.TimelineCaches открывает доступ к TXLSXTimelineCaches с Count, Items[Index] с отсчётом от нуля и регистронезависимым FindByName; эти кэши принадлежат книге
TXLSXTimelineCache.Name идентифицирует кэш, SourceName — его исходное поле, а IsNonOlapPivot — проверенную поддерживаемую привязку; импортированные неподдерживаемые кэши сохраняют исходный XML
TXLSXTimelineCache.ConnectPivotTable(ATable: TXLSPivotTable): Integer подключает ещё одно собственное представление того же PivotCache с совместимым датным полем; метод возвращает 1 при успехе, включая существующее подключение, или -1 при отказе
TXLSXTimelineCache.SetDateRange(AStartDate, AEndDate: TDateTime): Integer использует включающие границы целых дней и возвращает 1 или -1; границы должны быть целыми датами с 1 января 1900 по 31 декабря 9999 в возрастающем порядке
Поддерживаемая книга использует систему дат 1900; авторинг с Date1904 и дробные границы выборки отклоняются, тогда как исходные датные значения могут сохранять время суток, а записи в течение всего выбранного конечного дня остаются допустимыми
TXLSXTimelineCache.SelectionActive, StartDate и EndDate открывают доступ к активным границам; ClearSelection: Integer очищает их, не трогая другие фильтры, и возвращает 1 или -1
Выборки пересекаются с другими срезами, ручными или страничными фильтрами и предикатами вызывающего; эти операции не обновляют исходные кэши, не пересчитывают формулы и не переписывают существующие ячейки отчёта листа
Представления шкал времени и удаление
TXLSXWorksheet.Timelines открывает доступ к принадлежащей листу коллекции TXLSXTimelines с Add, FindByName, Items[Index] с отсчётом от нуля, Count, Delete(Index) и Clear; удаление убирает UI, сохраняя его общий кэш и выборку
TXLSXTimelines.Add(ACache: TXLSXTimelineCache; ARow1, ACol1, ARow2, ACol2: Integer): TXLSXTimeline принимает собственный поддерживаемый кэш и упорядоченный прямоугольник листа с отсчётом от 1, возвращая собственное представление или nil
TXLSXTimeline.Name доступен только для чтения, Cache идентифицирует общий кэш, а Caption меняет отображаемую подпись; Level принимает 0 для лет, 1 для кварталов, 2 для месяцев или 3 для дней
TXLSXTimeline.SetBounds меняет прямоугольник с отсчётом от 1, открываемый через FromRow, FromCol, ToRow и ToCol; неверная геометрия, неподдерживаемые привязки или группированная геометрия рисунка вызывают исключение до изменения
TXLSXDrawingObject.Timeline возвращает связанное представление для вида рисунка xlsxDrawingTimeline; прямые неподдерживаемые преобразования рисунка остаются под защитой
Status := Workbook.RemoveTimelineCache(TimelineCache, xlsxSlicerPreserveCurrentSelection);
TXLSXWorkbook.RemoveTimelineCache(ACache: TXLSXTimelineCache; AMode: TXLSXSlicerRemovalMode): Integer ставит в промежуточное состояние подключённые фильтры, UI, имена и очистку пакета вместе и возвращает 1 или -1
xlsxSlicerClearSelection удаляет выборку; xlsxSlicerPreserveCurrentSelection удерживает активную выборку как сравнение целых дат, только если датное поле уже лежит на оси строки или столбца в каждом подключённом представлении
Неиспользуемое или только страничное датное поле отклоняет удаление с сохранением выборки атомарно; используйте удаление с явной очисткой выборки, если нужно именно такое поведение
Импортированные фильтры нормализуются только после проверки каждого подключения, унаследованного пространства имён и точного происхождения собственных фильтров; непрозрачные атрибуты или дочерние элементы того же поля, чужие пространства имён, внешние привязки и неподдерживаемые графы с несколькими UI сохраняют свой XML и отклоняют изменения
Нативная материализация ставит в промежуточное состояние текущую выборку шкалы времени вместе с метаданными отчёта и ячейками, удаляя только точную сохранённую сигнатуру собственного фильтра; произвольные ограничения callback'ов не имеют нативного XML-представления и не могут быть воспроизведены обновлением Excel
Сохранение OOXML сохраняет нативные типы отношений, исходные пути и несвязанные расширения; сохранение Strict только с кэшем отклоняется, преобразование в ODS сообщает о потере шкал времени, а подмножество значений и стилей XLSB отклоняет шкалы времени
Явное нативное обновление состояний данных срезов
function TXLSXSlicerCache.RefreshItemDataStates: Integer; overload; function TXLSXSlicerCache.RefreshItemDataStates( AMaxEvaluationSteps: Integer; ACancelFlag: PBoolean = nil): Integer; overload;
Операция вычисляет и ставит в промежуточное состояние полный нативный вектор отсутствия данных, затем фиксирует под защитой записи книги; успех возвращает 1, отказ возвращает -1 без изменения сериализованных флагов элементов и выборок
Операция игнорирует собственную выборку этого среза, пересекая выборки других срезов и шкал времени, ручные или страничные фильтры, поддерживаемые агрегатные фильтры и предикаты вызывающего; доступность — это объединение по поддерживаемым подключённым представлениям
Выбранные исторические элементы без подходящих записей получают нативный флаг отсутствия данных, сохраняя свою выборку; стабильные ID кэшей, исходный порядок элементов в файле и несвязанный XML остаются нетронутыми
Накопительный лимит шагов по умолчанию 1000000; ноль означает неограниченные шаги, отрицательное значение отклоняется, а FormulaArrayMemoryLimit ограничивает постановку метаданных и все предварительные просмотры подключённых представлений накопительно
Отмена, исключения или повторный вход callback'ов, замороженные представления, неподдерживаемые привязки, исчерпанные бюджеты или изменившееся состояние вычисления отклоняются до фиксации флагов; независимые изменения общей модели, сделанные callback'ами вызывающего, остаются изменениями вызывающего и приводят к отказу обновления
TXLSXSlicerCache.CrossFilter читает и пишет нативную настройку табличной перекрёстной фильтрации под защитой изменений; showItemsWithDataAtTop включает нативный порядок «данные первыми» без перезаписи порядка элементов в файле
ItemHasData остаётся read-only запросом; сохранение не вызывает вычислитель и не обновляет флаги отсутствия данных неявно, поэтому вызывайте RefreshItemDataStates явно перед сохранением, если нужно обновить состояние нативного UI
Расширенная семантика датных фильтров
TXLSPivotFilter.UseWholeDay запрашивает сравнение дат по целым дням для поддерживаемых датных фильтров; сохранённые выборки, порождённые шкалами времени, используют его, тогда как обычные датные фильтры сохраняют прежнее чувствительное ко времени поведение
См. также нативный вывод сводных таблиц и read-only доступность срезов и жизненный цикл локального кэша и срезов — там описаны окружающие контракты обновления и владения