Примечания к выпуску HotXLS
История версий HotXLS с пользовательскими возможностями, исправлениями, улучшениями XLS/XLSX, экспортом, совместимостью и обновлениями документации
Последний выпуск
- Последняя версия: 2.384.120; Дата релиза: 2026-10-09
Версия 2.384.120
Добавлено
- Портативный захват Classic XLS поддерживает обычные гистограммы, линейчатые, графики, точечные, круговые и кольцевые диаграммы, а также диаграммы областей с одним рядом — с проверенными локальными сохранёнными значениями, базовым внешним видом и заданными вызывающим кодом границами области построения, заголовка и легенды
- Объявления внешнего вида диаграмм в режиме только для чтения сохраняют идентичность листов и диаграмм, явные размеры рамок, эффективные размеры точек легенды и нативную геометрию шрифтов для автономного вывода PDF, SVG и PNG
- Ограниченные вспомогательные функции осматривают простые ссылки сохранённых формул и кэшированные ячейки диаграмм, не вычисляя формулы и не разворачивая разреженные ячейки
Исправлено
- Захват диаграмм Classic сохраняет дробные сохранённые размеры шрифтов и маркеров, владение источниками и аренды чтения, а до вывода отвергает испорченные записи, неразрешённый внешний вид и исчерпанные бюджеты ресурсов
- Обновления свойств диаграмм с двойными значениями отвергают неконечные значения до сравнения или изменения
- Повторная инициализация нативных портативных ячеек освобождает прежние управляемые строки во время захвата
Версия 2.384.119
Исправлено
- Осмотр диаграмм Classic проверяет сохранённый текст рядов, имена линий тренда и разделители подписей данных до применения типизированного состояния, а при ошибке из-за испорченного текста освобождает частичные модели
- Сжатые разделители подписей данных Unicode сохраняют свои полные сохранённые символы
Версия 2.384.118
Добавлено
- Осмотр диаграмм Classic раскрывает диаметры маркеров в пунктах, включая дробные размеры, сохраняя исходные единицы, в которых значения были сохранены
Исправлено
- Поддерживаемые нативные таблицы заливок диаграмм Classic декодируют свойства после сложных записей, а испорченные таблицы сохраняют предыдущую типизированную заливку
Версия 2.384.117
Добавлено
- Явные вспомогательные функции байтового кодирования сохраняют встроенные нулевые символы и отвергают текст, который нельзя представить в выбранной кодовой странице
Изменено
- Текст, формулы и метаданные книг Classic BIFF5 используют объявленную кодировку на Windows, Linux и macOS — с длинами в байтах после кодирования и границами полных символов
- Поддерживаемый унаследованный текст диаграмм сохраняет исходное декодирование после правок и копирования кодовых страниц и явно перекодируется перед сохранением в другой кодировке
Исправлено
- Сжатый Unicode BIFF8 хранит точные кодовые единицы, а унаследованные пользовательские стили, текст диаграмм и двухбайтовые продолжения кэшей формул используют свои фактические макеты записей
- Нативное вычисление текста Unicode, критерии, ключи поиска, локальные привязки формул и поиск с заменой в Classic сохраняют поддерживаемое сопоставление регистра
- Поиск именованных стилей находит первую сохранённую запись, не считая её отсутствующим именем
- Повторные чтения записей ZIP освобождают прежние метаданные заголовков, сохраняя параллельное поведение хранимых и deflate-потоков
Версия 2.384.116
Добавлено
- Локальные вычисляемые поля SUM в сводных таблицах вычисляют формулы из сумм контекстов листьев, промежуточных и общих итогов, включая зависимости, которых нет среди отображаемых мер
- Вычисляемые элементы, принадлежащие кэшу, сохраняют нативную идентичность элементов, скрытые зависимости и глобальный порядок вычисления по поддерживаемым несгруппированным полям со строковыми элементами
- Поддерживаемые вычисления отображения вычисляемых элементов и агрегатные фильтры сохраняют порядок видимых элементов, исходный порядок фильтров и однозначную идентичность отображаемых мер
Исправлено
- Нативная проекция дат в формулах сводных таблиц сохраняет систему дат книги при импорте, клонировании и вычислении кэша
- Очистка кэша от отсутствующих элементов сохраняет проверенное владение материализованным отчётом в обеих системах дат книги и в унаследованных сохранённых отчётах
- Неподдерживаемые метаданные вычисляемых сводных таблиц и отредактированный нативный вывод отвергаются до изменения результатов на листе
Версия 2.384.115
Добавлено
- Нативный портативный вывод PDF, SVG и PNG поддерживает форматированный текст, смоделированные фигуры, обычные изображения, изображения в ячейках, логические флажки и семь поддерживаемых семейств кэшированных диаграмм XLSX
- Неизменяемые планы печати книг применяют на Linux и macOS полные области печати, сквозные заголовки строк и столбцов, разрывы страниц, настройки бумаги, поля, ориентацию, центрирование, масштабирование и порядок страниц
- Явная нативная геометрия шрифтов поддерживает захват с проверкой при генерации, не меняя поставщика геометрии книги
Исправлено
- Режим вписывания в страницу переживает циклы сохранения и открытия книги и игнорирует устаревшее процентное масштабирование, включая неограниченные размеры вписывания
- Поддерживаемые шрифты заголовков диаграмм, внешний вид линий, заливка и границы маркеров сохраняют явные импортированные и заданные значения, включая чёрный цвет
- Форматированный текст сохраняет явные переопределения значением false и различает эффективный вид фрагментов при повторном использовании строк и семантическом сравнении
Версия 2.384.114
Добавлено
- Нативные приложения на Linux x64 и macOS ARM64 загружают, правят, вычисляют и сохраняют книги Classic BIFF8, включая поддерживаемые свойства документов и шифрование RC4
- Портативное составное хранилище поддерживает вложенные области действия, крупные цепочки контейнеров DIFAT, метаданные и явное владение интерфейсом нативного хранилища
Исправлено
- Книги со 128-битным CryptoAPI объявляют совместимый криптографический провайдер и сохраняют читаемые свойства документа в открытом тексте
- Нативные метки времени документов используют правильную эпоху FILETIME и сохраняют значения UTC между платформами
- Определённые имена Classic разделяют каноническую идентичность Unicode при поиске по областям действия, в формулах и при повторном открытии книги
- Экранированные разделители форматов дат и встроенные литералы в кавычках сохраняют выбранный полный формат даты
Версия 2.384.113
Добавлено
- Очистка диапазонов и вставка текста Unicode поддерживают ограниченные атомарные отмену и повтор — с проверкой защиты и предварительной структурной проверкой
- Типизированные локальные изображения в ячейках и форматы Checkbox поддерживают циклы XLSX, метаданные специальных возможностей и правки содержимого с учётом владения
- Разреженные форматы Checkbox для строк и столбцов сохраняют приоритет, явные сбросы и отсутствующие ячейки при правках и циклах XLSX
- Расширенная поддержка XLSB охватывает формулы и кэши, имена, объединения, гиперссылки, области, таблицы и фильтры
- Нативные API книг на Linux x64 и macOS ARM64 загружают, правят, вычисляют и сохраняют поддерживаемые файлы XLSX, XLSB и ODS
- Нативный вывод сводных таблиц поддерживает числовую, датную и ручную группировку и все одиннадцать пользовательских функций промежуточных итогов
Исправлено
- Имена с областью действия используют согласованную нормализацию Unicode и сопоставление регистра на Windows, Linux и macOS, не выбрасывая диакритику и символы
- Современные формулы агрегации единообразно компилируются с Free Pascal на Windows
- Открытие другой книги заменяет именованные стили, а не удерживает определения стилей из прежнего файла
- Содержимое изображений и элементов управления современного формата переживает отмену правок диапазонов и сохранение, не материализуя отсутствующие ячейки
- Импортированные кэши формул сохраняют исходные метаданные значений, а обычные метаданные отличимы от содержимого изображений в ячейках
- Семантическое сравнение различает локальное содержимое изображений, метаданные специальных возможностей и эффективные унаследованные форматы элементов управления с помощью ограниченного разреженного обхода
Версия 2.384.112
Добавлено
- Проверка, извлечение и замена регулярными выражениями поддерживают текст UTF-16, группы захвата, трансляцию массивов и ограниченное вычисление на Windows, Linux x64 и macOS ARM64
- GROUPBY и PIVOTBY поддерживают колбэки агрегации с областью действия, несколько мер, заголовки, фильтры, иерархические итоги, сортировку и относительные проценты
Исправлено
- Скалярные аргументы SUM сохраняют приведение логических значений и числового текста, а агрегация по диапазонам и массивам держит прежние правила игнорирования
- Логические литералы с областью действия и формулы колбэков агрегации переживают хранение будущих функций и повторное открытие книги
Версия 2.384.111
Добавлено
- Нативный локальный вывод сводных таблиц поддерживает отличия и проценты от базового элемента, нарастающие итоги, проценты от строки и столбца, индекс, доли родительских элементов, накопленные проценты и плотный рейтинг
Исправлено
- Вычисления отображения сохраняют нативную семантику итогов, отсутствующих значений, деления на ноль и отсортированных элементов, включая неаддитивные средние
- Расширенные режимы отображения и идентичность базовых полей переживают сохранение, повторное открытие и явное обновление в Excel
Версия 2.384.110
Добавлено
- Нативный локальный вывод сводных таблиц поддерживает компактный, табличный и структурный макеты, повторяющиеся подписи родительских элементов, стандартное расположение промежуточных итогов и несколько мер на любой из осей данных
Исправлено
- Настройки повторяющихся подписей переживают импортированные псевдонимы пространств имён и сохранение с повторным открытием, а нативный вывод отличает отсутствующие пересечения от числового нуля
- Поэтапные метаданные макета удерживают подписи полей и данных согласованными, когда Excel явно обновляет сгенерированные отчёты
Версия 2.384.109
Добавлено
- Сравнение книг различает типизированные значения и точные большие целые числа, поддерживает конечные числовые допуски и опциональное сравнение сохранённых кэшей формул, стилей и геометрии
- Ограниченное семантическое сравнение охватывает поддерживаемые имена, правила, таблицы, порядок рисования, области пустых стилей, эффективные фрагменты форматированного текста, локальные модели сводных таблиц, выборы в срезах и состояние шкал времени
Изменено
- Сравнение сохраняет упакованные и отсутствующие ячейки, сводит идентичность ресурсов к эффективным значениям и удерживает прежний успешный результат при неподдерживаемых моделях или исчерпании ресурсов
Исправлено
- Валидация точности типизированных параметров REAL в базах данных компилируется с Delphi XE5, сохраняя проверки точных значений, переполнения и NULL
Версия 2.384.108
Добавлено
- Циклы сохранения и открытия ODS удерживают обычный текст примечаний и авторов, представимые фильтры значений и пользовательские фильтры, явную защиту ячеек и эквивалентную защиту листа без пароля
- Отчёты о преобразовании сохраняют точные сведения о потерях метаданных при копировании листов и последующих сохранениях, включая неподдерживаемые выражения фильтров и неэквивалентную защиту
Исправлено
- Отменённые или неудавшиеся потоковые сохранения ODS сохраняют байты, размер и позицию назначения за счёт ограниченной поэтапной подготовки во временных файлах
- Успешные сохранения ODS с ненулевой стартовой позиции потока сохраняют префикс и корректные смещения записей ZIP
Версия 2.384.107
Добавлено
- Осмотр сохранённых формул и учитывающие ссылки агрегатные формулы сводных таблиц работают в контекстах вычисления Classic XLS, XLSX, только для чтения и изолированных — включая доступные результаты-массивы и типизированные ошибки
- Агрегатные запросы к сводным таблицам учитывают смоделированные видимые элементы, фильтры отчёта и поддерживаемые промежуточные итоги через ограниченное автономное вычисление по кэшу, не трогая исходные данные
Исправлено
- Нативные кэши сводных таблиц Excel XLS удерживают подряд идущие встроенные числовые значения и актуальные метаданные валидности кэша вместо возврата неверных итогов по повторяющимся значениям
- Ссылки сводных таблиц включают смоделированную область фильтров отчёта над положением основной таблицы
Версия 2.384.106
Добавлено
- Автоматические запросы к базам данных привязывают типизированные литеральные параметры и параметры из сохранённых ячеек в позиционном порядке, удерживая Unicode, пустой текст, ноль, логические значения, даты и NULL и не подставляя значения в текст SQL
- Параметры-ячейки читают доступные кэши формул и компактные сохранённые значения без пересчёта или материализации — с ограниченной валидацией метаданных и транзакционным применением результатов
Исправлено
- Датные параметры Jet и ACE сохраняют значения DATE, TIME и TIMESTAMP через типизированные привязки OLE DATE, независимо от зависящих от локали проекций меток времени
Версия 2.384.105
Добавлено
- Метаданные формул читают фактическую идентичность указанного файла, поддерживаемые базовые числовые форматы, цвета для отрицательных значений, скобки для положительных, выравнивание текста, состояние блокировки, ширину столбца и режим вычислений в контекстах вычисления XLS и XLSX
- Автономный осмотр базовых стилей и разреженного охвата по осям сохраняет сохранённые и упакованные ячейки, умолчания листа, цвета темы и заимствованное владение книгой
Изменено
- Метаданные ширины столбца возвращают округлённую ширину в символах и флаг ширины по умолчанию в виде массива из двух столбцов; недоступная информация об окружении приложения Excel и неклассифицируемые форматы сообщают явные ошибки
Версия 2.384.104
Добавлено
- Валидация импорта поддерживает строгие скалярные типы, числовые и датные границы, явные системы дат Excel, составную уникальность и связи между столбцами
- Структурированные нарушения указывают лист, ячейку, правило, связанный столбец и первую дублирующуюся строку, а валидация сохранённых значений бережёт упакованные ячейки и сообщает о недоступных кэшах формул без неявного пересчёта
Версия 2.384.103
Добавлено
- Автоматические текстовые запросы обновляют файлы с фиксированной шириной полей, используя объявленные начала полей, поддерживаемые кодировки, типизированное преобразование полей, пропускаемые поля и выбор строки заголовков или первой строки
- Обновление файлов с фиксированной шириной сохраняет буквальные кавычки, обрезает набивку полей и отвергает некорректные границы, чрезмерно большой ввод и отмену до применения изменений на листе
Версия 2.384.102
Изменено
- Аудит символов формул Classic сканирует быстрее, сохраняя найденные функции и имена, дедупликацию без учёта регистра, область действия и порядок находок
Исправлено
- Сохранение книг в Windows, прямая правка пакетов, вывод PDF и вывод страниц в виде изображений могут атомарно заменять существующий файл, удерживаемый метаданными delete-sharing или читающими дескрипторами, на поддерживаемых файловых системах — с сохранением проверок блокировок, защиты от записи и прежнего пути на неподдерживаемых
Версия 2.384.101
Добавлено
- Массивы выбора областей в INDEX транслируются вместе с селекторами строк и столбцов по вычисляемым массивам и поддерживаемым объединениям ссылок в пределах одного листа, сохраняя ориентацию, типы выбранных значений и отдельные ошибки
- Определённые имена и привязки LET сохраняют поддерживаемую идентичность многообластных ссылок, а скалярный CHOOSE удерживает выбранную ссылку для последующих вычислений
Исправлено
- INDEX принимает явный аргумент области, равный 1, для вычисляемых источников и различает некорректные, отсутствующие, дробные и выходящие за диапазон селекторы областей
- Объединения между листами и объединения вычисляемых массивов отвергаются согласно поддерживаемому контракту ошибок, вместо того чтобы приобретать неверную идентичность ссылки
- Некорректные ссылки, уточнённые существующими локальными листами, сохраняют свои ссылочные ошибки в прямых формулах и определённых именах, включая имена листов в кавычках, — не меняя строки формул и не трактуя неизвестные уточнители как локальные листы
Версия 2.384.100
Добавлено
- Портативный headless-вывод PDF, SVG и PNG на Linux с явными файлами шрифтов, нативным текстовым шейпингом, ограниченными ресурсами и поэтапной монопольной публикацией файлов
- Захват в Windows только для чтения поддерживаемых прямоугольников Classic XLS и XLSX в неизменяемые переносимые снимки — включая сохранённые результаты формул, области действия Table и условное форматирование, физические размеры и полные объединения
Исправлено
- Портативная проверка внешнего вида единообразно отвергает некорректные представления enum в оптимизированных сборках компилятора
Версия 2.384.99
Добавлено
- Явное автоматическое обновление запросов для поддерживаемых подключений Windows — Text, ADO, ODBC и Web — с регистрацией пользовательских провайдеров и ограниченными результатами
Исправлено
- Связи и идентичность столбцов в результатах запросов переживают поддерживаемые сохранение и повторное открытие — как с опорной таблицей, так и автономные
- Некорректные виды подключений провайдеров отвергаются до диспетчеризации, не меняя результаты на листе
Версия 2.384.98
Добавлено
- Создание локальных шкал времени сводных таблиц, подключения к общим представлениям, инклюзивная фильтрация целых дней и безопасное удаление — с очисткой выбора или его сохранением
- Явное нативное обновление элементов без данных в срезах по всем связанным представлениям — с кумулятивными лимитами ресурсов, поддержкой отмены и сохранением выбора и идентичности элементов
Исправлено
- Нативная обработка связей и владения фильтрами шкал времени сохраняет поддерживаемые импортированные выборы при материализации, сохранении и повторном открытии
- Настройки перекрёстной фильтрации срезов сводных таблиц сохраняются через их нативное табличное представление
- Обнаружение шкал времени сохраняет декодирование UTF-16 книги и связанных частей при загрузке Open XML
Версия 2.384.97
Добавлено
- Скалярные и вычисляемо-массивные определённые имена в поддерживаемых числовых и счётных агрегатах — с нативным приведением типов, отслеживанием зависимостей и лимитами ресурсов
Исправлено
- Числовая агрегация распространяет типизированные ошибки от ссылок на локальные листы, пустые средние возвращают ошибку деления на ноль, а неудавшиеся именованные ссылки сохраняют свои ошибки, не перезапуская частичный обход
Версия 2.384.96
Добавлено
- Аргументы-вычисляемые массивы для склейки текста и поддерживаемых вычислений медианы, порядковых статистик, процентилей, квартилей, процентного ранга, множественных мод и ковариации генеральной совокупности
Изменено
- Сбор массивов и ссылок сохраняет нативное приведение скаляров, типизированные ошибки, исходное сопоставление пар для ковариации и лимиты ресурсов вычислений
Исправлено
- Вычисление середины для конечной медианы избегает переполнения при одинаковых знаках, а исключающие процентили принимают корректные ранги конечных точек и единственных значений
Версия 2.384.95
Добавлено
- Транзакционный нативный вывод компактных отчётов сводных таблиц с синхронизированными значениями листа, метаданными макета и сохраняемым владением ячейками
- Доступность элементов срезов в режиме чтения по всем связанным представлениям при других активных фильтрах
- Явная очистка исторических элементов кэша сводной таблицы с настраиваемым сроком удержания и согласованным переназначением связанных выборов
Изменено
- Поддерживаемый нативный вывод сводных таблиц сохраняет текущие ручные фильтры и подписи, отвергая неподдерживаемые макеты или вручную отредактированные ячейки отчёта до внесения изменений
Версия 2.384.94
Добавлено
- Представления сводных таблиц с общим кэшем и создание локальных срезов сводных таблиц с явными границами листа
- Транзакционное удаление среза, которое либо снимает его ограничение, либо сохраняет выбор как обычные фильтры сводной таблицы, включая политику для будущих элементов
- Восстановление кэшей с фиксированной числовой, датной и дискретной группировкой со стабильной идентичностью элементов
- Автономные предпросмотры метаданных компактного макета нативных сводных таблиц с точной идентичностью элементов и агрегатов
Исправлено
- Повторное открытие заполненной книги теперь заменяет прежние типизированные кэши сводных таблиц, а созданные нативные связи срезов остаются распознаваемыми Excel
- Сериализация сгруппированных кэшей сохраняет объявленные нативные домены элементов и официальные атрибуты общего итога и оси данных
Версия 2.384.93
Добавлено
- Проверенный модуль чтения и записи XLSB для типизированных значений ячеек, базовых стилей, обычных представлений листов и размеров
- Явный бинарный вывод при сохранении книги в файл и поток, с автоматическим распознаванием бинарного ввода и отчётами о точности преобразования
Изменено
- Преобразование в XLSB поэтапно собирает полный пакет и отвергает неподдерживаемые возможности или настройки вычислений до вывода, включая сохранения без проверки или с допустимыми потерями
Исправлено
- Настроенные уровни сжатия ZIP применяются до инициализации дефлятора
Версия 2.384.92
Добавлено
- Транзакционное обновление кэша сводной таблицы и безопасная материализация на листе для поддерживаемых локальных источников — определённых имён и таблиц
- Поиск определённых имён в области действия листа и определяемые вызывающим кодом границы источника для обновления кэша
Исправлено
- Идентичность локального источника и область действия определённых имён переживают перемещение и переименование листов, включая имена в кавычках и Unicode-имена
- XML формул определённых имён опускает необязательный ведущий знак равенства, нужный только синтаксису формул в памяти
- Таблица определяет строки итогов по их фактическому количеству и сохраняет все строки данных, когда есть только UI-подсказка строки итогов
Версия 2.384.91
Добавлено
- Входы-вычисляемые массивы и типизированные результаты для транспонирования, матричного умножения, определителей и обращения матриц
- Упорядоченные векторы-селекторы, дубликаты и отрицательные индексы для выбора строк и столбцов
- Вычисляемые векторы поиска и запросы поиска со значениями-массивами, включая полные скалярные срезы поиска и типизированные резервные значения
Изменено
- Матричная работа, сканирование поиска, обход селекторов, копирование и дополнение соблюдают лимиты шагов вычисления и памяти массивов в любых комбинациях
Исправлено
- Кэши текста формул и результатов-массивов корректно отображаются в Excel до пересчёта
- Кэши современных расширенных ошибок включают объявления версии книги и вычислительных возможностей, требуемые для нативного кэшированного отображения
- Параметры поиска и развёртывания отвергают выходящие за диапазон значения до сужения числовых типов, а дробные параметры следуют нативному усечению
- Пустые результаты take, drop и flatten сохраняют свои типизированные ошибки вычисления
Версия 2.384.90
Добавлено
- Изолированные предпросмотры результатов сводных таблиц удерживают общие выборы в срезах и фильтры вызывающего кода, не трогая живой вычисляемый кэш
- Безопасная материализация на листе для поддерживаемых локальных источников сводных таблиц поэтапно подготавливает результаты, отвергает конфликтующее содержимое и структуры и сохраняет существующие объекты ячеек, форматирование и комментарии
- Точное владение типизированными значениями переживает сохранение и повторное открытие XLSX, что позволяет безопасно менять размер и переносить результаты и явно принимать уже существующие скалярные значения сводной таблицы
Исправлено
- Удаление последнего привязанного представления среза сводной таблицы отвергается до удаления его рисунка, кэша, зарезервированного имени или выбора
- Очистка представлений срезов проверяет каждый затронутый кэш до изменения и разом вычищает разрешённые представления, рисунки и непривязанные кэши
Версия 2.384.89
Добавлено
- INDEX принимает массивы значений в качестве селекторов строк и столбцов по вычисляемым массивам и диапазонам листа, включая парные выборы и перекрёстные произведения строк и столбцов
Исправлено
- Результаты селекторов сохраняют типизированные значения и ошибки, дополняют пропущенные позиции селекторов значением #N/A и соблюдают лимиты памяти вычислений и шагов вычисления
- Дробные скалярные селекторы, усекающиеся до нуля, дают полные переполнения по строке или столбцу, а отрицательные селекторы возвращают #VALUE! до усечения
- Скалярный выбор из диапазона сохраняет ссылочное поведение, а переполнения селекторов восстанавливаются после препятствий, меняют размер и пересчитываются после сохранения и повторного открытия
Версия 2.384.88
Добавлено
- Типизированный просмотр элементов, выбор общих элементов и очистка для поддерживаемых импортированных кэшей срезов не-OLAP сводных таблиц
- Вычисления связанных сводных таблиц пересекают выбор в срезах с независимыми ограничениями по другим полям и переданными вызывающим кодом фильтрами записей
Изменено
- Изменения выбора проверяют каждое подключение и элемент до фиксации, отвергают неоднозначные импортированные маски одного поля и сохраняют неподдерживаемые представления кэша
- Изменения коллекции кэшей срезов уважают защиту книги от записи, когда затрагивают вычисления связанных сводных таблиц
- Удаление привязанных кэшей срезов не-OLAP сводных таблиц отвергается атомарно, чтобы сохранить согласованное состояние времени выполнения и сохранённых фильтров
Исправлено
- Отредактированные выборы в срезах и маски элементов связанных представлений сохраняются вместе, удерживая импортированные пространства имён и неизвестные расширения
- Поддерживаемые подключения срезов следуют сохранённым идентичностям листов и разрешают расширенные идентификаторы кэшей независимо от обычных идентификаторов кэшей книги
- Импортированные определения сводных таблиц остаются связанными со своими исходными представлениями при изменении порядка листов
Версия 2.384.87
Изменено
- Локальное обновление прямоугольного кэша сводной таблицы сохраняет прежнюю идентичность полей и элементов, дописывает новые типизированные элементы и удерживает фильтры и выборы общего представления привязанными к исходным элементам после изменения порядка, удаления или повторного появления источника
- Заголовки источника сопоставляются с полями базы данных по имени, что позволяет переставлять столбцы: вычисляемые поля сохраняют свои формулы и получают свежие заполнители пустых записей для последующего вычисления
- Обновление проверяет и поэтапно готовит весь источник до изменения кэша, отвергая неподдерживаемые схемы, типы источников, производную группировку и новые непривязанные элементы дискретных групп — без частичных изменений
Исправлено
- Ошибочные значения сводной таблицы сохраняют свои типы и коды в общих элементах и записях через сохранение и повторное открытие XLSX
- Обновлённые домены общих элементов пересчитывают флаги типов и представимые границы, а метаданные кэша XLSX точно описывают смешанные значения, даты, ошибки, логические значения и пустые ячейки
- Обновление источника читает отсутствующие ячейки, не создавая ячейки листа, и сравнивает заголовки полей Unicode, не сужая их текст
- Сохранённые обновлённые представления сводных таблиц включают новые элементы кэша до элементов промежуточных итогов, удерживая существующий порядок элементов, флаги скрытия и импортированные расширения макета
- Выбор в полях страниц остаётся привязанным к правильному элементу, когда порядок представления отличается от порядка кэша; вычисляемые поля больше не сдвигают сохранённые записи источника, а метки времени обновления используют числовое представление XLSX
Версия 2.384.86
Добавлено
- INDEX принимает вычисляемые массивы и константы — с выбором скаляра, выбором целого массива и извлечением строки или столбца, сохраняя ссылочное поведение для источников-диапазонов
- SORT и UNIQUE принимают вычисляемые массивы и константы, что позволяет напрямую сочетать их с FILTER, SEQUENCE, LET и другими выражениями, производящими массивы
Изменено
- Составленные выражения массивов сохраняют автоматическое изменение размера переполнения XLSX, вычисление массивов с фиксированным диапазоном, типизированные ошибки и пересчёт после сохранения и повторного открытия
Исправлено
- Выбор и сортировка массивов усекают дробные числовые параметры, некорректный текст логического параметра возвращает #VALUE!, а операции над вычисляемыми массивами соблюдают лимиты памяти и шагов вычисления
Версия 2.384.85
Добавлено
- Динамические массивы XLSX теперь вычисляются в автоматически расширяемые диапазоны переполнения, сохраняют расставленные пользователем препятствия с ошибкой #SPILL!, поддерживают ссылки на переполнение и явное неявное пересечение, а после повторного открытия восстанавливают кэшированное владение переполнением
- Предварительная проверка преобразования сообщает об известных потерях при переходе к целевому формату, а проверяемое сохранение может отвергнуть эти потери до записи существующего файла или потока
- Явный вывод шаблонов с поддержкой макросов сохраняет существующие проекты VBA в пакетах XLTM
- Обновление таблиц запросов, инициируемое вызывающим кодом, поддерживает ограниченные результаты с фиксированной схемой, синхронизированные диапазоны таблиц и фильтров, прогресс, отмену и транзакционный откат
Изменено
- Повторяющиеся полосы отчёта клонируют полные цепочки обсуждений с переназначенными идентификаторами и сохраняют откат, когда очередная цель не удалась
- Пользовательская логическая валидация ODS, поддерживаемые границы со значениями формул, источники списков и уточнённые ссылки переносятся с перебазированием на базовую ячейку; неподдерживаемые определения и ссылки на ячейки опускаются вместе
Исправлено
- Формулы массивов с фиксированным диапазоном вычисляют арифметику по исходным диапазонам поэлементно, MAP с несколькими массивами принимает соответствующие параметры лямбда, а FILTER вычисляет вычисляемые массивы и маски
- Современные ошибки #SPILL! и #CALC! сохраняют типизированные метаданные расширенных значений XLSX, удерживая несвязанные импортированные метаданные и корзины расширенных значений
- Заново созданные формулы XLSX сохраняются с каноническими разделителями аргументов и префиксами будущих функций для совместимости с Excel; сохранение хранит выражение в памяти, а повторное открытие возвращает канонический синтаксис формулы
- Поддерживаемые локальные ряды диаграмм обновляют кэши числовых, текстовых, датных, ошибочных, пузырьковых и иерархических категорий после правок и пересчёта
- Нативная разбивка на страницы отображает объединённые диапазоны через их исходный якорь, обрезает фрагменты страниц и подавляет внутренние границы и линии сетки
Версия 2.384.84
Изменено
- Примеры для начала работы в Delphi и C++Builder теперь включают практичный заказ на продажу с типизированными датами, ценами, скидками и вычисленными итогами, а после повторного открытия проверяют сохранённые книги XLS и XLSX
- Пример со счётом теперь связывает печатаемый счёт с редактируемыми условиями оплаты и журналом поступлений, вычисляя скидки, налог, платежи и остаток к оплате
- Пример макета листа теперь демонстрирует создание, перечисление и удаление объединённых заголовков и их сохранение после повторного открытия
- Ещё девять семейств прицельных примеров API переехали в Miscellaneous, оставив основной каталог сосредоточенным на полных бизнес-процессах и интерактивных инструментах
Удалено
- Минимальные самостоятельные примеры по объединённым ячейкам и форматированному тексту консолидированы в примеры макета листа и дашбордов
Версия 2.384.83
Изменено
- Каталог демо теперь отделяет полные сценарии и содержательные рабочие процессы от прицельных рецептов API в папке Miscellaneous каждой платформы — с прямой навигацией и готовыми к сборке проектами в обоих ярусах
Удалено
- Три избыточных демо по диапазонам и макету листа удалены; их полные сценарии остаются доступными в RangeOps и SheetLayout
Версия 2.384.82
Изменено
- Галереи дашбордов Delphi и C++Builder открываются сразу на заполненной книге — с живыми итогами, построенными диаграммами, редактируемыми деталями, ценовыми сценариями и экспортом текущего результата
- Тур по API даёт прямую навигацию по дашборду, данным продаж, предпросмотру диаграмм и рецептам API с воспроизводимым набором данных за все двенадцать месяцев
- Примеры несут свои необходимые модули сценария и ресурсы манифеста локально, так что каждый проект можно скопировать без отдельного общего каталога
Исправлено
- Тур по API создаёт данные о продажах до ввода формул дашборда, поэтому живая демонстрация успешно инициализируется
- Диаграммы живой демонстрации обновляют кэшированные значения и подписи после пересчёта, а повторные экспорты галереи C++Builder сохраняют текущие правки, не накапливая сгенерированные листы отчётов
Версия 2.384.81
Изменено
- Примеры копирования листов проверяют независимое содержимое, переназначенные форматы, формулы и встроенные объекты после повторного открытия своего результата
- Примеры по системам дат, поиску, группировке, формулам массивов и картинкам проверяют своё особое поведение и сообщают о неудавшемся выводе ненулевым кодом выхода
Исправлено
- Диапазоны AutoFilter в Classic XLS сохраняют полные границы строк и столбцов после сохранения и повторного открытия, включая скопированные фильтры с активными критериями
- Галереи дашбордов создают листы, на которые ссылаются формулы, до ввода самих формул, считают итоги до экспорта и генерируют все запрошенные сопутствующие форматы, даже если какой-то другой вывод не удался
- Галерея дашбордов C++Builder создаёт задокументированные сопутствующие файлы CSV, HTML и RTF
- Скомпилированные отчёты сохраняют обычное сообщение об отказах в классических статических сборках Win64 C++Builder, когда место назначения нельзя заменить
- Интерактивные примеры API сообщают об ошибках экспорта PDF, HTML и CSV вместо заверений, что файлы записаны
- Демонстрация возможностей доводит свою поддерживаемую демонстрацию семантического хэша до конца и проверяет сохранённые книги, не вызывая неподдерживаемые снимки современных рисунков
Версия 2.384.80
Изменено
- Каталог примеров группирует проекты по учебным задачам и помечает рекомендуемые отправные точки, уроки по конкретным форматам и совместимые имена проектов
- Примеры макета листа и перемещения диапазонов используют общие полные сценарии, сохраняя прежние имена проектов и результатов
- Примеры по памяти, продвинутому CSV, печати, свойствам документа, текстовым полям и защите листа демонстрируют полные рабочие процессы с проверкой сохранённых данных и явным сообщением об отказах
Исправлено
- Повторно открытые текстовые поля XLSX сохраняют свои связи с рисунками при повторном сохранении, поэтому примечания остаются доступны через циклы сохранения и открытия — без дублирующихся объявлений пространств имён XML
- Примеры пакетного преобразования учитывают опцию Skip existing до открытия источников или вызова модулей записи и проверяют коды успешного выполнения книги, прежде чем сообщать о завершении
- Пример со счётом включает условия оплаты и свой полный заголовок в печатаемой области
- Консольный пример параметров страницы стартует с обычными правами пользователя и больше не активирует определение установщика Windows
Версия 2.384.79
Исправлено
- Сохранение файлов ODS с опциями экспорта при сбое сериализации или отмене сохранения оставляет прежнее место назначения как есть и единообразно сообщает об ошибках его замены
- Опции экспорта ODS задействуют обычный жизненный цикл сохранения: политику пересчёта, отмену через прогресс, диагностику и защиту книги от записи — как при выводе в файл, так и в поток
- Потоковое сохранение XLSX соблюдает настроенную политику пересчёта: в ручном режиме кэшированные значения сохраняются, а изменившиеся формулы обновляются по запросу
- Завершённые уведомления о сохранении XLSX и ODS больше не превращают уже записанный вывод в отмену с ошибкой
- Неудачные инициализация и финализация потоковой правки листа освобождают дескрипторы исходных файлов: вызывающий код может прибрать свои временные источники и снова использовать потоковую запись после неудачной инициализации
Версия 2.384.78
Исправлено
- Копии и клоны диапазонов сохраняют пересекающееся виртуальное форматирование и заменяют прежнее наложенное форматирование только внутри приёмника, в том числе при перекрывающихся копиях и копировании форматирования между книгами
- Явные сбросы форматирования продолжают работать после сохранения и повторного открытия книг со строковым или столбцовым форматированием по умолчанию
- Ячейки XLSX, явно использующие форматирование книги по умолчанию, сохраняют её пользовательские шрифты, заливки и числовые форматы
Версия 2.384.77
Исправлено
- Цели условного форматирования и проверки данных на целые строки и столбцы отслеживают правки строк и столбцов и клонирование диапазонов, когда полностью содержатся в источнике, с ограниченной геометрией цели и сохранёнными относительными якорями формул
- Конечные повторяющиеся пустые стили, импортированные из ODS, сохраняют свой полный охват используемого диапазона, а новые или сброшенные книги указывают текущую версию библиотеки в свойствах документа
- Копии ячеек на целые строки, столбцы и листы сохраняют разреженное хранилище, очищают замещаемое содержимое приёмника без расширения пустых координат и сберегают перекрывающиеся исходные данные и форматирование между книгами
Версия 2.384.76
Исправлено
- Правила условного форматирования и проверки данных теперь одинаково работают с абсолютными, развёрнутыми, целострочными, целостолбцовыми и разделёнными пробелами целями при поиске, удалении, условном вычислении и проверках валидации
- Некорректные и выходящие за сетку целевые области больше не совпадают с ячейками, при этом корректные области того же правила остаются активными; условная статистика по всей сетке сохраняет разреженное хранение ячеек
- Цели проверки ODS используют корректные якоря ячеек для целых строк и столбцов, а эквивалентные перекрывающиеся цели условного форматирования больше не создают дубликаты правил при повторном открытии
Версия 2.384.75
Исправлено
- Правила сравнения ячеек и выражений в ODS сохраняют свои полные целострочные, целостолбцовые и широкие целевые диапазоны при выводе, совместимом с Excel; повторяющиеся пустые носители держат разреженные диапазоны компактными и сберегают перекрывающиеся правила и метаданные листа
- Повторное открытие повторяющихся стилизованных пустых областей в ODS сохраняет их базовое форматирование компактным, а стандартные условные правила удерживают перекрывающийся приоритет и покрытие внутри объединённых областей
Версия 2.384.74
Исправлено
- Условное форматирование ODS при сохранении и повторном открытии сохраняет поддерживаемые переопределения шрифта, фона и числового формата, включая явные сбросы; правила с разными выделениями или целевыми диапазонами остаются раздельными
- Условное форматирование XLSX сохраняет встроенные и пользовательские числовые форматы, включая форматы, используемые только условным правилом; сохранение больше не удаляет эти пользовательские форматы и не перенаправляет правила на другой формат
- Процентные стили ODS включают символ процента, требуемый другими табличными приложениями, и переоткрываются без дублирования этого символа
Версия 2.384.73
Исправлено
- Копирование текста в буфер обмена, чтение текста из буфера и вставка текста или данных XML Spreadsheet больше не дают случайных сбоев в Windows 10 и 11. После каждого изменения буфера Проводник и служба буфера обмена пользователя (история буфера обмена) открывают буфер на несколько миллисекунд, чтобы прочитать его; текстовые операции пытались открыть его лишь однажды и в этот момент могли получить «отказ в доступе»
- Все операции с буфером обмена теперь используют ту же политику, что и копирование и вставка BIFF8 (формат Excel): они продолжают пытаться открыть буфер примерно 500 мс. Если другое приложение держит буфер дольше, операция по-прежнему завершается ошибкой, а имеющееся содержимое буфера остаётся неизменным
Версия 2.384.72
Исправлено
- При открытии файла ODS числовой формат General читается корректно. Excel и LibreOffice записывают General как числовой стиль без указания числа знаков после запятой, а это читалось как два фиксированных знака, поэтому значение вроде 1,5 показывалось как 1,50; теперь такие ячейки не имеют числового формата — как в приложении-источнике
- Текст вокруг числа с форматом General сохраняется, например
General" kg"
Версия 2.384.71
Исправлено
- Файлы ODS, сохранённые Excel или LibreOffice, больше не сообщают используемый диапазон, покрывающий весь лист. Оба приложения задают размер каждой строке и столбцу вплоть до строки 1048576 и столбца 16384; пустые строки с автоматической высотой теперь сохраняют высоту по умолчанию, а размеры столбцов, дотягивающиеся до последнего столбца, становятся стандартной шириной столбцов листа. Файл Excel на 10 строк после открытия и повторного сохранения сжимается примерно с 2,8 МБ до нескольких КБ
- Высоты строк, заданные вручную, и автоматические высоты строк с содержимым (например, строк, растянутых под перенос текста), по-прежнему сохраняются
- При сохранении в ODS на столбцах без собственной ширины записывается стандартная ширина столбцов листа (
StandardWidth); раньше она терялась, поскольку в ODS нет задаваемой по умолчанию ширины столбцов для всего листа
Версия 2.384.70
Исправлено
- Файлы ODS, сохранённые Excel или LibreOffice, снова открываются за миллисекунды. Оба дополняют каждую строку вплоть до столбца 16384 и добавляют блок-заполнитель вплоть до строки 1048576; файл на 10 строк из Excel раньше открывался дольше 5 минут, а файл из LibreOffice вообще не открывался до конца
- Пустые ячейки-заполнители, выглядящие в точности как стиль ячейки Default документа, больше не превращаются в отформатированные пустые ячейки; лист Excel на 10 строк раньше приобретал около 180 000 таких ячеек. Пустые ячейки с собственной заливкой, границей, шрифтом, выравниванием, числовым форматом или защитой по-прежнему сохраняются
Версия 2.384.69
Исправлено
- Условные форматы, сохраняемые в ODS, теперь видны в Excel. Правила значений (равно, между, больше и так далее) и правила-формулы дополнительно записываются как стандартные условия ODF
style:mapна покрываемых ими ячейках — единственной форме, которую читает Excel; раньше Excel открывал ODS-файлы HotXLS вообще без этих правил - LibreOffice теперь импортирует правила значений ODS, записанные HotXLS, с их настоящим оператором и границами; раньше каждое такое правило превращалось в «равно 0»
- При открытии файла ODS читаются условные форматы, сохранённые как условия
style:map— в том виде, какой пишут Excel и другие производители ODF. Если файл дополнительно несёт те же правила в собственной форме LibreOffice, каждое правило читается один раз - При открытии файла ODS читается запись правил значений в стиле LibreOffice (
=5,between(1,10),!="x"); файлы от более ранних версий HotXLS по-прежнему открываются как раньше
Версия 2.384.68
Исправлено
- Формулы, применяющие оператор к многоклеточному диапазону или инлайн-массиву — например
=SUM(A1:B1*{10,100}),=SUM((A1:B2>2)*1)или=MAX(A1:B2-1), — сохраняются так же, как их хранит Excel 365, поэтому Excel показывает тот же результат, что и HotXLS: в XLSX как формулы динамического массива одной ячейки, в XLS как формулы массива одной ячейки. Раньше Excel открывал их с неявным пересечением (=SUM(@A1:B1*@{10,100})) и показывал #VALUE! или неверное значение - Формулы массива XLS записывают свои ссылки и константы массивов в форме массива, как это делает Excel; раньше Excel вычислял формулы массива, записанные HotXLS, с неявным пересечением
- Файлы XLSX с формулами динамического массива (включая созданные через
SetDynamicArrayFormula) открываются в Excel; раньше Excel отвергал весь файл, потому что метаданные динамического массива использовали идентификатор расширения в другом регистре
Версия 2.384.67
Исправлено
- Текстовые сравнения в обоих движках следуют порядку Excel: регистр игнорируется и используется пословная сортировка системной локали, поэтому дефисы и апострофы влияют только при прочих равных (
"a-b">"ab"— TRUE), а остальная пунктуация сортируется перед цифрами и буквами ("a~b">"ab"и"a_b">"ab"— FALSE). Это касается операторов сравнения, критериев>text/<textв COUNTIF, SUMIF, семействе *IFS и функциях баз данных, а также сравнений массивов, поисков, функций в духе SORT и сортировки диапазонов - VLOOKUP и HLOOKUP сравнивают текст без учёта регистра, так что
VLOOKUP("ABC",...)находит "abc", как в Excel
Версия 2.384.66
Исправлено
- Условное форматирование на основе формул, записанное в ODS, теперь распознаётся LibreOffice: правило сохраняется как
formula-is(...)со своей базовой ячейкой — в том виде, какой сам LibreOffice и записывает. Раньше LibreOffice читал любое такое правило как простое правило «значение ячейки равно 0» - Формулы условного форматирования, записываемые в ODS, переводят инлайн-константы массивов, объединения, ссылки на целые столбцы и целые строки и сохраняют маркеры
$так же, как формулы ячеек (COUNTIF($A:$A,A1)>1превращается вCOUNTIF([.$A:.$A];[.A1])>1) - При открытии файла ODS читается и условное форматирование на основе формул, записанное LibreOffice (
formula-is), а также файлы от более ранних версий HotXLS
Версия 2.384.65
Исправлено
- Ссылки на целые столбцы и целые строки (
A:A,$A:$B,1:1,$1:$2) в формулах, записанных в ODS, используют ссылочную форму OpenFormula ([.A:.A]). Раньше Excel открывал такие ячейки как=SUM(A:(A))с #NAME? или выбрасывал формулу; файлы ODS от HotXLS теперь показывают одни и те же формулы и значения в Excel и LibreOffice
Версия 2.384.64
Исправлено
- Функции баз данных (DSUM, DCOUNT, DCOUNTA, DAVERAGE, DGET и остальные) трактуют текстовый критерий без оператора как «начинается с», как это делает Excel:
abв диапазоне критериев совпадает с abc, ab и AB, а подстановочные знаки по-прежнему работают (a?совпадает с любой записью из двух и более символов, начинающейся с a).=abи<>abпо-прежнему сравнивают запись целиком
Версия 2.384.63
Добавлено
- Формулы могут содержать инлайн-константы массивов вроде
{1,2;3,4}(столбцы разделяются запятыми, строки — точками с запятой; числа, текст, TRUE / FALSE и значения ошибок) и объединения ссылок вроде(A1:B2,D4)в обоих движках, XLS и XLSX; раньше их ввод завершался ошибкой «invalid formula syntax» - Константы массивов вычисляются как массивы (
=SUM({1,2}*{3,4}),=ROWS({1,2,3;4,5,6}),=SUMPRODUCT(A1:A2,{1;10})), а объединения работают в SUM, COUNT, AVERAGE, MIN, MAX и COUNTA, в AREAS, в ISREF и в аргументе area_num функции INDEX
Исправлено
- Файлы XLS хранят константы массивов так, что Excel их читает: раньше константа записывалась как ссылка, и Excel показывал её как
=#N/A; формулы XLS, содержащие константы массивов или объединения, тоже читаются обратно с текстом формулы
Версия 2.384.62
Исправлено
- Оператор пересечения (пробел между двумя ссылками) возвращает ячейки, которые покрывают обе ссылки, как в Excel:
=SUM(A1:B2 B1:B2)— это 6, а не 2, ссылки без общей ячейки дают #NULL!, а пересечение можно передать функциям, принимающим ссылки, например ROWS, COLUMNS и INDEX. Это касается обоих движков, вычисляемых формул и формул, хранящихся в ячейках - Файлы XLS сохраняют формулы с пересечением пригодными для Excel: диапазоны, на которые ссылаются, теперь записываются как ссылки, поэтому Excel больше не читает
=SUM(A1:B2 B1:B2)как=SUM(@A1:B2 @B1:B2)и не показывает #VALUE! - Пересечение, используемое как одиночное значение, при более чем одной общей ячейке берёт ячейку из строки или столбца формулы, как и любая многоячеечная ссылка
Версия 2.384.61
Исправлено
- SUMPRODUCT принимает выражения с массивами вроде
(B1:B2>0)*1,--(B1:B2>0),B1:B2*C1:C2и одиночный аргумент в обоих движках, XLS и XLSX; раньше они возвращали #N/A. Аргументы разных форм возвращают #VALUE!, ошибка внутри любого аргумента возвращается наружу, а текст и логические значения считаются за 0, как в Excel - Выражения с операторами над диапазонами внутри SUM, COUNT, AVERAGE, MIN, MAX и COUNTA вычисляются поэлементно, как при динамических массивах Excel:
=SUM((B1:B2>0)*1)считает обе строки, а не использует только первую ячейку - TRUE считается за 1 в арифметике:
=TRUE*1возвращал -1 - Поэлементные сравнения трактуют пустой элемент как 0, "" или FALSE, чтобы он сошёлся с другой стороной, и сравнивают логические значения как логические; склейка логического значения через
&в массиве даёт TRUE / FALSE
Версия 2.384.60
Исправлено
- Поиск и замена с подстановочными знаками и сравнением по всей ячейке (
FindText,ReplaceText,FindTextIn,ReplaceTextInв обоих движках) сопоставляет всю ячейку так, как это делает Excel:a*bтеперь находитabcb, которое раньше отвергалось, потому что сопоставление останавливалось на первойb - В поиске и замене с подстановочными знаками
~делает следующий за ним символ буквальным, а~в конце игнорируется, как в Excel:a~bнаходитab, аa~~b—a~b
Версия 2.384.59
Исправлено
- Время создания и последнего изменения документа XLSX (
Created,Modified) и пользовательские свойства с датами теперь правильно читаются, когда в метке есть дробные секунды (2026-03-15T08:30:00.123Z) или смещение часового пояса (+08:00,-05:00): время конвертируется в локальное, а не принимается за локальное без изменений - Метки только с датой (
2026-07-01) читаются как эта дата; метки со временем, но без зоны, которых формат W3CDTF не допускает, по-прежнему читаются как локальное время
Версия 2.384.58
Исправлено
- XLSX AutoFit через
TXLSAutoFit(FitXlsxSheet,FitXlsxSheetColumns,FitXlsxSheetRows,MarkSheet) измеряет каждую ячейку тем шрифтом, каким она отображается; с 2.384.46 брался следующий шрифт из списка шрифтов книги, поэтому жирный заголовок мог быть измерен мелким шрифтом другой ячейки и выйти слишком узким - AutoFit использует и шрифт, который ячейка наследует от стиля своей строки или столбца
Версия 2.384.57
Исправлено
- «Точность как на экране» (
FullPrecision = False) в движке XLSX теперь округляет так же, как Excel и движок XLS: процентные форматы сохраняют два лишних десятичных знака (0.1234, показанный как0.0%, сохраняется как 0.123, а не 0.1), отрицательные и нулевые значения используют собственную секцию формата, а половинки округляются от нуля (2.5, показанный как0, сохраняется как 3, а не 2) - Оба движка при «точности как на экране» учитывают и запятые для масштабирования до тысяч: 12345.678, показанный как
0.0,(12.3), сохраняется как 12300, как в Excel - Логический результат формулы в ячейке с числовым форматом больше не превращается движком XLS в -1 из-за «точности как на экране»
Версия 2.384.56
Исправлено
- Файлы ODS, записанные HotXLS, декларируют пространства имён своих префиксов формул, так что LibreOffice вычисляет формулы, а не показывает #VALUE! в каждой ячейке с формулой
Версия 2.384.55
Исправлено
- Формулы, записанные в ODS, сохраняют свой смысл: инлайн-массивы используют разделитель строк OpenFormula (
{1,2;3,4}превращается в{1;2|3;4}вместо одной строки), объединение ссылок вроде(A1,B2)становится оператором~, а не двумя аргументами функции, и абсолютные ссылки сохраняют свои знаки$ - При чтении такого объединения обратно из ODS больше не добавляется вторая пара скобок, поэтому эти формулы без изменений переживают круговой путь из XLSX в ODS и обратно в XLSX
Версия 2.384.54
Исправлено
- Файлы XLS с защитой паролем, сохранённые в формате Excel 5.0/95 (XOR-обфускация), теперь открываются в Excel. Ключ, записанный в файле, выводится из пароля, а не случаен, а обфускационный массив использует битовый поворот, которого ждёт Excel; раньше Excel сообщал о неверном пароле для каждого такого файла, а после исправления одного лишь ключа — о том, что файл повреждён
- Книги с XOR-обфускацией читаются тем же исправленным массивом, поэтому файлы, чей ключ совпадает с паролем, расшифровываются так, как Excel их шифрует; XOR-файлы, записанные прежними версиями HotXLS, по-прежнему открываются
Версия 2.384.53
Исправлено
- Сравнение пустой ячейки с логическим значением трактует пустую ячейку как FALSE в обоих движках, XLS и XLSX, как и Excel: когда A1 пуста,
=A1=FALSEи=A1<TRUEтеперь возвращают TRUE, а=A1=TRUEвозвращает FALSE. Раньше пустая ячейка сравнивалась как 0, что стоит ниже любого логического значения
Версия 2.384.52
Исправлено
- COUNTIF, COUNTIFS, SUMIF, SUMIFS, AVERAGEIF, AVERAGEIFS и функции баз данных сопоставляют текстовые критерии по подстановочным правилам Excel в обоих движках, XLS и XLSX:
~*и~?совпадают с буквальной звёздочкой или вопросительным знаком, квадратные скобки — обычные символы, а критерий без*или?— простое сравнение без учёта регистра. Раньше критерий вроде"[x]"читался как набор символов,"~*"не совпадал со звёздочкой, а кривой шаблон молча не совпадал ни с чем - Критерии
"<>text"считают числа, логические значения и пустые ячейки не равными, а одинокий"<>"считает каждую непустую ячейку, как в Excel; сравнение текста при<>теперь без учёта регистра - Сопоставление с подстановочными знаками в MATCH и XLOOKUP трактует
~как escape для символа, который следует за ним, и игнорирует~в конце, как и Excel
Версия 2.384.51
Изменено
- Снимки ячеек только для чтения хранят имена листов в общем хранилище UnicodeString; SheetName теперь свойство WideString, которое читается и пишется с тем же обычным синтаксисом чтения и присваивания, что и раньше, но его сырой адрес поля и прежний макет записи не поддерживаются; вызывающим придётся перекомпилировать код против этого выпуска
- Вывод отчёта в пустой целевой поток пропускает ненужный резервный снимок, сохраняя при этом откат содержимого и позиции целевого потока, если вывод сорвётся
- Глубокие аудиты формул обрабатывают числовые кэши эффективнее, сохраняя кэшированные значения Variant, результаты вычисления и обнаруженные замечания
Исправлено
- Вставка из буфера обмена в XLS и XLSX захватывает данные BIFF8 и резервный текст вместе, под одной блокировкой буфера обмена, так что оба формата приходят из одного состояния буфера; читаемый BIFF8 остаётся пригодным, когда его текстовый спутник получить не удаётся, недоступный текст сам по себе ячеек не вставляет, а существующая политика повторных попыток открытия буфера обмена не меняется
- Неудачная публикация обязательного текста или BIFF8 в буфер обмена сохраняет исходный код ошибки Win32 на протяжении очистки, так что вызывающий может получить диагностику сбоя сразу после вызова
- Читатель текста буфера обмена с одной попыткой сохраняет нативные ошибки получения данных на протяжении очистки буфера обмена, не меняя своего поведения при повторных попытках
Версия 2.384.50
Изменено
- Аудиты символов формул быстрее работают на разреженных книгах XLS, сохраняя обнаруженные замечания и их порядок
Версия 2.384.49
Исправлено
- Примеры WorkbookAudit (Delphi и C++Builder):
AuditReport.jsonпишется без UTF-8 BOM, чтобы файл принимали строгие JSON-парсеры; листы XLS сообщают свой диапазон автофильтра; определённые имена XLSX, указывающие на другую книгу, показывают связанный файл вместо его индекса; запуск из командной строки больше не перезаписывает сохранённые настройки; пустое поле папки откатывается к папке программы вместо корня диска; неудачное сохранение примера попадает в журнал вместо отчёта о созданном файле - Примеры ApiTour: если пересборка демонстрационной книги проваливается, предыдущая книга сохраняется, так что кнопки экспорта больше не падают; книги освобождаются, когда построение выбрасывает исключение; HTML-экспорт пишет свои ошибки в журнал; в журнале перечисляются пять реально созданных условных форматов
- Примеры ExcelGraphics: неподдерживаемый тип картинки выдаётся сообщением вместо сохранения пустого листа, а диалог открытия перечисляет только поддерживаемые форматы
- Примеры OdsExport сверяют размер шрифта в проверке round-trip и возвращают ненулевой код выхода, когда проверка или сохранение проваливаются; пример OdsImport для C++Builder проверяет результат сохранения и больше не создаёт пустых ячеек при выводе отчёта
- Примеры DataExport / ExportWithColoring сужают только первый столбец, как и сказано в их комментариях, а экспортные примеры для C++Builder открывают диалог сохранения в папке программы
- Readme примеров перечисляют те API и выходные файлы, которые примеры реально используют
Версия 2.384.48
Исправлено
- Время создания и последнего сохранения документа теперь пишется в UTC, как того требуют форматы файлов, а читается обратно как локальное время: XLSX
Created/Modifiedи пользовательские свойства с датами, а также XLSCreatedDate/LastSavedDate. Раньше локальное время сохранялось как будто это UTC, поэтому Excel и Проводник Windows показывали метки со сдвигом на смещение часового пояса; значения, которые HotXLS сам записывает и читает, не изменились
Версия 2.384.47
Исправлено
- Файлы XLS с XOR-обфускацией (парольная защита книг Excel 5.0/95,
EncryptionType = xletXor): позиция ключа для каждой записи теперь следует спецификации формата файла — так же, как её читают и пишут другие табличные приложения. Раньше HotXLS мог читать только собственные XOR-файлы, а любая запись с длиной, не кратной 16, декодировалась как мусор
Версия 2.384.46
Исправлено
- XLSX AutoFit (
FitXlsxSheet,FitXlsxSheetColumns,FitXlsxSheetRows,MarkSheet) измеряет каждую ячейку в её собственном шрифте, размере, жирности и курсиве вместо постоянного Arial 10, поэтому текст Calibri 11, жирные заголовки и крупные титулы больше не выходят слишком узкими - XLSX AutoFit измеряет текст так, как его показывает числовой формат (даты, валюта, проценты), а не сырое сохранённое значение
- XLSX AutoFit удерживает подобранные ширины столбцов в пределах
MaxWidth; раньше отступ ячейки добавлялся уже после применения ограничения - XLSX AutoFit подбирает высоту строк для ячеек с переносом текста в столбцах без явной ширины, отталкиваясь от ширины листа по умолчанию; раньше такие ячейки мерились как одна строка, и строка выходила слишком низкой
Версия 2.384.45
Исправлено
- Книги XLS: критерии
ApplyAutoFilterвроде'>=100'или'=2.5'теперь сохраняются как числовые условия; раньше они сохранялись текстом, Excel сравнивал их как текст, и фильтр прятал все числовые строки. Значение без оператора сравнения (например,'North'или'100') по-прежнему сохраняется текстом — так Excel хранит выбранный элемент списка Criteria1.DataTypeдля таких критериев сообщает 4 (число) вместо 6 (текст);Criteria1.Valueпо-прежнему читается как 100
Версия 2.384.44
Исправлено
INDIRECTс текстом ссылки в стиле A1 читал ячейку на строку ниже и столбец правее (INDIRECT("D1")возвращал E2) — и в книгах XLS, и в XLSX; текст R1C1 и так был корректным. Ссылка за последней строкой или столбцом теперь возвращает#REF!
Версия 2.384.43
Исправлено
- Книги XLSX: формулы теперь могут ссылаться на весь лист 1 048 576 × 16 384. Ссылки за столбцом IV или строкой 65 536 (
=XFD1,=A100000,=SUM(XFC1:XFD1),Data!C1048576) раньше отвергались на вводе как неизвестные имена или вычислялись в ошибку; теперь они разбираются, считаются, сдвигаются при вставке строк и столбцов и сохраняются как написано - Книги XLSX: ссылки на целый столбец и целую строку (
A:A,1:1) покрывают лист целиком, поэтомуROWS(A:A)возвращает 1 048 576, аSUM(A:A)учитывает значения ниже строки 65 536;ADDRESSвозвращает трёхбуквенные столбцы вроде$XFD$1 - Книги XLS: ссылки на последнюю строку и столбец листа 65 536 × 256 (
=A65536,=IV1) принимаются; раньше они отвергались как неизвестные имена
Версия 2.384.42
Исправлено
- Унаследованные юниты
lxRows/lxCols(оставлены для совместимости исходников; классы книг их не используют): индекс строки больше 1 048 575 бросаетERangeErrorвместо закольцовывания на строку 1, запись ROW больше не помечает каждую смену уровня структуры как свёрнутую, а запись COLINFO для столбца без собственных настроек использует значения по умолчанию вместо падения
Версия 2.384.41
Исправлено
- Сборки Lazarus / Free Pascal, компилируемые в режиме ANSI-строк: временные файлы, чей путь содержит символы вне системной кодовой страницы, теперь удаляются при очистке; раньше их имена сохранялись с потерями, и файлы оставались валяться во временной папке
Версия 2.384.40
Исправлено
TlxCellMMU(упакованное хранилище ячеек) бросаетEInvalidOperation, когда ячейка пишется не по порядку строк внутри 256-строчного блока или поверх существующей ячейки, иERangeError— при отрицательной позиции или столбце за 65 534; раньше такая запись молча портила соседнюю строку. Собственные массовые записи библиотеки и так держат порядок строк, так что их это не касается
Версия 2.384.39
Изменено
- Книги XLSX: присваивание
TXLSXWorksheet.TabColorтеперь заодно устанавливаетTabColorIsAutoв False, поэтому цвет ярлыка показывается без второго присваивания — как и свойства цвета шрифта, заливки и границ. Последующая установкаTabColorIsAutoв True по-прежнему убирает цвет ярлыка
Версия 2.384.38
Изменено
- Книги XLS:
TXLSWorksheet.AddPivotTableтеперь считаетDestRowиDestColиндексами с единицы — какCells[Row, Col], документация и движок XLSX;AddPivotTable('Data!A1:C9', 3, 1, ...)ставит сводную таблицу в A3. Код, передававший индексы с нуля, должен прибавлять 1, а якорь 0 или вне листа теперь возвращаетnil - Книги XLS: позиции в
TXLSPivotTable(отFirstRowдоFirstDataCol) и исходный диапазон вTXLSPivotCache(отSourceFirstRowдоSourceLastCol) теперь индексируются с единицы и для новых, и для открытых сводных таблиц, так что один и тот же код читает одни и те же ячейки в обоих движках, а сводная таблица, скопированная между ними, остаётся на своём месте
Версия 2.384.37
Исправлено
- Книги XLSX: сводная таблица, размещённая ниже строки 65 535 или вытолкнутая туда вставкой строк, сохраняет свою реальную позицию; раньше якорь обрезался до 16 бит, и сохранённая сводная таблица попадала не на те строки
- Свойства позиции сводной таблицы (
FirstRow,FirstCol,LastRow,LastCol,FirstHeaderRow,FirstDataRow,FirstDataCol) теперь имеют типIntegerвместоWord - Книги XLSX:
AddPivotTableиAddPivotTableCopyвозвращаютnil, когда якорь лежит вне листа или скопированный блок вышел бы за последнюю строку или столбец, вместо записи сводной таблицы, которую Excel отвергает
Версия 2.384.36
Исправлено
- Примеры C++Builder XlsTables, XlsCondFormat12, XlsCreateChart и InteractiveFeatures пишут свои текстовые столбцы как текст; передача
const wchar_t*вOleVariantвыбирала конструкторbool, и каждый заголовок и подпись превращались в TRUE - Пример DefinedNames перечисляет имена XLS с индекса 1 вместо падения на индексе 0, WorkbookAudit считает внешние ссылки в именах книг XLS, а FileMonitor пишет
Monitored.xlsxвместо опечатанного.xlsxx, из-за которого каждое чтение имени листа проваливалось - Примеры Pictures и OdsExport встраивают корректный PNG; байтовый литерал портился при строковом преобразовании, а длины чанков в Pictures были неверными
- ApiTour вычисляет свой шаг
DEMOADDна листе API Tour, а не на активном листе Dashboard, где текстовый аргумент мог прервать запуск; классический тур в C++Builder теперь показывает результат шага - FreezePanes, QuickStart и ApiTour закрепляют ровно свои строки и столбцы заголовка;
FreezePanesпринимает количества, а не первую прокручиваемую ячейку - Цвета условного форматирования в ApiTour, CondFormatGallery, OdsExport и WorkbookAudit задаются в BGR, как того ждёт API, поэтому гистограммы данных и цветовые шкалы показывают задуманные цвета; правила top-N, дубликатов и выше среднего в CondFormatGallery получили заметную подсветку
- MemoryDataExport и HtmlExport больше не рапортуют об успешных экспортах CSV, HTML и RTF как о провалах (эти писатели возвращают 0 при успехе), а MemoryDataExport пишет все три файла, даже если один из них не удался
- Примеры, которые сохраняют, а затем сообщают о файле или открывают его (QuickStart, ExcelGraphics, HotXLSInMemory, OrderCalc, PurchaseOrder и несколько консольных), проверяют результат сохранения вместо объявления успеха, когда файл заблокирован
- ConversionWorkbench считает любой отрицательный результат писателя провалом и сначала удаляет старый вывод, так что устаревший файл больше не маскирует неудавшуюся конвертацию; версия для C++Builder экспортирует каждый лист в HTML
- InvoiceTemplate, OrderCalc и DataExport больше не зависят от форматов чисел и дат Windows: формулы налога, цены и пороги дат работают на системах с десятичной запятой или датой, начинающейся с года
- Мелкие правки: итоги в QuickStart используют тёмный текст на светлой заливке, DateSystems показывает сырые серийные номера дат и корректную дату эпохи 1904, CrossWorkbookCopy держит объединённые ячейки вне таблицы, CrossWorkbookCopyXls использует список через запятую и настоящий светло-голубой, Hyperlinks показывает задуманный текст ссылки, SheetProtection корректно описывает и задаёт допустимые действия, OdsImport больше не создаёт пустых ячеек при сканировании, InteractiveFeatures сохраняет книгу без VBA-содержимого как .xlsx, WorkbookAudit сообщает о зашифрованных файлах XLS и их VBA-проектах, ChartTypes держит диаграммы в стороне от данных, примеры экспорта данных для C++Builder находят Demos.mdb в папке вывода IDE, а FormulaFunctions проверяет переоткрытую ячейку и считает неудачи переоткрытия
Версия 2.384.35
Исправлено
- Присваивание цвета шрифту, заливке, стороне границы или форматированному фрагменту XLSX теперь само по себе вступает в силу. Эти объекты стартуют с автоматическим цветом, и явный
Color,ForegroundColorилиBackgroundColorмолча отбрасывался, если одновременно не сбрасывался соответствующий флагColorIsAuto/ForegroundIsAuto/BackgroundIsAuto - Присваивание RGB-цвета заодно сбрасывает более ранний источник цвета — тему или индексированный, — который иначе пересилил бы его; присваивание темы или индексированного слота 0 и выше сбрасывает автоматический флаг
- Цвета границ, вставленные в книгу XLSX из буфера обмена, цвета границ классических книг при экспорте в XLSX и цвет шрифта, переданный в
TXLSXComment.SetFont, теперь записываются, а не теряются, вытесненные автоматическим цветом
Версия 2.384.34
Исправлено
- Элементы промежуточного итога, общего итога и пустые элементы в списке элементов поля сводной таблицы больше не читаются как элементы данных; копирование такой сводной таблицы раньше записывало элемент, указывающий на индекс кэша -1
- Поля сводной таблицы из файлов Excel сохраняют свой промежуточный итог по умолчанию: Excel опускает
defaultSubtotal, когда он включён, а HotXLS считал отсутствующий атрибут выключенным - Поля кэша сводной таблицы, чьи общие элементы не задают
containsString, читаются как текстовые поля — согласно умолчанию схемы, — а не как смешанные
Версия 2.384.33
Исправлено
- Сводные таблицы, записываемые движком XLSX, используют значения осей из схемы (
axisRow,axisCol,axisPage); более ранние версии писалиrowAxis/colAxis/pageAxis, что не является корректным OOXML. Файлы со старыми значениями HotXLS по-прежнему читает - Поля, используемые в области значений, помечаются
dataField="1", а поля без элементов больше не получают пустой список<items>, который схема не допускает - Скрытые и свёрнутые элементы сводной таблицы сохраняют своё состояние при копировании или пересборке, а список элементов каждого поля заканчивается элементами промежуточных итогов, которые Excel ждёт для своих функций итогов
- Поля кэша сводной таблицы несут числовой
numFmtIdвместо текстовогоGeneral
Версия 2.384.32
Исправлено
- Импорт ODS корректно конвертирует строки встроенных массивов:
{1;2|3;4}превращается в{1,2;3,4}вместо формулы, которую Excel не может разобрать - Импорт ODS конвертирует оператор объединения ссылок:
SUM([.A1:.B2]~[.C3])превращается вSUM((A1:B2,C3))
Версия 2.384.31
Исправлено
- Импорт ODS читает ячейки времени, чья длительность несёт часть даты, например
P0Y0M0DT12H30M15S, и недельные длительности вродеP1W, вместо отката к отображаемому тексту Mперед разделителемTв длительности ODS означает месяц, а не минуту; ненулевые годы и месяцы, у которых нет фиксированной длины, теперь откатываются к отображаемому тексту вместо превращенияP1Mв одну минуту
Версия 2.384.30
Исправлено
TGWmfEmfReadзакрывает метафайл, когда файл слишком короткий или повреждён, вместо того чтобы держать его заблокированным до выхода процессаTGWmfEmfReadсчитает placeable-WMF, чей заголовок задаёт ноль единиц на дюйм, файлом без размера вместо деления на нольTGWmfEmfReadхранит 32-битные размеры и границы вBSEWMF, в согласии с заголовком картинки, который он описывает
Версия 2.384.29
Исправлено
- Картинки WMF и EMF размером от 64 КБ и больше в классических книгах XLS переживают открытие и сохранение; их сохранённый и распакованный размеры обрезались до 16 бит, поэтому Excel не мог декодировать картинку в записанном файле
- Границы картинок-метафайлов вне диапазона -32768..32767 сохраняются вместо закольцовывания
Версия 2.384.28
Исправлено
TXMLWriterбольше не выдаёт невалидный XML, когда текст или значения атрибутов содержат управляющие символы, непарные суррогаты или U+FFFE / U+FFFF; символы, которые XML 1.0 не может представить, просто пропускаютсяTXMLWriterпишет carriage return в тексте элемента как символьную ссылку, поэтому текст читается обратно без изменений вместо превращения CR в LFTXMLWriterбросает ошибку, когда целевой поток принимает меньше байтов, чем записано, — например, на полном диске, — вместо молча обрезанного файла
Версия 2.384.27
Исправлено
- Копирование диапазона, чьи формулы указывают выше или левее копируемого блока — например,
=B4+1, скопированной из B5, — теперь вставляется так, что ссылка по-прежнему указывает на строку выше; раньше она прилипала к исходной ячейке, и формула могла в итоге сослаться сама на себя - Данные Excel в буфере обмена, которые публикует HotXLS, держат скопированные ячейки на их позициях в листе, поэтому читающие их приложения видят исходные адреса
Версия 2.384.26
Исправлено
- Строковые помощники zlib (
ZCompressStr,ZDecompressStrи их in-place варианты) теперь обрабатывают всю строку; с Unicode-строками сжималась только первая половина текста, так что round trip терял данные
Версия 2.384.25
Исправлено
- Гиперссылки в классических книгах, у которых отображаемый текст помечен без флага сайта, читаются корректно, а гиперссылки с необычным типом цели больше не валят всё открытие целиком и не выдают искажённый подадрес
Версия 2.384.24
Исправлено
- Исключение, выброшенное обработчиком изменений файлового монитора, больше не останавливает монитор молча; он продолжает следить и сообщает о последующих изменениях
Версия 2.384.23
Исправлено
- Цвета темы с tint ниже -1 в повреждённом файле прижимаются к чёрному вместо выдачи случайных цветов при экспорте или печати
Версия 2.384.22
Исправлено
- Подключения к данным, созданные через API, сохраняются с атрибутом версии обновления, которого требует формат файла
- Подключение без имени или id либо с повторяющимся именем или id больше не валит открытие всей книги; запись остаётся как была и сохраняется обратно без изменений
Версия 2.384.21
Исправлено
- Изменение исходного кода VBA-модуля теперь вступает в силу в Excel: проект сохраняется так, что Office компилирует новый исходник вместо запуска закешированного скомпилированного кода старого
- Исходник VBA-модуля теперь сохраняется в сжатой форме, определённой форматом; последний блок каждого модуля записывался так, что Office считал его повреждённым
- Повреждённый directory-поток VBA больше не заставляет открытие книги виснуть, а запись модуля без информации о своём потоке больше не оставляет в проекте пустой модуль
Версия 2.384.20
Исправлено
- Определённые имена, загруженные из классической книги, сохраняют свои сдвинутые ссылки после вставки или удаления строк и столбцов и сохранения книги; раньше файл продолжал держать исходную ссылку
Версия 2.384.19
Исправлено
- Автоподбор только строк или только столбцов листа XLSX больше не зануляет ширину каждого измеренного столбца или высоту каждой измеренной строки, у которых не было явного размера
Версия 2.384.18
Исправлено
- Критерии автофильтра в классических книгах объединяются так, как были заданы: условия AND сохранялись как OR и наоборот, поэтому Excel показывал не те строки
- Логические критерии автофильтра сохраняются как TRUE или FALSE; раньше они хранились в форме, которую Excel читает как значение ошибки
Версия 2.384.17
Исправлено
- Даты создания и последнего сохранения классических книг теперь совпадают с Excel; раньше они записывались на день позже, а читались на день раньше
- Дата последнего сохранения хранится в положенном ей свойстве документа; раньше она попадала в слот количества страниц, где Excel и Windows не показывали её как дату
- Общее время редактирования хранится как длительность, поэтому Excel и Windows показывают реальное число минут вместо примерно 299 лет; значения времени, записанные прежними версиями, по-прежнему читаются корректно
Версия 2.384.16
Исправлено
- Правило уникальных значений в проверке импорта теперь сравнивает значения ячеек; раньше каждое значение в столбце после первого объявлялось дубликатом
- Добавление второго правила для того же столбца чисто заменяет первое; старое правило освобождалось, но всё ещё участвовало в проверке, а освобождение чекера завершалось invalid pointer operation
- Проверка листа больше не создаёт пустых ячеек для прочитанных пустых значений
- Режим «оставить только строки с нарушениями» больше не пишет за пределами своей таблицы строк, когда нарушение лежит ниже используемого диапазона, а строка заголовков вставляется над данными вместо перезаписи первого нарушения
Версия 2.384.15
Исправлено
- Чтение записи ZIP мелкими кусками больше не теряет последние байты записи, когда сжатые данные заканчиваются посреди повторяющейся последовательности, — из-за этого валидный XLSX мог провалиться с ошибкой размера записи
- Распаковка данных, распухающих за 2 ГБ, теперь бросает ошибку вместо крушения 64-битного процесса
- Поток распаковки возвращает все оставшиеся данные после исчерпания входа, а не останавливается раньше времени
Версия 2.384.14
Исправлено
- Чересстрочные PNG-картинки с 1, 2 или 4 битами на пиксель больше не пишут за пределами буфера изображения, что могло крашить программу или портить соседние пиксели при экспорте или печати книги с такими картинками
- Чересстрочные PNG-картинки корректно декодируются, когда проход начинается с фильтра Average или Paeth
- 2-битные полутоновые PNG-картинки теперь отображают свои настоящие уровни серого, а чтение одиночных пикселей 2-битных полутоновых и палитровых картинок возвращает правильные цвета
- PNG-картинки, у которых за сжатыми данными идут лишние байты, больше не подвешивают декодер, а корректные картинки с большим чанком данных изображения больше не отвергаются с ошибкой CRC
- Картинки с неверной битовой глубиной или длиной чанка за концом файла аккуратно отвергаются вместо падения или выделения гигабайтов памяти
- Текстовые чанки, сохраняемые в PNG-картинки, больше не обрезаются и не портятся
Версия 2.384.13
Исправлено
- Классические книги, зашифрованные RC4, теперь используют корректный хеш пароля для паролей в 28 символов и длиннее, поэтому открываются в Excel; пароли от 32 символов раньше давали файлы, которые не мог открыть даже сам HotXLS
- RC4-пароли длиной до 255 символов принимаются при открытии, а файлы с паролями из 28–31 символа, сохранённые прежними версиями, по-прежнему открываются
- Повреждённый заголовок RC4 CryptoAPI с чрезмерной длиной сообщается как испорченный файл вместо общей ошибки
Версия 2.384.12
Исправлено
- Книги с Agile-шифрованием, объявляющие SHA-256, теперь корректно расшифровываются; сегменты данных всегда расшифровывались векторами инициализации SHA-512, поэтому книга не открывалась даже с правильным паролем
- Agile-файлы, у которых данные ключа и шифратор ключа пароля используют разные хеш-алгоритмы, больше не сообщаются как файлы с неверным паролем
- Счётчик итераций выше лимита формата в 10 000 000 отвергается сразу, вместо того чтобы часами загружать CPU
- Обрезанный верификатор пароля больше не читает за пределами своего буфера, а ключ целостности, записываемый
SaveAsEncryptedAgile, теперь имеет длину, которую требует формат
Версия 2.384.11
Исправлено
- Книги, сохранённые с
SaveAsEncrypted, теперь открываются в Excel. Ключ Standard Encryption из ECMA-376 выводился без финального шага, а размер пакета шифровался вместе с данными, поэтому Excel отвергал пароль; книги, зашифрованные так же Excel 2007, теперь тоже открываются - Зашифрованные книги, сохранённые прежними версиями HotXLS, по-прежнему открываются с правильным паролем
- Повреждённый заголовок шифрования с чрезмерной длиной больше не вызывает access violation при открытии
Версия 2.384.10
Исправлено
- Копирование и вставка формул между ячейками, как и сортировка с переносом формул, больше не двигают абсолютные ссылки:
$A$1остаётся на месте,A$1двигает только столбец, а$A1— только строку, как в Excel - Имена функций, похожие на адреса ячеек, например
LOG10(, больше не сдвигаются как ссылки при вставке формулы, так что вставленная формула больше не превращается вLOG11(и#NAME? - Ссылки с именем листа, например
Sheet2!A1или'My Sheet'!B3, теперь при вставке сдвигаются так же, как обычные - Вставка текста, начинающегося с
=или апострофа, в классическую книгу оставляет его текстом; раньше он превращался в формулу или терял первый символ
Версия 2.384.9
Исправлено
- Числовые форматы прошедшего времени вроде
[h],[mm]и[ss].00теперь распознаются как форматы времени, а не принимаются за имена цветов; при выключенной «точности как на экране» (FullPrecisionвFalse) длительность с форматом[ss].00больше не округляется как обычное число с двумя десятичными знаками, из-за чего значения порядка нескольких секунд раньше превращались в ноль - Минутные токены, отделённые литералом от часов или секунд — как в
h:mmиmm:ss, — при разборе числового формата теперь читаются как минуты, а не как месяцы
Версия 2.384.8
Исправлено
- Копирование текста, HTML или табличных данных в буфер обмена Windows теперь использует корректного временного владельца, в том числе в консольных программах и рабочих потоках без окна приложения; скопированные данные остаются доступны и после уничтожения этого владельца
- Неудавшаяся публикация в буфер обмена теперь освобождает все выделенные блоки данных, которые Windows не приняла, включая сопутствующие текстовые и HTML-блоки, когда публикация таблицы проваливается
Версия 2.384.7
Исправлено
- Компиляция библиотеки из исходников в RAD Studio от XE5 до RAD Studio 12 Athens ломалась после появления поддержки Free Pascal и фикса високосного дня в
DATE: эти компиляторы всё равно парсят проверку версии Free Pascal, хоть и пропускают её, и отвергают числовое приведение, стоящее за спецслучаемDATE(1900,2,29). Оба места теперь используют формы, которые принимает любой поддерживаемый компилятор, так что весь диапазон RAD Studio снова собирается
Версия 2.384.6
Исправлено
- При копировании ячеек с примечанием в классической книге .xls — внутри книги, в другую книгу или сдвигом строк и столбцов — текст примечания сохранялся, но его форматированные фрагменты терялись, и каждая копия показывала всю заметку одним шрифтом; теперь фрагменты путешествуют вместе с текстом, а при переносе между книгами их шрифты добавляются в книгу назначения
- При копировании целого листа через
Sheets.AddCopyв классической книге .xls терялись примечания на ячейках без значений и форматирования; теперь эти примечания тоже копируются - Примечания в книгах .xlsx открывались повторно без имени шрифта, зачёркивания и цвета своих форматированных фрагментов, а сохранённые фрагменты никогда не несли подчёркивания и верхнего/нижнего индекса; теперь всё это переживает сохранение и повторное открытие, включая фрагменты, скопированные из другой книги через
CloneRangeTo
Версия 2.384.5
Исправлено
- Форматированные фрагменты в примечаниях и текстовых полях классических книг .xls больше не теряют свои шрифты при сохранении. Шрифт, использовавшийся только таким фрагментом, мог выпасть из сохраняемого списка шрифтов — чаще всего, когда HotXLS повторно сохранял книгу, которую уже сохранял однажды, и тогда фрагмент показывался в Excel шрифтом по умолчанию или подхватывал шрифт, добавленный тем временем; теперь эти шрифты сохраняются, а фрагменты перенумеровываются вместе с остальной частью списка шрифтов
TextRuns.FontIndexу примечаний и текстовых полей следует нумерации шрифтов из файла, где индекс 4 никогда не используется, а пятый шрифт имеет индекс 5; резервирование палитры для индексированных цветов шрифта теперь читает эти индексы так же
Версия 2.384.4
Исправлено
- Изменение нумерации шрифтов в 2.384.1 само и было багом: классические файлы .xls нумеруют шрифты так, как это делает Excel ([MS-XLS] §2.5.129), где индекс 4 никогда не используется, а пятый шрифт имеет индекс 5, но 2.384.1 перешла на простой подсчёт с нуля; в сохранённых книгах каждый пользовательский шрифт показывался в Excel на слот раньше (первый откатывался к шрифту по умолчанию), а книги, созданные в Excel, открывались с каждым пользовательским шрифтом, сдвинутым на слот позже. Сохранение и открытие снова следуют нумерации Excel, что проверено на книгах, записанных и прочитанных самим Excel
- Ячейки форматированного текста сохраняют шрифт каждого форматированного фрагмента при открытии, сохранении и копировании листов между книгами, включая фрагменты, чей шрифт не используется ни одной ячейкой напрямую
- Книги, сохранённые версиями с 2.384.1 по 2.384.3 и содержащие пять или более шрифтов, уже несут сдвинутую нумерацию, которую ни Excel, ни HotXLS не могут отличить от корректных данных; перегенерируйте их из исходников либо заново примените затронутые шрифты и сохраните снова
Версия 2.384.3
Исправлено
- Даты с 1900-01-01 по 1900-02-28 расходились с Excel на один день в обоих книжных движках, потому что календарь 1900 года у Excel учитывает фантомное 1900-02-29; чтение и запись теперь применяют задокументированную поправку,
DATE(1900,2,29)отвечает 1900-02-28 вместо#VALUE!, а таблица общих строк переживает встроенные NUL-символы и двухбайтовые кодовые страницы через границы записей без рассинхронизации - Сравнения выстраиваются в цепочку слева направо, как их вычисляет Excel, поэтому
=1<2<3теперь читается как(1<2)<3и возвращает FALSE, как Excel (TRUE главнее любого числа в сравнении), тогда как раньше группировалось как1<(2<3)и возвращало TRUE; пустой операнд в сравнениях равен и 0, и пустой строке; подстановочные критерии работают с «не равно» вCOUNTIFиSUMIFровно так же, как раньше с «равно»; суммирующий диапазонSUMIFи его аналогов меняет размер от левой верхней ячейки до формы диапазона критериев вместо обрезки; аINDIRECTучитывает второй аргумент (текст абсолютного R1C1) и отвергает мусор после ссылки YEARFRACс базисом 0 применяет NASD-поправки для конца февраля, которые уже реализованы вDAYS360, поэтому периоды, задевающие конец февраля, считаются правильно- Текст «endstream» внутри ячейки больше не может обрезать страницу PDF при сжатии потока, заплатка токена общего числа страниц сохраняет длину потока согласованной, когда сжатие пропускается, смещения объектов за пределами 32 бит дают явную ошибку вместо повреждения таблицы перекрёстных ссылок, а полутоновые и CMYK JPEG помечаются своим реальным цветовым пространством вместо
/DeviceRGB - Книга, у которой хранилище кэшей сводных таблиц было вырезано или обрезано, открывается с пометкой затронутых кэшей как неполных вместо провала всей загрузки и повторно сохраняет эти кэши через унаследованный инлайн-макет, а не с ошибкой
- Таблица общих строк, у которой объявленное число строк превышает то, что реально приходит по цепочке записей, теперь приводит к отказу открытия вместо молчаливого заполнения оставшихся ячеек пустыми строками
Версия 2.384.2
Исправлено
- При конвертации классической книги .xls в .xlsx молча терялись объединённые ячейки, стоявшие левее более раннего объединения в строке ниже; сканирование больше не переиспользует переменную used-range для области объединения
- XML-комментарий внутри списка расширений книги при каждом сохранении выписывался заново с удвоенными маркерами
<!--, и получался файл, который Excel обязан чинить; узлы комментариев теперь проходят сохранение и открытие байт в байт - Нераспознанные записи листа, снятые с открытого .xls, выпадали из каждого последующего сохранения, хотя и хранились для повторного воспроизведения, и утекали память при каждом открытии; теперь они сохраняются и воспроизводятся дословно через стандартный писатель записей
- Определённые имена длиннее 255 символов и комментарии к именам длиннее 65535 символов ломали кадрирование записи NAME при сохранении; теперь и то и другое отклоняется сразу
- Прерванное сохранение утекало буферы записей книги и листа, когда посреди записи срабатывало несовпадение шифрования; теперь сохранение освобождает буферы на любом пути выхода
- Писатель точечных патчей удалял исходный файл до того, как переименовать на его место замену, поэтому неудачное переименование уничтожало книгу; теперь подмена выполняется одним атомарным replace, который при сбое сохраняет оба файла
- Ссылки на ячейки в прямом читателе принудительно ограничены 16384 столбцами и 1048576 строками вместо приёма переполненных координат, некорректные целочисленные атрибуты откатываются к значениям по умолчанию вместо обрыва всего чтения, а даты с 1900-01-01 по 1900-02-28 конвертируются с учётом фантомного високосного дня Excel в обоих направлениях
- Значения атрибутов с табуляцией, переводом строки или возвратом каретки проходят сохранение и открытие без изменений вместо схлопывания в пробелы, а незакрытая entity в тексте элемента теперь отклоняется так же, как в ветке атрибутов
- Дословные копии ZIP-записей объёмом 4 ГиБ и больше, которые путь копирования не может корректно оформить, теперь отклоняются, как это уже делает потоковый писатель, вместо создания повреждённого архива
- Корпусный раннер пишет результаты атомарно, так что прерванный запуск не может уничтожить накопленные доказательства, записывает таймауты сборки вместо падения и переваривает кривые строки stage-trace; верификатор LibreOffice тоже пишет доказательства атомарно, а проба подмены файла снова реально собирает список антивирусных продуктов
Версия 2.384.1
Исправлено
- Каждый шрифт начиная с пятого записывался с индексом записи на единицу за концом списка шрифтов, поэтому Excel чинил книгу, а пользовательские шрифты возвращались как стандартный; и сохранение, и открытие теперь используют задокументированный индекс с нуля, так что пользовательские шрифты переживают полный цикл, а файлы, созданные в Excel, сохраняют свои шрифты при открытии в HotXLS
- Вычисление
=0^-1или отрицательного основания с дробным показателем роняло пересчёт исключением плавающей запятой вместо возврата#DIV/0!или#NUM! - Правила выражений условного форматирования, прочитанные из существующего .xls, повторно сохранялись как осиротевшая запись CF12 под обычным унаследованным заголовком, который Excel отбрасывает; теперь они сохраняют унаследованную форму записи и своё форматирование подсветки
- Оператор пересечения ссылок и неявное пересечение результатов увеличенного
OFFSETи многоячеечногоINDIRECTшли по неверной оси или отвергали корректные диапазоны из одной строки и одного столбца, возвращая чужую ячейку или#REF! - Потоковый читатель строк в классических .xls выдавал любой кэшированный булев формулы как FALSE и любую кэшированную ошибку как
#NULL! - Большие .xls, у которых контейнер составного файла превышает 109 FAT-секторов в заголовке, не открывались автономным читателем составных файлов, потому что цепочка расширения DIFAT никогда не проходила
- Пользовательские стили таблиц перечитывали цвета заливки и шрифта с перепутанными красным и синим каналами, из-за чего сохранённый стиль возвращался не того цвета
- Битые PNG-изображения внутри книги могли уронить процесс записью за границами буфера при встраивании изображения в PDF или безграничным сканированием текстовых чанков; встроенные PNG теперь проверяются по размерам, а некорректные чанки отклоняются
- Многопрямоугольные регионы EMF рисовались как их объемлющий прямоугольник, EMF-картинки без явного размера viewport масштабировались неправильно, а надстрочный текст рисовался ниже базовой линии на canvas, печати и метафайлном выводе
- Автоматически приоритизированные правила условного форматирования BIFF все носили приоритет 1, что Excel считает поводом для ремонта; автоматические приоритеты теперь уникальны в пределах листа, как у их аналогов в XLSX
- Стиль границы
xlSlantDashDotзаписывался какxlDashDotDotв выводе границ классического .xls - Обрезанная запись заголовка зашифрованной книги выбрасывала исключение сквозь
Openвместо возврата кода ошибки пароля, а несколько ошибочных путей утекали память при разборе битых файлов изображений или книг
Версия 2.384.0
Изменено
- Кэши сводных таблиц классического XLS сохраняются так, как их сохраняет Excel: записи каждого кэша уходят в собственный поток хранилища, а идентификатор потока, область кэша и определение источника — листа или именованного диапазона — пишутся один раз в глобальных данных книги; кэши, созданные старыми версиями HotXLS, сохраняют прежний инлайн-макет, пока не включено добровольное обновление кадрирования
- В книгах с паролем каждый поток кэша сводных таблиц шифруется как отдельный поток записей, который стартует с начала потока, а не продолжает позицию шифрования потока книги
Исправлено
- Сводная таблица могла указывать не на тот кэш после сохранения книги, где смешивались кэши, прочитанные из существующего файла, и кэши, созданные в коде; ссылка представления на кэш теперь следует фактическому порядку сохранения
- Каждый пакет HotXLS всё ещё нёс ресурс версии 2.379.7, а пересборка пакета в C++Builder могла вообще срезать ресурс версии; теперь все пакеты несут текущую версию
Версия 2.383.4
Исправлено
- Глубокий аудит формул теперь оставляет изменённые результаты доступными зависимым формулам, даже когда изменения укладываются в допуск отчёта, а явное применение обновляет эти неотчитавшиеся результаты
- Относительный допуск теперь соблюдается для кэшированных результатов двойной точности в обоих книжных движках, а неизменившиеся результаты избегают повторного сравнения
Версия 2.383.3
Исправлено
- Файловое сохранение книги теперь сохраняет родную ошибку Windows, когда готовый вывод XLSX, XLTX или ODS не может заместить целевой файл, включая случаи, когда очистка или callback прогресса меняет состояние ошибки потока
Версия 2.383.2
Исправлено
- Повторные копии полос отчёта и диапазонов переиспользуют поиск суффиксов определённых имён вместо повторного сканирования каждой предыдущей копии, сохраняя первое доступное имя, область листа и переиспользование имён, освобождённых поздними правками
Версия 2.383.1
Исправлено
- Перестроение зависимостей формул больше не сканирует предыдущие строки формул снова и снова, что удешевляет большие цепочки вычислений при сохранении ссылок на вывод массивов, межлистовых зависимостей и порядка поиска
Версия 2.383.0
Добавлено
- Шаблоны Excel без макросов можно сохранять как XLTX через явный выбор выходного формата — с файлами или потоками, с буферизованным или потоковым выводом
- Шаблонный вывод сохраняет формулы, определённые имена, области печати и метаданные листа, не меняя стандартное поведение сохранения книги; книги с VBA отклоняются до записи в целевой файл
Версия 2.382.5
Исправлено
- Фонетические настройки сохраняют требуемый индекс шрифта по умолчанию, поэтому Excel не отклоняет сохранённые книги, когда индекс равен нулю
- Динамические формулы области печати и объединения диапазонов с указанием листа переживают обратный цикл без добавления префикса листа к функции и без усечения ссылок внутри выражения
- Сгенерированные и сохраняемые части пакета совместно используют уникальные объявления content-type, а пользовательские свойства больше не конфликтуют с непрозрачными идентификаторами корневых отношений
Версия 2.382.4
Исправлено
- Скалярные ссылки на определённые имена используют пересечение с текущей строкой или столбцом, тогда как аргументы-диапазоны сохраняют свои полные диапазоны, что исключает ложные циклы зависимостей в кредитных шаблонах
- Арифметика формул со смешанными целыми числами и числами с плавающей запятой сохраняет точность плавающей запятой вместо усечения до четырёх десятичных знаков
- При пересчёте доступные прецеденты функций поиска обрабатываются до чтения их кэшей, что избавляет от устаревших счётчиков платежей и похожих результатов поиска
Версия 2.382.3
Исправлено
- AGGREGATE обрабатывает ошибки невычисленных ячеек и вложенную агрегацию с независимыми настройками выбора, сохраняет вычисления массивов и передаёт исходные типы ошибок
- При сохранении классического XLS существующие кэши формул сохраняются до явного пересчёта, включая корни общих формул и формул массива; общие формулы транслируют относительные ссылки для своих целевых ячеек
- Структурированные ссылки поддерживают обратные слэши и точки в именах таблиц, вложенный синтаксис текущей строки и экранированные имена столбцов, не меняя похожий текст внутри строк формул
- Условное форматирование XLSX сохраняет цвета RGB, явные флаги шрифта, стили подчёркивания, имена шрифтов, размеры и схемы
- Немодифицированные диаграммы сохраняют исходные определения и ненулевые смещения якоря, что исключает изменение цветов, позиций и размеров рядов
- Задание полей страницы больше не записывает неуказанную ориентацию страницы, а классический XLS сохраняет отсутствие импортированных полей страницы вместо добавления значений по умолчанию, меняющих размещение при печати
Версия 2.382.2
Исправлено
- Книги ODS, содержащие большие повторяющиеся диапазоны пустых строк, открываются и сохраняются без развёртывания каждой высоты строки и унаследованного стиля пустых ячеек в отдельные объекты
- Вывод ODS сохраняет явные высоты строк и компактные повторяющиеся строки со стилями, включая переопределения для отдельных строк и сброшенные высоты; диапазоны высот строк также переживают копирование листа, вставку и удаление строк, тайлинг и экспорт в XLSX
Версия 2.382.1
Исправлено
- При открытии и сохранении книг XLSX с настройками столбцов на полную ширину метаданные столбцов больше не сканируются многократно и растущий XML столбцов не копируется заново, что устраняет таймауты полного цикла в книгах с датами и шаблонах, сохраняя настройки столбцов
- Определения сводных таблиц в ODS сохраняют унаследованные объявления пространств имён XML, включая расширения производителя, поэтому сохранённый XML остаётся well-formed
Версия 2.382.0
Исправлено
- При сохранении классической книги XLS вложенные ячейки
SUBTOTALтеперь не попадают в охватывающие промежуточные итоги, сохраняя исходные кэшированные итоги вместо двойного учёта строк групп - Диаграммы XLSX загружаются только через отношение drawing, на которое ссылается каждый лист, поэтому не связанная с листом обычная drawing-часть больше не может продублировать диаграмму при обратном цикле
- Определения таблиц data-pilot OpenDocument переживают сохранение ODS, включая их исходные диапазоны, поля, целевые диапазоны, кнопки и атрибуты расширений производителя
- Параметры 0-7 функции
AGGREGATEтеперь следуют задокументированным правилам выбора для скрытых строк, ошибок и вложенныхSUBTOTAL/AGGREGATEкак в форме ссылок, так и в форме массива
Версия 2.381.0
Добавлено
- Срезы таблиц (Excel 2013+):
Worksheet.Slicers.Add(Table, ColumnName)создаёт представление среза для любого столбца таблицы от начала до конца — кэш среза с именемSlicer_<column>, зарезервированное определённое имя#N/A, расширение листаslicerListи drawing-якорь с разметкой совместимости и уведомлением fallback для старых версий Excel записываются автоматически, а само представление можно позиционировать, снабдить подписью и стилизовать черезCaption,ColumnCount,StartItem,StyleName,RowHeightиSetBounds - Модель обратного преобразования срезов: представления и кэши срезов разбираются при открытии (общие кэши переиспользуются между представлениями, а удаление последнего представления удаляет его кэш), неизменённые части и якоря срезов воспроизводятся побайтово, а кэш таблицы сохраняет привязку к своей таблице даже когда сохранение перенумеровывает идентификаторы таблиц
Исправлено
- Кэши срезов, записанные более ранними версиями, ссылались на идентификатор таблицы, который файл имел на момент открытия; когда при сохранении идентификаторы таблиц перенумеровывались по всей книге, устаревший
tableIdмог отправить Excel в режим восстановления. Теперь привязка отслеживает таблицу сквозь эту перенумерацию
Версия 2.380.0
Добавлено
- Waterfall- и Treemap-диаграммы: расширенные типы диаграмм Excel 2016 можно создавать, сохранять и снова открывать. Они сериализуются как отдельные части расширенных диаграмм со своим типом содержимого, привязкой к данным листа и drawing-якорем с разметкой совместимости, где для старых читающих версий оставлено уведомление fallback
- Treemap-диаграммы поддерживают иерархические категории: каждый уровень категорий ряда записывается и читается обратно как отдельный уровень внутри измерения категорий, с сохранением подписей листьев и родительских уровней
Версия 2.379.4
Исправлено
- Повреждённый или враждебный контейнер классического XLS больше не повреждает память при открытии. Считыватель составных файлов копировал целый сектор в мини-поток, даже если там ему принадлежала лишь часть, следовал по таблице распределения мини-потока за его концом, принимал размеры секторов, которые формат не определяет, и задавал размер таблицы распределения по непроверенному счётчику. Теперь цепочки секторов и мини-секторов защищены от зацикливания, а имя потока, заполняющее своё поле без терминатора, ограничивается
- Запись стиля, называющая индекс формата ячейки за пределами таблицы форматов, больше не выполняет запись по этому индексу. Счётчики ссылок в общих списках форматов и ключей проверяли только нижнюю границу, поэтому 12-битный индекс из файла мог выйти за границы массива
- Локальный заголовок файла, записанный с расширенными данными ZIP64, больше не выходит за границы буфера: заявленный размер заголовка теперь учитывает дополнительное поле из 28 байтов, которое модуль записи добавляет. Смещения записей и позиции в потоке отслеживаются как 64-битные значения, запись ZIP64 читается по длине из её дополнительного поля, а не по сигнальному значению, а запись крупнее 4 ГиБ отклоняется вместо регистрации её остатка
- Имя записи ZIP, содержащее разделитель Windows, нормализуется. Одиночная обратная косая черта никогда не преобразовывалась в прямую, поэтому
..\..\nameпроходил проверку на обход каталогов, которая разделяет по прямым косым чертам - Диапазон маски без верхней границы, например
[a-, больше не читает за концом маски, а при построении маски, начинающейся с набора символов, больше не происходит утечка набора на каждую маску. До обоих случаев можно добраться через критерии COUNTIF и SUMIF - Поиск по всей ячейке с подстановочными знаками теперь требует, чтобы шаблон совпадал со всей ячейкой, что соответствует и задокументированному поведению, и сравнению по всей ячейке без подстановочных знаков. Ранее
FindTextс шаблономabcсовпадал также с ячейкой, содержащейabcdef - Округление «точность как на экране» больше не применяется к ячейкам, числовой формат которых не содержит заполнителя цифры. Ячейка с форматом
Generalпо имени, текстовым форматом с@или форматом только из литералов округлялась до целого числа - Таблица общих строк больше не сообщает уникальных строк больше, чем записывает, больше не прикрепляет фрагменты форматированного текста удалённой строки к той строке, которая повторно использует её слот, и больше не создаёт запись продолжения, содержащую один лишь байт параметров, когда строка не помещается только из-за своего завершающего форматирования
- Импорт RTF больше не дублирует не-ASCII символы. За escape-последовательностью
\\uNследуют резервные символы, записываемые как\\'hh, которые логика пропуска не распознавала, поэтому каждый из них также выдавался как текст. Пропускаемые группы теперь учитывают необработанные полезные нагрузки\binN, а таблица, более широкая или высокая, чем сетка листа, останавливается на краю вместо выброса исключения - Числовая ссылка вне диапазона символов, определённого XML, отклоняется при чтении вместо создания встроенного NUL, одиночного суррогата или завёрнутой кодовой точки. Табуляция, перевод строки и возврат каретки переживают цикл сохранения и загрузки OPC как символьные ссылки, а не нормализуются в пробелы
- Импорт CSV сохраняет значение
SkipRowsмежду разборами; значение уменьшалось на месте, поэтому второй файл, прочитанный через тот же загрузчик, не пропускал ничего - Часть
xl/tables/распознаётся при решении, какие части сохранять; сравнение префикса было короче на один символ и никогда не совпадало
Версия 2.379.3
Исправлено
- Импорт HTML декодирует десятичные символьные ссылки.
éи любая другая форма&#NNN;выдавали символ NUL вместо самого символа, потому что преобразование записывало результат и позицию ошибки в одну и ту же переменную, и код успеха перезаписывал значение. Шестнадцатеричные ссылки не были затронуты; обе формы теперь отклоняют значения вне представимого диапазона вместо выдачи постороннего символа - Экспорт HTML сохраняет весь подадрес внутренней гиперссылки при построении её целевого якоря. Подадрес длиннее 255 символов усекался, поэтому сгенерированный якорь больше не соответствовал ссылке
Версия 2.379.2
Исправлено
- GIF, вставленный через
AddPictureилиImages.AddFromFile, теперь берёт размер из дескриптора логического экрана. Ранее любой GIF сообщал размер 100 на 100 точек независимо от своих реальных габаритов, из-за чего изображение оказывалось растянутым или сплющенным - Определение размеров BMP читает заголовок растра, который файл действительно объявляет:
BITMAPCOREHEADERсо своими 16-битными размерами распознаётся вместо чтения как 32-битных полей, а top-down BMP с отрицательной высотой больше не даёт отрицательной высоты изображения - Определение размеров JPEG принимает любой маркер кадра SOFn, а не только baseline, расширенный последовательный и прогрессивный. Ранее JPEG без потерь, с арифметическим кодированием и иерархические откатывались к значению по умолчанию 100 на 100
Версия 2.379.1
Исправлено
- Изображения WMF теперь декодируются как векторные сцены для вывода SVG, PDF и постраничного. Начиная с 2.363.0 декодер читал каждую запись как 16-битный размер, за которым следует код функции, но запись метафайла начинается с 32-битного размера, поэтому любой WMF, записанный Windows или Office, останавливался на своей первой записи, а изображение откатывалось к растровой заглушке. Записи теперь кадрируются согласно
[MS-WMF] §2.3, а параметры пера, кисти, шрифта, текста, фигур и многоугольников читаются по указанным для них смещениям META_STRETCHDIBожидал DIB перед целевым прямоугольником и предполагал 40-байтовый заголовок растра; теперь прямоугольник предшествует DIB, как указано в формате,BITMAPV4HEADER/BITMAPV5HEADERи таблицы цветов учитываются при поиске битов пикселей, а запись добавляет команду изображения вXDest,YDestразмеромDestWidthнаDestHeightMETA_EXTTEXTOUTпропускает свой необязательный прямоугольник, если установленETO_OPAQUEилиETO_CLIPPED, поэтому текст, нарисованный с непрозрачным фоном, больше не читается по неверному смещению- Изображения метафайлов, встроенные в рендер страницы, читают свои пиксели по смещению, указанному в заголовке растра, а не по фиксированным 40 байтам, поэтому изображение с
BITMAPV4HEADERилиBITMAPV5HEADERбольше не отображается как сдвинутый цветовой шум
Версия 2.379.0
Добавлено
TGridToXLSтеперь входит в пакет времени выполнения Free Pascal, поэтомуTDBGridв Lazarus экспортируется так же, как под VCL: явные столбцы сохраняют заголовки, шрифты, цвета, выравнивание, ширину и видимость, сетка без явных столбцов экспортирует по одному столбцу на поле набора данных, а результат сохраняется как XLS, XLSX, HTML или RTF тем же вызовомSaveAs
Версия 2.378.4
Исправлено
- TEXTBEFORE и TEXTAFTER читали количество аргументов из локальной переменной, которой никогда не присваивалось значение, поэтому необязательные аргументы instance, match-mode, match-end и if-not-found могли игнорироваться, а корректный вызов — отклоняться с #VALUE!, в зависимости от остатков в стеке; теперь количество берётся из самого вызова
- Масштабированный OFFSET — со значением высоты или ширины, отличным от 1, — при вычислении в одной ячейке сравнивал ячейку формулы с якорем, который ещё не был вычислен, поэтому неявное пересечение могло вернуть #REF! или неверную ячейку; смещённый якорь теперь вычисляется до проверки пересечения
Версия 2.378.3
Исправлено
- Под Free Pascal сопоставление или замена пустой строки вызывали ошибку регулярного выражения, поэтому выражение отчёта вида
regexreplace(Code,"[^0-9]","")завершалось ошибкойREPORT_EXPRESSION_INVALID_REGEXвсякий раз, когда поле было пустым. Бэкенд FPC теперь отвечает так же, какTRegExпод Delphi: шаблон, допускающий пустую строку, например^$или.*, совпадает с ней и даёт свой замещающий текст, а[0-9]+или\s+сообщает об отсутствии совпадения
Версия 2.378.0
Добавлено
- HotXLS теперь собирается с Free Pascal 3.2.2 и Lazarus/LCL на Windows, Win32 и Win64. API книг XLS и XLSX, формулы, стили, прямой считыватель и модуль записи, экспорт наборов данных и вспомогательные модули рендеринга — всё работает из кода FPC с семантикой строк Unicode Delphi; раздел Поддержка Free Pascal и Lazarus описывает настройку приложения и различия бэкендов
- Пакет времени выполнения
Lib/FPC/HotXLSLaz.lpkоткрывается в Lazarus или собирается для каждой архитектуры из командной строки черезbuild-FPC-Lib.cmd, а наборы smoke-тестов Lazarus вTests/Lazarusпокрывают циклы сохранения и загрузки книг, сжатие, шифрование, потоки COM, графику, чтение текста, регулярные выражения, экспорт наборов данных и выражения отчётов - Сборки FPC используют встроенные бэкенды на Pascal для ZIP, потоков сжатия и AES, поэтому файлам XLSX, включая защищённые паролем, не нужны ни zlib DLL, ни прекомпилированные объектные файлы, которые линкует Delphi; PNG сохраняет альфа-канал, рисование и воспроизведение EMF идёт через метафайлы Windows, а экспорт многостраничного TIFF использует среду выполнения GDI+
Версия 2.377.2
Добавлено
- Кэш сводной таблицы классического XLS, записанный HotXLS, теперь содержит записи, относительно которых формат определяет заголовок кэша. Идентификатор потока и тип исходных данных в заголовке называли SXStreamID и SXVS, которые никогда не записывались, поэтому ни одно средство чтения не могло их проверить; теперь записываются обе записи, а оба поля заголовка берутся из одних и тех же значений, так что они согласованы по построению
- Подпотоки кэша также содержат SXDBEx — запись, следующую за заголовком кэша в каждом кэше, который записывает Excel. Она фиксирует момент последнего обновления кэша, поэтому
TXLSPivotCache.RefreshedDateтеперь переживает сохранение и загрузку классического XLS, как это уже происходило в XLSX TXLSPivotCache.StreamIdиTXLSPivotCache.SourceDataTypeпредоставляют оба значения, считывая их обратно из файла, который их указывает, и записывая в пару записей плюс заголовок кэша. Кэш, созданный черезAddPivotTable, сообщает поток 0 и источник в виде диапазона листа
Изменено
- Опциональная перезапись старого оформления кэша (
UpgradeLegacyPivotCacheFraming) теперь создаёт и эти три записи, поэтому модернизированный кэш не просто правильно оформлен, но и полон так же, как только что записанные. Кэш, уже содержавший SXStreamID, SXVS или SXDBEx, сохраняет своё содержимое; тот, чей SXDBEx заявляет записи формул, которых HotXLS не пишет, остаётся на воспроизведении исходных байтов - Чтение не затронуто: файлы, записанные до этого выпуска, загружаются точно как раньше, а записи кэша, для которых у HotXLS по-прежнему нет модели — среди них DConRef или DConName, называющие исходный диапазон, — как и прежде, сохраняются побайтово в течение цикла сохранения и загрузки
Версия 2.377.1
Добавлено
- Книга теперь может запросить перезапись своих старых подпотоков PivotCache при сохранении.
TXLSWorkbook.UpgradeLegacyPivotCacheFramingпо умолчанию выключен; при включении классический файл XLS, чьи кэши были записаны HotXLS до v2.377.0, сохраняется с повторной выдачей этих кэшей через исправленные модули записи SXDB / SXFDB / SXDBB, так что серия исправлений кэша сводной таблицы с v2.376.1 по v2.376.7 доходит и до уже существующих файлов, а не только до нового вывода - Модернизация применяется только там, где доказуемо ничего не стоит. Кэш, прочитанный из файла, выдаётся заново, только когда весь его подпоток содержал записи, которые моделирует HotXLS, а его оформление — то, которое HotXLS сам записал неправильно; всё остальное — каждый кэш, созданный Excel, и любой кэш с записью вроде SXDBEx, которую HotXLS хранит лишь как непрозрачные байты, — продолжает воспроизводить собственные байты при включённой опции.
TXLSPivotCache.CanUpgradeFramingсообщает вердикт для одного кэша, аRawFramingIsLegacy/RawModelIsComplete— о двух половинах, на которых он основан - Модернизированный кэш записывается там, где находился его подпоток, а не переносится вперёд перед остальными, поэтому представление сводной таблицы по-прежнему указывает на кэш, который оно называло до сохранения
Исправлено
- Кэш сводной таблицы классического XLS, прочитанный из файла и затем переданный модулю записи со сброшенным флагом воспроизведения исходных байтов, создавал два подпотока кэша — от модели и от файла. Теперь он создаёт один
Версия 2.377.0
Добавлено
- Классические листы XLS принимают встроенные объекты диаграмм:
AddChartObjectна листе привязывает рамку диаграммы к сетке листа (фигура управляющего элемента host-control типа OBJ 5 плюс клиентский якорь MSODRAWING), строит подпоток диаграммы через общий конструктор диаграмм и следует списку записей листа, чтобы компоновка файла соответствовала тому, что считыватель повторно присоединяет при открытии; цикл сохранения и загрузки возвращает рамку с её моделью диаграммы — с рядами, заголовком и ссылками на диапазоны в целости
Исправлено
- Записи SeriesText декодируют полезную нагрузку строки правильной ширины: считыватель передавал количество символов там, где ожидалось количество байтов, поэтому 16-битные подписи и метки рядов возвращались усечёнными до половины длины (заголовок из пяти символов читался как два)
Версия 2.376.7
Исправлено
- Кэшированные строки за сводной таблицей в классическом файле XLS записываются так, как их описывает [MS-XLS] 2.4.276: одна запись на строку кэшированных данных, с одним индексом на поле кэша шириной в один байт или двумя байтами для поля с более чем 255 различными значениями. HotXLS вместо этого писал собственную схему, умещая каждое поле ровно в столько битов, сколько нужно для нумерации его значений, и упаковывая множество строк в одну запись, которую никакая другая программа не могла декодировать и которая противоречила флагу «более 255 значений», уже имевшемуся в определении поля
- Excel теперь может читать значения, которые содержит кэш сводной таблицы HotXLS, вместо того чтобы быть вынужденным восстанавливать их из исходного диапазона при открытии книги — именно на это приходилось полагаться книге, чьи исходные данные к тому времени были перемещены, изменены или удалены
- Кэшированные строки также читаются обратно. Ранее HotXLS полностью игнорировал эту запись, поэтому кэш, загруженный из файла, возвращался с каждой строкой, указывающей на первое значение каждого поля, и всё вычисленное из этого кэша следовало этим неверным значениям. Это относится к книге, написанной Excel, в той же мере, что и к книге, написанной HotXLS
- Поле кэша, не содержащее значений, не добавляет ничего в кэшированную строку, а поле с более чем 255 значениями хранится и читается в более широком размере, который требует формат
- Книги, записанные HotXLS v2.376.6 и ранее, по-прежнему загружаются с неповреждёнными кэшированными строками
Версия 2.376.6
Исправлено
- Заголовочная запись кэша сводной таблицы в классическом файле XLS выложена так, как её описывает [MS-XLS] 2.4.275. Количество записей там — четырёхбайтовое поле, а HotXLS писал его двумя байтами, поэтому каждое поле позади него выходило на одну позицию раньше, а запись получалась на четыре байта длиннее — число полей кэша оказывалось внутри количества записей, слово флагов попадало на идентификатор потока, а количество полей — на длину имени того, кто последним обновлял кэш, обещая имя, которое запись была слишком коротка, чтобы вместить
- Флаги заголовка теперь говорят, чем кэш является на самом деле: хранятся ли его записи в файле, обновляется ли он при открытии книги, разрешено ли обновление и выполняется ли запрос обновления в фоне. Эти четыре настройки уже присутствовали в выводе XLSX и теперь передаются и с классическим файлом XLS — вместе с именем того, кто последним обновлял кэш
- Тип исходных данных в заголовке записывается как диапазон листа, а не остаётся значением, которое формат не определяет, а количества полей и использованных записей несут реальные итоги кэша
- Имя того, кто обновлял кэш, обрезается до 255 символов, которые допускает запись, а кэш без такого имени вместо пустой заглушки не записывает имени вообще
- Книги, записанные HotXLS v2.376.5 и ранее, по-прежнему загружаются и по-прежнему отдают количество записей кэша. Больше ничего в старом заголовке никогда не хранилось — модуль записи заполнял каждое поле позади количества записей фиксированными значениями, которые никогда не читал из кэша, — поэтому флаги и имя обновившего такого файла возвращаются как значения по умолчанию, а не как восстановленные данные
Версия 2.376.5
Исправлено
- Имена полей кэша сводной таблицы переживают сохранение и загрузку классического файла XLS. Длина имени читалась из неверного места определения поля кэша — индекса, который всегда равен $FFFF, — поэтому имя отбрасывалось каждый раз, и каждое поле кэша возвращалось безымянным
- Запись определения поля кэша выложена так, как её описывает [MS-XLS] 2.4.283: grbit, ifdbParent, ifdbBase, citmUnq, csxoper, cisxoper, catm, а затем имя поля. HotXLS писал три поля, которых у записи нет — индекс элемента подтипа, числовой формат и второй счётчик элементов, — и клал $FFFF в индексы, которые спецификация ограничивает количеством полей в кэше
- Слово флагов записи теперь описывает поле, к которому относится: содержит ли поле элементы кэша, включают ли эти элементы числа, даты или текст, можно ли вычислить минимум и максимум, есть ли среди элементов не-дата и больше ли их 255. Счётчик элементов в записи теперь соответствует количеству записей элементов кэша, которые действительно следуют за ним
- Имена полей кэша длиннее 255 символов, которые допускает запись, обрезаются до 255 вместо записи их полной длины
- Книги, записанные HotXLS v2.376.4 и ранее, по-прежнему загружаются с нетронутыми именами полей кэша — имя занимало ту же позицию в старой компоновке, поэтому ничто из носившего имя его не теряет
Версия 2.376.4
Исправлено
- Кэши сводных таблиц в классических файлах XLS теперь используют номера записей, которые даёт [MS-XLS]. Семь записей в подпотоке кэша уходили под номером какой-то другой записи: определение поля кэша как $00C8 (SXDBB), тип поля как $00FB (SxFormat), индексы элементов на запись как $00C5 (SXDI), а числовые, логические, ошибочные, датные и пустые значения кэша как $00CE, $00CF, $00D0, $00CC и $00CB (SXDtr, SxNil, SXTbl, SXInt, SxErr). Теперь это SXFDB $00C7, SXFDBType $01BB, SXDBB $00C8, SXNum $00C9, SxBool $00CA, SxErr $00CB, SXDtr $00CE и SxNil $00CF, так что Excel может прочитать кэш сводной таблицы, записанный HotXLS, а HotXLS — записанный Excel
- Пустые значения в поле кэша сводной таблицы переживают цикл сохранения и загрузки. Модуль записи всегда их выдавал, но у считывателя не было для них ветки, поэтому каждая пустая величина отбрасывалась при загрузке, и каждая следующая за ней в том поле сдвигалась на позицию вниз, из-за чего ссылки на элементы сводной таблицы указывали на неверные значения
- Книги, записанные HotXLS v2.376.3 и ранее, продолжают загружаться с неповреждёнными значениями кэша. Каждый подпоток кэша сводной таблицы читается в той нумерации, в которой был записан, что определяется по его собственной записи определения поля, а кэш, прочитанный из существующего файла, записывается обратно под теми номерами, с которыми пришёл, так что повторное открытие и сохранение старой книги не меняет её байты тайком
Версия 2.376.3
Исправлено
- Представления сводных таблиц в классических файлах XLS теперь записывают свою запись расширения SXEx под номером, который даёт [MS-XLS], $00F1; модуль записи использовал $00C6 — это SXDB, заголовочная запись кэша сводной таблицы, — Excel, искавший расширение представления, не находил ничего, а запись, притворявшаяся заголовком кэша, сидела посреди листа, поэтому свойства представления, которые несёт SXEx, терялись даже после исправления компоновки полей в v2.376.1
- Книги, записанные HotXLS v2.376.2 и ранее, по-прежнему открываются с неповреждёнными представлениями сводных таблиц: внутри листа старый $00C6 всё ещё принимается как расширение представления, которым он и должен был быть, а внутри подпотока кэша сводной таблицы $00C6 всё ещё читается как заголовок кэша, поэтому ничто из того, что загружалось раньше, не перестаёт загружаться
Версия 2.376.2
Исправлено
- Классические листы 3-D диаграмм XLS, созданные без явной сцены, теперь несут флаги, которые им положены по документации: слово флагов Chart3d по умолчанию устанавливало зарезервированный записью бит вместо бита автоматического масштабирования, поэтому 3-D диаграмма по умолчанию переоткрывалась с включённой кластеризацией, но выключенным автоматическим масштабированием и никогда не соответствовала сцене, которую заявляла записать; диаграммы, передающие явную 3-D сцену, не были затронуты, и их байты не изменились
Версия 2.376.1
Исправлено
- Представления сводных таблиц записывают запись SXEx, чьи поля лежат там, где их ожидают средства чтения: фиксированное 24-байтовое тело было сдвинуто на два поля, поэтому оно объявляло две записи форматирования, которые никогда не следовали, и оставляло каждую длину необязательной строки нулём, что запрещает [MS-XLS] 2.4.282 — эти длины должны быть либо маркером отсутствия, либо реальной длиной от 1 до 255; теперь тело начинается с правильного поля и помечает каждую необязательную строку отсутствующей, поэтому Excel читает свойства представления вместо искажённого блока
- Длина записи SXEx выводится из фактически записанных байтов, а не из зашитой в код константы, поэтому заявленный размер и полезная нагрузка больше не могут разойтись так, как они расходились до v2.376.0
Версия 2.376.0
Добавлено
- Классические листы диаграмм XLS могут связываться с представлением сводной таблицы: новая перегрузка
AddChartSheetпринимает имя исходного сводного представления и флаг скрытия подписей полей, которые записываются в записи SXViewLink ($0858, [MS-XLS] 2.4.316) и PivotChartBits ($0859, 2.4.196) в глобальных данных диаграммы перед Units согласно ABNF подпотока листа диаграммы; инспекция диаграмм декодирует обе записи — включая 8-битные и 16-битные кодировки строк — обратно в типизированную модель (маркер сводной диаграммы, имя исходного представления, флаг подписей) и канонический семантический снимок, а диаграммы без записей связи остаются непомеченными
Исправлено
- Представления сводных таблиц записывают запись SXEx правильного размера: эмиттер объявлял 24-байтовое тело, но писал 26 байтов, поэтому два лишних байта попадали туда, где ожидался заголовок следующей записи, и каждая запись после представления (включая EOF листа и любой подпоток листа диаграммы, следовавший за сводным листом) разбиралась неверно, из-за чего книги, сочетающие сводную таблицу с листом диаграммы, переоткрывались без диаграммы
- Отображаемые имена линий тренда в классических диаграммах корректно декодируют полезные нагрузки 8-битных строк; прежний считыватель широких символов возвращал пустое имя для записей, которые Excel пишет 8-битными символами
Версия 2.375.0
Добавлено
- Ряды классических диаграмм XLS принимают заливки цветов темы: стиль каждого ряда теперь несёт индекс цвета темы и оттенок, которые записываются в запись GelFrame после AreaFormat согласно [MS-XLS] 2.4.131, с использованием расширения цвета темы OfficeArt (fillType, fillColor с развёрнутым RGB, индекс схемы fillColorExt, полезная нагрузка оттенка fillColorExtMod); когда явный цвет заливки не задан, развёрнутый цвет разрешается из темы Office по умолчанию с применённым оттенком, а инспекция диаграмм декодирует цветовую интенцию темы обратно в типизированную модель и канонический семантический снимок
Исправлено
- Полная многоверсионная сборка библиотеки снова зелёная для каждого поддерживаемого компилятора: приведения типов и вызовы, которые принимают только более новые компиляторы (приведение типа Extended к значениям Int64, жёсткое приведение целого к Double, nil-аргумент процедурного типа при разрешении перегрузки, доступ к TPicture.LoadFromStream там, где он защищён, и тип токена GdiplusStartup, менявшийся между поколениями VCL) сделаны безопасными для версий от XE5 до текущего выпуска
Версия 2.374.0
Добавлено
- Сцены 3-D диаграмм настраиваются и поддаются инспекции: новая перегрузка
AddChartSheetпринимает поворот, возвышение, дистанцию перспективы, высоту, глубину, зазор и флаги кластеризации, автомасштабирования, масштабирования под прямым углом и двумерных стен, которые записываются в запись Chart3d согласно [MS-XLS] 2.4.46, а инспекция диаграмм декодирует сцену обратно в типизированную модель (Scene3D) при чтении; диаграммы, использующие прежние перегрузки, по-прежнему выдают совпадающие с Excel значения по умолчанию байт в байт
Версия 2.373.0
Добавлено
- Ряды классических диаграмм XLS принимают переопределения стиля для каждого ряда: цвет и стиль линии, цвет заливки, а также форма, цвета и размер маркера записываются в блок форматирования ряда со сброшенным флагом автоматического режима, чтобы Excel учитывал заданные значения, а инспекция диаграмм декодирует записи LineFormat, AreaFormat и MarkerFormat обратно в типизированную модель и канонический семантический снимок
Версия 2.372.0
Добавлено
- Ряды классических диаграмм XLS принимают именованные и внешние ссылки для категорий и значений: текст, не являющийся простым диапазоном A1, компилируется через движок формул книги, а запись BRAI несёт элемент области диаграммы, содержащий скомпилированную формулу, чтобы проход сохранения пересериализовал её с текущими индексами хранилища определённых имён; инспекция диаграмм при чтении декомпилирует ссылку обратно в её имя, а неразрешимый текст сохраняет пустой BRAI-заполнитель
Версия 2.371.0
Добавлено
- Ряды классических диаграмм XLS могут привязываться к группе дополнительной оси: пометка ряда в
AddChartSheetподнимает AXESUSED до двух, выдаёт второй блок AxisParent со своими осями категорий и значений плюс собственной группой диаграммы согласно ABNF подпотока листа диаграммы [MS-XLS] и направляет ряд через SerToCrt во вторую группу; инспекция диаграмм при чтении декодирует привязку каждого ряда к группе диаграммы
Версия 2.370.0
Добавлено
- Ряды классических диаграмм XLS принимают подписи данных:
AddChartSheetвыдаёт запись AttachedLabel с флагами show-value, show-percent, show-category-name, show-label-and-percent, show-bubble-size и show-series-name (разметка битов [MS-XLS] 2.4.5), а инспекция диаграмм декодирует и AttachedLabel, и запись расширенных подписей DataLabExtContents вместе с её разделителем обратно в типизированную модель и канонический семантический снимок
Версия 2.369.0
Добавлено
- Инспекция классических диаграмм XLS теперь декодирует структуру групп осей: AXESUSED выявляет заявленное количество групп осей, а каждая ось фиксирует, принадлежит ли она первичной или вторичной группе AxisParent, причём индекс группы переносится в канонический семантический снимок
Версия 2.368.0
Добавлено
- Линии тренда и планки погрешностей диаграмм BIFF теперь декодируются при чтении в типизированную модель диаграммы: каждый блок Series выявляет свои записи Trendline с видом регрессии, порядком или периодом, пересечением (включая автоматическое), флагами отображения уравнения и R-квадрата, периодами прогноза и ретроспективного прогноза и отображаемым именем, а также свои записи SerErrBar со стороной направления, типом значения, концевыми ограничителями и величиной
- Классический семантический снимок отображает линии тренда и планки погрешностей в общие канонические контейнеры вместо выброса исключения, поэтому книги с расширенными рядами диаграмм сравниваются детерминированно, а изменения линий тренда изменяют канонический поток
Версия 2.367.0
Добавлено
- RecalcAndVerifyEx запускает глубокий аудит вычислений на обоих движках книг: каждая формула вычисляется один раз через граф зависимостей в изолированный слой результатов, поэтому зависимые ячейки читают значения этого прохода вместо устаревших кэшей, сбои вычисления классифицируются по типизированным категориям (неподдерживаемые аргументы, циклические ссылки, отклонённые или отсутствующие внешние ссылки, пропущенные таблицы данных, отмена, внутренние сбои) с кодами результатов, а каждый сбой несёт ограниченный стек вызовов
- Аудит учитывает бюджет проблем со стабильным порядком по листу, строке, столбцу и категории, приёмник прогресса, способный отменять на границах узлов, настраиваемые числовые допуски и опциональный ApplyResults, который атомарно фиксирует пересчитанные значения после полностью успешного прохода по неизменённой структуре книги; по умолчанию остаётся строгое «только чтение»
Изменено
- Существующие точки входа RecalcAndVerify и CalculateAndVerify сохраняют прежнюю семантику поверхностного сравнения как шимы совместимости, при этом разделяя новые поля отчёта
Версия 2.366.0
Изменено
- Экспорт PDF теперь собирает документы через последовательный модуль записи объектов, который передаёт каждый объект напрямую в пункт назначения, так что промежуточная копия всего документа больше не строится; неподписанные документы транслируются напрямую в потоки с последовательным доступом, а подписанные собираются в ограниченный спул, который получает патчи ByteRange и содержимого подписи перед единственной прямой копией
- Полезные нагрузки вложений PDF копируются из спулов их поставщиков в итоговый документ фиксированными частями и ссылаются на размер своего потока через косвенный объект длины, удерживая пиковую память ровной для вложений в сотни мегабайт
Исправлено
- Дайджесты подписи теперь вычисляются инкрементально по двум охваченным диапазонам байтов собранного документа вместо полной копии документа, а зарезервированные поля подписи обнаруживаются по самому объекту подписи, а не сканированием собранных байтов
Версия 2.365.0
Добавлено
- Текст видимой подписи PDF теперь отображается через конвейер встроенных шрифтов Unicode с выравниванием влево, по центру или вправо, настраиваемыми размером, цветом и стилем (полужирный или курсив), покрывая любые системы письма в именах подписывающих, причинах и местах
- Изображения внешнего вида подписи PDF принимают полезные нагрузки JPEG с размерами, выводимыми из маркера кадра, а негабаритные или повреждённые изображения детерминированно отказывают до вычисления дайджеста
- Вложения PDF предоставляют явную политику дублирующихся имён, выгружают в спул большие полезные нагрузки поставщиков во временный файл за настраиваемым порогом в байтах и отклоняют враждебные листам имена, содержащие разделители пути или управляющие символы
Изменено
- Деревья имён вложений PDF теперь сортируются по байтам закодированных имён согласно ISO 32000-1 7.9.6, а коллекция вложений остаётся замороженной, пока работают поставщики, так что реентерабельные добавления атомарно отказывают
Версия 2.364.0
Добавлено
- Встроенные изображения EMF и WMF воспроизводят скобки путей с проходами заливки, обводки и комбинированной обводки-с-заливкой, скруглённые прямоугольники, дуги, хорды, секторы и угловые дуги через точное преобразование дуги в кривые Безье, заливки и рамки регионов, разрешаемые из ограниченных прямоугольников RGNDATA, а также геометрические или косметические расширенные перья — всё сплющивается в неизменяемую общую сцену с теми же границами строгого отказа против записей клиппинга, escape и частных
Версия 2.363.0
Добавлено
- Встроенные изображения EMF и WMF теперь воспроизводятся через расширенный белый список безопасных записей: стеки состояния контекста устройства с сохранением и восстановлением, отображение окна и области просмотра с мировыми преобразованиями, таблицы объектов перьев и кистей, включая стандартные объекты, прямоугольники, эллипсы, цепочки линий, многоугольники, полилинии и кривые Безье со стилями штрихов, ограниченные фрагменты текста со шрифтами, цветами и выравниванием, а также ограниченные изображения stretch-DIB, перекодируемые в PNG, при этом неизвестные записи состояния по-прежнему строго отказывают в ограниченный растровый резерв вместо вызова воспроизведения метафайлов платформы
Исправлено
- Изображения WMF теперь разбирают стандартную компоновку двухбайтового заголовка записи, поэтому настоящие placeable и стандартные метафайлы декодируются, а не только синтетические тестовые образцы
Версия 2.362.0
Добавлено
- Классический XLS и XLSX теперь сохраняют состояние массивов табличных формул, типизированные режимы IME проверки данных, подсказки потока вычислений, наличие принудительного полного пересчёта, подсказки обновления всего и кодовые имена книги через их собственные бинарные или OOXML представления
RecalcAndVerifyвозвращает ограниченный структурированный аудит вычислений со стабильными категориями кэша, разбора, отсутствующей функции и отсутствующего имени, не трогая кэши формул и семантику книгиTXLSPageImageExporter.ExportRangeотображает запрошенный прямоугольник ячеек как один компактный PNG или JPEG без бумаги, полей, колонтитулов, названий печати и разрывов страниц, а события до и после изображения страницы могут рисовать на реальном холсте кодирования- Специализированный экспортёр изображений ячеек измеряет, отображает и сохраняет любой прямоугольник ячеек классического формата или XLSX как одно компактное изображение с настраиваемыми разрешением, масштабом, форматом и качеством JPEG; прозрачные или цветные фоны, независимые переключатели объектов, линий сетки и границ ячеек, бюджеты пикселей и байтов, а также сохранение файла через атомарную замену в той же папке, оставляющую существующую цель нетронутой при любом сбое
- События рисования изображения страницы теперь получают полный контекст только для чтения, несущий живой холст, границы в пикселях, размер страницы в пунктах, разрешение, масштаб, номера страниц документа и внутри листа, общее количество страниц и исходный лист; они срабатывают ровно один раз на отрисованный кадр, включая кадры многостраничного TIFF, молчат во время измерения и никогда не вызывают своё замыкающее событие и не записывают частичные байты изображения, когда ведущее событие выбрасывает исключение
TXLSSvgExportподдерживает полные колбэки на страницу, детерминированные пространства имён идентификаторов документа и страницы и опциональные безопасные наложения гиперссылок с ScreenTips и защищёнными атрибутами новых окон- Экспортёры HTML классического формата и XLSX предоставляют опциональное представление электронной таблицы с семантическими заголовками строк и столбцов плюс ограниченное горячее отслеживание на чистом CSS, и оба отклоняют активные или локальные схемы URI, сохраняя отображаемый текст ссылок
- Видимые подписи PDF могут использовать вписанные, покрывающие или растянутые PNG-изображения внешнего вида, а вложения PDF могут лениво получать свою полезную нагрузку от интерфейса-источника с одним вызовом при каждом сохранении
- Ограниченный векторный декодер EMF и WMF проверяет заголовки, размеры записей, итоги, точное размещение EOF и ограничения escape, а затем воспроизводит своё безопасное подмножество прямоугольных команд через общие бэкенды Canvas и SVG, не вызывая воспроизведение метафайлов драйвера
Изменено
- Прямая запись XLSX может создавать атрибуты массивов табличных формул и типизированные режимы IME проверки данных, при этом табличные формулы-массивы больше не молча разворачиваются в скалярные построчные формулы
Версия 2.361.99
Изменено
- Автоматический PDF с тегами теперь выдаёт информативные изображения XLSX как независимые структурные элементы Figure с альтернативным текстом Unicode, плотными локальными для страницы идентификаторами помеченного содержимого, точными записями в дереве родителей и одним семантическим элементом на видимый экземпляр, при этом одинаковые полезные нагрузки изображений по-прежнему разделяют один XObject; изображения без альтернативного текста остаются декоративными артефактами
Версия 2.361.98
Исправлено
- Формулы поиска, сканирующие диапазон, покрывающий их собственную ячейку (VLOOKUP, HLOOKUP, LOOKUP, XLOOKUP, XMATCH, MATCH), больше не сообщают ложные ошибки циклических ссылок при пересчёте, при этом правки внутри сканируемого диапазона по-прежнему запускают пересчёт формулы
- Текстовые критерии AutoFilter длиннее 255 символов обрезаются до предела записи фильтра вместо записи повреждённого условия автофильтра
- Подряд идущие пробелы, используемые оператором неявного пересечения, сохраняются при повторной генерации текста формулы вместо схлопывания в один пробел
- Встроенные определённые имена помимо областей печати, названий печати и баз данных фильтра (consolidate areas, extract, database, criteria, recorder, названия листов и маркеры семейства Auto_Open) сохраняются дословно при открытии и сохранении классических книг XLS
Версия 2.361.97
Добавлено
- Книги классического XLS и XLSX теперь предоставляют общую политику отображения объектов с тремя состояниями, сохранение нетронутого источника без потерь и межформатное отображение; скрытые объекты больше не расширяют постраничный или HTML вывод и не попадают в пути рендеринга рисования и медиа
- Просмотрщик книг отображает лёгкие именованные заполнители для объектов в режиме заполнителей, при этом экспортёры PDF, SVG, растровых изображений, печати и HTML по умолчанию сохраняют полные объекты и предлагают явную опцию заполнителей, которая избегает декодирования изображений и построения сцен диаграмм
Версия 2.361.96
Изменено
- Ручные компоновки диаграмм теперь сохраняют независимые исходные поля и недопустимые токены, разрешают координаты факторов и краёв с ограниченным сохраняющим размер размещением, учитывают внутренние и внешние цели построения плюс наложение заголовка и легенды, преобразуют поддерживаемую геометрию ODF через абсолютные расстояния диаграммы и отображают согласованное размещение заголовка, легенды, области построения и названий осей в выводе постраничной разбивки, SVG, PDF, изображений, предпросмотра, печати, просмотрщика и HTML
Версия 2.361.95
Изменено
- Подписи данных диаграмм XLSX с источником в ячейках теперь принадлежат каждому ряду, с полными формулами, индексированными кэшами, явной общей и по точкам видимостью, живым обновлением листа, откатом к внешнему кэшу, трансляцией формул при копировании и развёртывании отчётов и согласованной композицией подписей с приоритетом пользовательских в выводе постраничной разбивки, SVG, PDF, изображений, предпросмотра, печати, просмотрщика и HTML
Версия 2.361.94
Изменено
- Многоуровневые оси категорий диаграмм теперь сохраняют разреженные иерархические кэши и живые двумерные диапазоны, строят диапазоны с учётом родителей за линейное время, учитывают одноуровневое, обратное, справа налево, скрытое поведение и поведение с пустыми категориями и отображают согласованные иерархические подписи и разделители в выводе постраничной разбивки, SVG, PDF, изображений, предпросмотра, печати, просмотрщика и HTML; экспорт ODS использует диапазон конечных категорий
Версия 2.361.93
Изменено
- Оси дат теперь выводят календарные единицы один раз по всем видимым рядам, выбирают ограниченные автоматические интервалы по видимой протяжённости, ширине оси, измеренному шрифту подписей, числовому формату и повороту, а также выводят подписи, координаты, деления и линии сетки из общих коллекций главных и промежуточных делений в выводе постраничной разбивки, SVG, PDF, изображений, предпросмотра, печати, просмотрщика и HTML
Версия 2.361.92
Изменено
- Оси дат XLSX теперь сохраняют числовые форматы оси и состояние связи с источником, отображают форматированные подписи со стилизацией текста и поворотом и учитывают обратное направление, сохраняя при этом непрерывный интервал для дублирующихся и редких дат в выводе постраничной разбивки, SVG, PDF, изображений, предпросмотра, печати, просмотрщика и HTML
Версия 2.361.91
Изменено
- Оси дат XLSX теперь сохраняют, были ли базовые, главные и промежуточные календарные единицы и автоматическое обнаружение категорий опущены или заданы явно, включая явные единицы дней и значения false; записи расширения оси дат Classic предоставляют типизированные поля, сохраняют замаскированные или недопустимые исходные значения и могут отображать активные настройки в модель оси XLSX
Версия 2.361.90
Изменено
- Диаграммы с осью дат XLSX теперь сохраняют непрерывный интервал дат и отображают главные интервалы по дням, месяцам или годам с системой дат 1900 или 1904 книги в выводе постраничной разбивки, SVG, PDF, изображений, предпросмотра, печати, просмотрщика и HTML; постраничный вывод также учитывает настроенные промежуточные деления и линии сетки
Версия 2.361.89
Добавлено
- Просмотрщик книги теперь замощает корректные фоновые изображения листа позади ячеек без заливки, а вывод на печать, в PDF, SVG, bitmap, metafile и HTML Classic или XLSX предоставляет явный параметр
ExportSheetBackgroundImages, отключённый по умолчанию
Изменено
- Постраничный вывод фонов теперь сохраняет привязанную к листу фазу плитки между страницами, декодирует каждый фон один раз за сессию рендеринга, переиспользует один PDF image XObject или SVG-ресурс и пропускает повреждённые данные с одной диагностикой
Версия 2.361.88
Добавлено
- Классические листы теперь предоставляют типизированное создание фоновых изображений и общий фоновый ресурс только для чтения, читают и записывают фоновые записи BIFF8 с непрерывным разбиением данных, реконструируют bitmap-данные в стандартный BMP, сохраняют неподдерживаемые родные и неизвестные форматы байт в байт с диагностикой, переносят владение фоном при глубоком копировании и конвертируют известные фоны в обоих направлениях между XLS и XLSX
Версия 2.361.87
Исправлено
- Копии листов XLSX теперь сохраняют байты фонового изображения листа и тип медиа как при копировании внутри книги, так и между книгами: копии внутри книги переиспользуют сохранённое исходное медиа, а копии между книгами перед сохранением перераспределяют владение медиа
Версия 2.361.86
Добавлено
- В классических книгах XLS и книгах XLSX появился
AllowUnsafeFormulaCallbacks, а контекстное вычисление предоставляет соответствующую опцию на вызов и структурированный статусxlfeUnsafeFunctionDenied
Безопасность
- Опасные внешние и макроимена формул по умолчанию больше не попадают в обработчики пользовательских функций уровня книги, уровня процесса, резолвера и событий, а отказ происходит до вычисления аргументов формулы
Версия 2.361.85
Добавлено
- В классических книгах XLS и книгах XLSX появился
AuditFormulaSymbolsдля структурированной диагностики неизвестных функций, неизвестных имён и синтаксиса по ячейкам с формулами и определённым именам, со статистикой уникальных формул и попаданий в кэш по каждой операции
Изменено
- Сохранённые неизвестные функции и имена теперь вычисляются в ошибки Excel
#NAME?по прямому, зависимому, контекстному, последовательному и параллельному путям вычисления - Изменения регистрации пользовательских функций на уровне книги или процесса и изменения формул определённых имён теперь делают недействительным затронутое состояние вычислений перед следующим пересчётом
Исправлено
- Ошибки формул, прочитанные из зависимых кэшированных ячеек, теперь остаются типизированными ошибками вместо того, чтобы уходить в скалярное преобразование и выбрасывать исключение преобразования Variant
Версия 2.361.84
Добавлено
- Обычное присвоение формул в классических XLS и XLSX теперь атомарно применяет политику ввода формул книги, так что строгий отказ оставляет значение ячейки, кэш формул и зависимости неизменными, тогда как режим сохранения записывает неизвестные функции и имена
Изменено
- Классический XLS записывает сохранённые неизвестные вызовы через токены пользовательских функций надстроек BIFF и удерживает текст сохранённых неизвестных имён при сохранении, повторном открытии и преобразовании XLS/XLSX
- Проверка ввода формул распознаёт настроенные в обратных вызовах пользовательские функции, вызываемые
LAMBDAиLET, лямбды определённых имён, заполнители отчётов, зарегистрированные внешние связи и допустимые структурированные ссылки, не вызывая обработчики
Исправлено
- Проверка XLSX теперь сохраняет допустимые вложенные структурированные ссылки и структурированные ссылки текущей строки и больше не использует устаревший текст столбца при сканировании неразрешённой ссылки на таблицу
Версия 2.361.83
Изменено
- Присвоение значений в классических XLS и XLSX теперь единообразно применяет
FormulaEntryPolicy.EmptyStringMode: режим по умолчанию очищает точные пустые строки, режим сохранения записывает константную пустую строку, аNullилиUnassignedвсегда очищает ячейку - Нативная загрузка XLS, XLSX и ODS, а также преобразования XLS-to-XLSX и XLSX-to-XLS теперь сохраняют доверенные константные пустые строки, не путая их с отсутствующими ячейками или формулами вида
="" - Построчные и поколоночные механизмы записи строк и Variant в XLSX сохраняют быстрые пути упакованного хранилища, оставляя очищенные записи отсутствующими и записывая точные пустые строки только в режиме сохранения
Версия 2.361.82
Добавлено
- Классические книги XLS и XLSX теперь предоставляют общую
FormulaEntryPolicy, а оба движка листов предоставляют не изменяющие состояние методыValidateFormulaEntry, возвращающие структурированные сведения о проблеме, действии и неизвестном символе до того, как вызывающая сторона изменит ячейку
Изменено
- Проверка ввода формул теперь отличает точный пустой ввод от формул, возвращающих пустую строку, разделяет неизвестные функции, неизвестные имена, синтаксические сбои, недопустимые цели и ограничения целевого формата, а также распознаёт зарегистрированные пользовательские функции, не вызывая их обработчики
Версия 2.361.81
Изменено
- Вставки или удаления целых строк и целых столбцов теперь согласованно перестраивают упорядоченные области выделения и активную область каждой панели в XLS и XLSX, сохраняя порядок уцелевших областей и создавая резервную граничную ячейку, когда все области удалены
- Нормализация больших выделений панелей, структурное редактирование и запросы теперь используют линейные в среднем построители и наращивание ёмкости вместо повторных копирований целых строк или массивов
Исправлено
- Классический XLS теперь сохраняет искажённые или противоречивые тела записей
Selectionпобайтово, сообщаяxlsDiagnosticSelectionRecordInvalidвместо предоставления частично доверенного типизированного состояния
Версия 2.361.80
Добавлено
TXLSWorksheetиTXLSXWorksheetтеперь предоставляют парные методыTryGetWindowScrollиScrollWindowдля чтения и изменения первой видимой ячейки любой существующей логической панели с нумерацией с единицы
Изменено
- Состояние прокрутки четырёх панелей теперь сохраняет общие верхнюю, нижнюю, левую и правую оси независимо при сохранении, открытии и копировании листа в XLS и XLSX, а отсутствующие панели и недопустимые координаты приводят к отказу без изменения состояния представления
Версия 2.361.79
Изменено
- Листы классических XLS удерживают независимые упорядоченные группы выделения для каждой панели, агрегируют последовательные записи BIFF
Selectionв одну логическую последовательность, сохраняют нетронутые тела записей и копируют полное состояние выделения вместе с листом - Классические выделения с более чем 1369 областями записываются последовательными соответствующими стандарту фрагментами с сохранением единого агрегированного индекса активной области во всех фрагментах
Версия 2.361.78
Добавлено
TXLSWorksheetиTXLSXWorksheetтеперь предоставляют парные учитывающие панели методыGetSelectedAreasиSelectAreasчерез общий типTXLSPanePosition
Изменено
- Запросы выделения панелей возвращают принадлежащие вызывающему коду упорядоченные снимки с индексом активной области, сохраняют перекрывающиеся области и оставляют состояние листа без изменений, когда панель отсутствует или обновление недопустимо
Версия 2.361.77
Добавлено
IXLSWorkbook,TXLSWorkbookиTXLSXWorkbookтеперь предоставляют парные потоковые методыSaveSemanticSnapshotи инкрементальный SHA-256ComputeSemanticHashс профилями Content и SecurityComplete, а также явными параметрами состояния просмотрщика, волатильных метаданных и кэша формул
Изменено
- Семантические снимки обходят разреженные модели книг без материализации полного снимка, а операции снимка и хеширования удерживают аренду чтения, так что параллельные публичные изменения завершаются отказом до изменения состояния книги
Версия 2.361.76
Добавлено
- Типизированная модель диаграмм классических XLS теперь предоставляет заголовки диаграммы, оси категорий и оси значений
Исправлено
- Извлечение модели диаграмм классических XLS теперь определяет ряды, легенды, группы диаграмм, оси, 3D-состояние, подписи рядов и формулы-источники рядов по их определённым записям BIFF
- Положения легенд и классификация «круговая или кольцевая» декодируются из определённых полей записей
Версия 2.361.75
Добавлено
- Примеры Delphi FeatureShowcase и C++Builder XlsxFeatureGallery теперь демонстрируют одинаковый рабочий процесс скомпилированных отчётов: контекст данных отчёта, таблицу в памяти, строгий доступ к данным, продолжение после восстановимых ошибок, диагностический лист, неизменяемый результат запуска и атомарный вывод в файл
- Раздел о скомпилированных отчётах теперь предоставляет соответствующие примеры для Delphi и C++Builder, включая требуемое в C++Builder получение smart-интерфейсов для интерфейсных таблиц отчётов
Исправлено
- Галерея возможностей XLSX в C++Builder связывает полный соответствующий версии статический пакет HotXLS, так что зависимости реализации скомпилированных отчётов разрешаются без ненадёжных директив компоновщика для каждого модуля
Версия 2.361.74
Изменено
RunToStream,RunToFileиRunToEncryptedFileтеперь используют одну транзакцию вывода, которая публикует сериализованную книгу только после полного завершения генерации и сохранения отчёта- Незашифрованный вывод отчёта сохраняет формат книги шаблона, включая вывод ODS из шаблонов ODS, тогда как зашифрованный вывод остаётся зашифрованным контейнером Office
Исправлено
- Сбои сериализации, замены, отмены и фатальные сбои отчёта оставляют существующие целевые потоки, файлы и зашифрованные файлы неизменными и освобождают сеансы данных текущего запуска и временные хранилища перед возвратом
Версия 2.361.73
Добавлено
- Полосы отчётов именованных диапазонов и таблиц Excel теперь предоставляют
ErrorMode,StrictDataAccess,RuntimeLimitsи неизменяемые снимкиLastResultс отдельным состоянием полосыCompletedWithErrors
Изменено
WriteAndContinueможет записать явно восстановимую ошибку строки как литеральный диагностический текст, зафиксировать строку курсора источника и фактическую выходную ячейку, а затем продолжить с более поздними целями в этой строке и с более поздними входными строками- Выражения отчёта сначала потребляют типизированные значения снимка полосы и лишь затем откатываются к тексту, сохраняя числовые значения, даты, логические и другие поддерживаемые значения Variant во время вычисления выражения
Исправлено
- Фатальные сбои цели, отмены и лимитов времени выполнения при раскрытии полосы восстанавливают исходные цели и вставленную структуру, очищают подвергнутые откату диагностические флаги и публикуют нулевое количество применённых целей
Версия 2.361.72
Добавлено
TXLSReportRuntimeLimitsограничивает количество сохраняемых проблем времени выполнения, длину очищенных сообщений и память под проблемы, аRuntimeDiagnosticsSheetNameопционально записывает один структурированный диагностический лист- Явные ошибки данных резолвера, деление на ноль в выражениях и недопустимые регулярные выражения теперь получают стабильные категории проблем поставщика или выражения и коды ошибок
Изменено
WriteAndContinueсохраняет безопасные цели вне ячеек и фиксирует их проблему, тогда как имена листов и формулы определённых имён остаются структурными целями с немедленным отказом- Результаты с ошибками данных резолвера остаются восстановимыми при выдаче из кэша псевдонимов текущего запуска, тогда как исключения, созданные резолвером, остаются фатальными
Безопасность
- Сообщения времени выполнения обрываются на первой строке, скрывают распространённые формы учётных данных и bearer-токенов и соблюдают ограничения на количество, длину и память до изменения сбойной цели
Версия 2.361.71
Добавлено
- Точные ячейки
{{#usertable(alias, logicalName, providerKey, name=expression)}}компилируются в типизированные отложенные объявления таблиц, аTXLSCompiledReportTemplate.UserTableCountсообщает количество объявлений отдельно от целевых объектов вывода TXLSReportTemplateChecker.DataContextзаранее проверяет зарегистрированные ключи поставщиков, границы типизированных параметров, некорректные объявления и конфликты псевдонимов без учёта регистра, не вызывая резолвер
Изменено
- Шаблоны и генераторы отчётов вычисляют параметры объявлений до записи в целевые объекты, регистрируют их в сеансе текущего запуска и разрешают объявленную таблицу только тогда, когда
dbvalueилиdbcountвпервые обращается к её псевдониму - Повторные одинаковые объявления совместно используют один запрос, тогда как объявления, повторно использующие псевдоним с другим логическим именем, поставщиком, порядком, типом или значением параметров, завершаются ошибкой с указанием позиции объявляющей ячейки до изменения книги
Безопасность
- Объявления пользовательских таблиц принимают только зарегистрированный ключ поставщика и ограниченные типизированные параметры данных, отвергают доступ к таблицам данных внутри выражений параметров и не предоставляют полей шаблона для SQL, путей, URL или текста команд
Версия 2.361.70
Добавлено
TXLSReportDataRequestпередаёт вIXLSReportDataResolverименованную или пользовательскую табличную идентификацию, типизированные параметры, расположение в источнике и управление запуском только для чтения, а явные состояния результата различают необработанный, разрешённый и не найденный исходы, а также ошибку данныхTXLSReportDataContext.RegisterResolver,RemoveResolverиClearResolversуправляют реестром именованных резолверов без учёта регистра, аTXLSReportDataLimitsограничивает псевдонимы, резолверы, параметры, имена, сообщения и схемы возвращаемых таблиц
Изменено
- Каждый сеанс данных отчёта снимает реестр резолверов в структуру поиска за O(1), считает явные таблицы авторитетными, адаптирует устаревших поставщиков таблиц, кэширует типизированные запросы по псевдонимам и отвергает повторно используемый псевдоним, у которого отличаются логическое имя, поставщик, порядок, тип или значение параметров
- Исполнители и полосы отчётов теперь передают единое потокобезопасное управление отменой через всё разрешение данных, останавливаются после отмены, не фиксируя активную цель, и оставляют отменённый псевдоним доступным для чистого повтора вместо кэширования отмены в качестве ошибки данных
Безопасность
- Типизированные запросы данных отвергают управляющие символы, отрицательные координаты источника, дублирующиеся имена параметров, неподдерживаемые массивы Variant или ссылки, избыточные строки, избыточные псевдонимы или поставщиков и слишком большие схемы таблиц до небезопасной работы или изменения книги
Версия 2.361.69
Добавлено
TXLSXWorksheet.ClearRowHeightиClearColWidthудаляют одно явное переопределение размера, не затрагивая прочие метаданные строк и столбцов
Изменено
- Скомпилированные целевые объекты отчётов теперь завершают вычисление выражений до вызова динамического форматирования и фиксируют содержимое ячеек, числовые форматы, высоты строк и ширины столбцов через одну границу отката
- Восстановимые диагностики ячеек выводят стили красного шрифта и жёлтой заливки из имеющегося шрифта ячейки, сохраняют остальной стиль ячейки и повторно используют стили из пула при одинаковых базовых шрифтах и повторных запусках исполнителя
Исправлено
- Восстановимый сбой вычисления больше не оставляет после себя динамические числовые форматы или явные размеры строк и столбцов, а диагностическая запись теперь очищает любую формулу перед сохранением литерального текста
Версия 2.361.68
Добавлено
- Скомпилированные исполнители и генераторы отчётов предоставляют
ErrorMode,StrictDataAccessи неизменяемыйLastResultс конечным состоянием, количеством применённых записей, деталями сбоя и упорядоченными проблемами времени выполнения WriteAndContinueможет заменять явно восстановимые сбои данных ячеек литеральными диагностиками и завершаться какCompletedWithErrors, тогда как режимStopпо умолчанию остаётся совместимым
Изменено
- Строгий доступ к данным сообщает об отсутствующих таблицах, недоступном произвольном доступе, отсутствующих строках и полях через стабильные коды ошибок, когда в шаблоне нет явного резервного механизма
- Продолжение возможно только для явно помеченных восстановимых сбоев данных; структурные сбои, сбои обратных вызовов, отмены, ресурсов, безопасности, сериализации и другие фатальные сбои по-прежнему останавливают отчёт
Исправлено
- Сбои вывода в файл и зашифрованный файл теперь публикуют результат неудачного запуска вместо сохранения завершённого результата от предшествующей фазы генерации книги
Версия 2.361.67
Изменено
- Скомпилированные шаблоны, исполнители, полосы диапазонов и полосы таблиц Excel теперь разрешают
dbvalueиdbcountчерез одну изолированную сессию данных на логический запуск - Повторяющиеся псевдонимы загружаются один раз в рамках запуска, последующие запуски перезагружают данные поставщика, параллельные запуски хранят независимые кэши, а оба прохода
PreprocessAndRunразделяют один согласованный снимок таблиц - Выражения полос отчёта связывают только свои переменные строки или столбца, поэтому литеральные имена таблиц и встроенные переменные положения больше не принимаются за столбцы источника
Исправлено
- Сеансы данных отчёта и их снимки поставщиков освобождаются после успешного, отменённого или неудачного выполнения, включая исключения поставщиков и повторные попытки переиспользуемого исполнителя
Версия 2.361.66
Добавлено
TXLSReportDataContext.BeginRunвозвращает изолированный снимокIXLSReportDataSessionс возможностью осмотра состояния и подсчётом разрешённых или кэшированных псевдонимов
Изменено
- Сеансы данных отчёта используют хеш-кэш без учёта регистра для явных таблиц, отложенных результатов поставщиков, отсутствующих псевдонимов и ошибок данных поставщиков
- Каждый отдельный псевдоним достигает цепочки поставщиков не более одного раза за сеанс, результаты поставщиков остаются привязанными к запрошенному псевдониму, а рекурсия с тем же псевдонимом немедленно завершается ошибкой
- Прямые вызовы
TXLSReportDataContext.TryGetTableиRequireTableсохраняют отдельный кэш совместимости, который аннулируется при изменении регистраций
Версия 2.361.65
Добавлено
IXLSXImageBlobиTXLSXImageBlobпредоставляют неизменяемые растровые и SVG-полезные нагрузки с одноразовыми дайджестами SHA-256, размером в байтах и необязательным ключом кэшаTXLSReportImageResult.CacheKeyпозволяет поставщику изображений V2 явно идентифицировать повторно используемое содержимое, при этом конфликтное содержимое с тем же ключом отвергается до изменения листа
Изменено
- Повторяющиеся изображения отчёта совместно используют одну неизменяемую полезную нагрузку — по явному ключу кэша или точному совпадению дайджеста, — сохраняя независимые якоря и преобразования
- XLSX и ODS сохраняют каждую отдельную полезную нагрузку изображения один раз, повторно используют его связь с мультимедиа на всех листах и восстанавливают общие полезные нагрузки при повторном открытии книги
- Повторное открытие XLSX теперь восстанавливает сопутствующие данные SVG из связей расширений DrawingML и сопоставляет их с растровым резервом
Версия 2.361.64
Добавлено
TXLSReportImageResultможет объявлять исходные пиксельные размеры и DPI, а запросы и результаты изображений предоставляют относительные к якорю смещения цели в EMUTXLSXImage.OffsetXEMUиOffsetYEMUсохраняют положение рисунка внутри якоря при циклах сохранения и открытия XLSX и ODS
Изменено
- Привязка изображений V2 выводит физическую геометрию из заголовков PNG, JPEG, GIF, BMP, EMF и WMF, применяет размеры Natural, Contain, Cover или Stretch и центрирует вписанные изображения без декодирования их пикселей
- Растровая геометрия отвергается до изменения листа, если заголовки усечены, объявленные размеры противоречат друг другу, сторона превышает 100,000 пикселей или общий декодированный размер превышает 100 миллионов пикселей
Версия 2.361.63
Добавлено
IXLSReportImageDataProviderV2может возвращать байты изображения или заимствованные вызывающей стороной и переданные поставщиком потоки с контекстом книги, листа, цели, полосы, таблицы, строки, якоря и отменыOnTransformImageможет заменить или изменить размер изображения до привязки, а скомпилированные полосы диапазонов и таблиц Excel предоставляют снимок каждой фактической строки данных только для чтения
Изменено
- Потоки изображений V2 читаются ограниченными блоками с настраиваемым лимитом по умолчанию 64 МиБ; заимствованные потоки с произвольным доступом восстанавливают свою позицию, а переданные потоки освобождаются ровно один раз
- Полезные нагрузки V2 отвергают пустые данные, несовпадающие сигнатуры формата, несогласованные размеры, недопустимые якоря и смещения вне сетки до изменения листа
- Скомпилированные полосы диапазонов и таблиц Excel привязывают целевые объекты изображений один раз на сгенерированную строку из материализованных связанных столбцов, не сканируя ячейки сгенерированного листа
Версия 2.361.62
Добавлено
TXLSCompiledReportRunnerиTXLSReportGeneratorтеперь принимают существующийIXLSReportImageProviderс политиками отсутствующих изображений и ячеек директивTXLSReportImageBinder.ApplyTargetпривязывает одну прекомпилированную директиву изображения без сканирования несвязанных ячеек листа
Изменено
- Точные ячейки
{{#image Key}}компилируются в типизированные целевые объекты отчёта, остаются без изменений, если поставщик не настроен, и повторно используют свой скомпилированный ключ и координаты между сеансами исполнителя
Версия 2.361.61
Добавлено
TXLSCompiledReportRunnerтеперь предоставляет парные события генерации книги и листа со стабильной идентификацией листа, исходными и текущими координатами, данными отчёта только для чтения, счётчиками целей, отменой и деталями сбояTXLSReportGeneratorвыполняет шаблоны книги, файла, потока или зашифрованного файла через события жизненного цикла чтения шаблона и генерации с выбором изменения на месте или атомарного клонирования
Изменено
- Генерация отчёта замораживает исходный набор листов, перекомпилируется после структурных изменений, вызванных обратными вызовами, отвергает параллельное изменение той же книги, составляет пары вошедшим событиям при отмене и сбое и сохраняет первое исключение
- Потоки отчёта остаются собственностью вызывающей стороны, шаблонные потоки с произвольным доступом восстанавливают позицию, потоки только вперёд потребляются ограниченными блоками, а приёмники потока, файла и зашифрованного файла меняются только после успешного завершения
- Скомпилированные отчёты без обработчиков жизненного цикла сохраняют прямой цикл целей без сканирований листа, контекстов событий и размещений жизненного цикла на каждую цель
Версия 2.361.60
Добавлено
- Книги XLSX теперь предоставляют
HasWebAddinTaskPanes,WebAddinTaskPaneCountиRemoveWebAddinTaskPanesдля точного осмотра и удаления областей задач в корне пакета
Изменено
- Удаление областей задач веб-надстроек теперь проверяет ограниченный внутренний граф связей до изменения, сохраняет общие и несвязанные части пакета, удаляет эксклюзивных потомков и собственные части связей, перестраивает типы содержимого, предотвращает воскрешение копии источника и является идемпотентным
- Классические книги XLS и ODS сообщают об удалении областей задач веб-надстроек как о неподдерживаемой операции, не сканируя содержимое пакета
Версия 2.361.59
Добавлено
- Классические книги XLS и XLSX теперь предоставляют парные свойства
SaveExternalLinkValuesиUpdateLinksдля сохранения кэша и объявленного в файле предпочтения обновления связей
Изменено
- Отключение кэшированных значений внешних связей теперь опускает только классические записи
XCT/CRNили содержимоеsheetDataSetXLSX, сохраняя определения связей, определённые имена, отношения, неизвестный XML и кэши в памяти - Политики внешних связей теперь проходят цикл сохранения и загрузки с зарезервированными исходными значениями без потерь до их изменения, преобразуются между XLS и XLSX, сохраняют неизменённые сжатые части пакета и никогда не инициируют доступ к внешним файлам или сети
Версия 2.361.58
Добавлено
TXLSHTMLExportиTXLSXHtmlExportSessionтеперь предоставляют неизменяемый снимокRenderGeometry, используемый текущей операцией HTML
Изменено
- Классические экспортёры XLS и XLSX в HTML теперь преобразуют символьные ширины Excel в фиксированные длины CSS через специфичную для бэкенда геометрию максимальной ширины цифры вместо жёстко заданных коэффициентов преобразования или символьных единиц CSS
- Экспорт HTML книги, листа, диапазона и инкрементальный многолистовой экспорт захватывают одну калибровку уровня операции с ограниченным кэшем метрик и никогда не изменяют сохранённые высоты строк и ширины столбцов
Версия 2.361.57
Изменено
- Операции PDF, SVG, растровых изображений, предпросмотра печати и просмотрщика книги теперь захватывают отдельные неизменяемые снимки геометрии отрисовки с ограниченными кэшами метрик, учитывающими бэкенд
- Общая отрисовка страниц и перенос строк SVG теперь используют измерение шрифтов уровня операции вместо глобального для процесса состояния GDI-растровых изображений и списков строк, не изменяя сохранённые высоты строк и ширины столбцов
Версия 2.361.56
Изменено
- Классический автоподбор размеров XLS и XLSX теперь захватывает один неизменяемый сервис геометрии отрисовки книги на операцию, включая калиброванное измерение текста, перенос строк, межстрочные интервалы, поля ячеек и фактические видимые шрифты XLSX
- Разбивка на страницы теперь захватывает геометрию уровня книги для каждой сборки, удаляет глобальное для процесса состояние обычного шрифта и максимальной ширины цифры и применяет калиброванные неявные ширины столбцов, не изменяя сохранённые высоты строк и ширины столбцов
Версия 2.361.55
Добавлено
- Классические книги XLS и XLSX теперь создают неизменяемые принадлежащие операции сервисы геометрии и измерения шрифтов с ограниченными локальными кэшами, общими преобразованиями ширин и без глобального для процесса кэша DPI или базовой ширины автоподбора
Версия 2.361.54
Добавлено
- Классические книги XLS и XLSX теперь предоставляют проверенные значения
TXLSRenderCalibrationплюс независимые снимкиCaptureRenderCalibrationи значения по умолчаниюResetRenderCalibrationдля будущих операций отрисовки
Версия 2.361.53
Добавлено
- Загрузка XLSX теперь сообщает
xlsDiagnosticPrinterSettingsRelationshipInvalid, когда связь параметров принтера листа отсутствует, имеет неверный тип или ведёт в никуда
Изменено
SaveXLSWorkbookAsXLSXиSaveXLSXWorkbookAsXLSтеперь передают типизированные поля параметров страницы и непрозрачные байты драйвера принтера независимо, причём стандартные поля имеют приоритет над дублирующими частными значениями по умолчанию
Исправлено
- Загрузка XLSX больше не связывает несвязанную часть параметров принтера, когда связь, названная в
pageSetup, недействительна - Преобразование XLSX в BIFF8 теперь отвергает слишком большие или непредставимые параметры принтера до записи любых байтов приёмника
Версия 2.361.52
Добавлено
- Классические листы XLS и XLSX теперь предоставляют изолированные при копировании свойства
PrinterDriverDataиHasPrinterDriverDataплюсClearPrinterDriverDataдля прямого управления непрозрачными данными драйвера принтера
Исправлено
- Очистка данных драйвера принтера XLSX теперь удаляет связь листа и двоичную часть пакета, даже когда включено сохранение неподдерживаемых частей
Версия 2.361.51
Изменено
- Загрузка и сохранение XLSX теперь сохраняют двоичные параметры принтера каждого листа через связь
pageSetup, объявление типа содержимого и часть пакетаprinterSettingsN.bin - Параметры принтера переживают копирование листов внутри одной книги и между книгами с побайтно точным независимым владением, при этом неизменённые исходные части могут сохранять свои исходные сжатые данные
Версия 2.361.50
Изменено
- Загрузка и сохранение классических XLS теперь сохраняют полную полезную нагрузку драйвера принтера BIFF
PLSвместе с каждым следующим сразу за ней сегментомContinue - Полезные нагрузки драйвера принтера глубоко копируются вместе с листами, выводятся до
Setupфрагментами точного размера BIFF и отвергаются, когда структурно неполны или превышают предел безопасности 1 МиБ
Версия 2.361.49
Добавлено
- Параметры страницы классических XLS теперь предоставляют свойства
HasSetupRecordиPrinterSettingsInitializedтолько для чтения, чтобы вызывающие стороны могли отличить отсутствующие или неинициализированные параметры принтера от заданных значений
Изменено
- Сохранение нетронутого классического листа теперь сохраняет отсутствие записи BIFF
Setupи удерживает каждый байт существующей 34-байтовой записи, включая зарезервированные и не охваченные моделью биты флагов - Установщики параметров страницы теперь создают отсутствующую запись
Setupтолько при необходимости и инициализируют зависящие от принтера поля или поля ориентации в соответствии с затронутым свойством
Версия 2.361.48
Добавлено
SaveXLSXWorkbookAsXLSтеперь преобразует книгу модели XLSX в BIFF8 через перегрузки для файла и потока, сохраняя загруженные значения, формулы, основные стили, объединённые диапазоны, размеры строк и столбцов, режим даты книги и состояние активного листа
Изменено
- Преобразование XLSX в XLS строит одну детерминированную палитру из 56 цветов до записи стилей, сохраняет уже используемые индексированные слоты и применяет взвешенную квантизацию OKLab, когда прямые цвета превышают ёмкость BIFF8
- Путь преобразования обходит загруженные разреженные или упакованные ячейки без материализации исходной сетки, отвергает координаты за пределами ограничений BIFF8 до прикосновения к приёмнику и теперь доступен в примерах ConversionWorkbench для Delphi и C++Builder
Версия 2.361.47
Добавлено
- Классические книги XLS и XLSX теперь предоставляют парные методы
ApplyBiffPalettePlan, которые проверяют и атомарно применяют текущий план палитры на 56 слотов - Классические книги теперь предоставляют
BiffPaletteSavePolicyс явной опцией оптимизации BIFF8 и значением по умолчанию, сохраняющим исторический вывод палитры
Изменено
- Применение плана палитры теперь проверяет поколение источника, хеш источника, все идентификаторы и цвета слотов, агрегированные счётчики, блокировки сохранения, флаги изменений и непрозрачные цели до первого изменения, а затем один раз перестраивает кэшированный сопоставитель OKLab
- Оптимизированные сохранения BIFF8 оставляют применённую палитру в книге после успеха, но восстанавливают все 56 исходных цветов и исходное поколение, если вывод завершается сбоем или отменяется; пути вывода BIFF5 и не-BIFF остаются без изменений
Версия 2.361.46
Добавлено
- Классические книги XLS и XLSX теперь предоставляют парные методы
BuildBiffPalettePlan, возвращающие не изменяющий состояние план на 56 слотов с идентификацией исходной палитры, заблокированными слотами, предлагаемыми цветами, агрегированными отображениями true-color, точным покрытием и статистикой перцептивной ошибки
Изменено
- Планирование палитры BIFF теперь сохраняет индексированных потребителей и существующие точные цвета до назначения свободных слотов, а затем использует детерминированную частотно-взвешенную кластеризацию OKLab только когда прямые и разрешённые цвета темы превышают оставшуюся ёмкость
- Построение плана палитры читает сохранённые метаданные стилей и условного форматирования, не изменяя элементы палитры, счётчики пользовательских цветов, ячейки, поведение сохранения или разреженное хранилище
Версия 2.361.45
Добавлено
- Классические книги XLS и XLSX теперь предоставляют парные методы
ScanIndexedColorUsage, возвращающие детерминированную опись на 56 слотов с публичными и физическими индексами, нормализованными значениями ARGB, счётчиками определений и ссылок, видами потребителей и блокировками сохранения
Изменено
- Сканирование использования индексированных цветов теперь охватывает пулы стилей книги, разреженные ссылки на ячейки, именованные стили, наложения диапазонов, линии сетки листа, фигуры, комментарии, форматированный текст, шрифты диаграмм, дифференциальные стили, гистограммы и цветовые шкалы без материализации неиспользуемых ячеек или изменения состояния книги
- Индексированные цвета условного форматирования теперь проходят цикл сохранения и загрузки через классические дифференциальные стили, гистограммы и цветовые шкалы BIFF и OpenXML, включая потоковые сохранения, выводящие идентификаторы дифференциальных стилей до частей листа
Версия 2.361.44
Добавлено
- Классические книги XLS и XLSX теперь предоставляют парные методы
NearestIndexedColor, возвращающие ближайший публичный индекс палитры, физический слот, нормализованное значение ARGB, квадрат перцептивного расстояния и статус точного совпадения
Изменено
- Сопоставление ближайших индексированных цветов теперь разделяет одну кэшированную реализацию OKLab между обоими движками книг и устаревшим менеджером цветов, с детерминированным разрешением ничьих по наименьшему индексу и обновлениями кэша, ограниченными фактическими изменениями палитры
- Запросы ближайшего цвета сканируют только 56 физических элементов палитры BIFF, отвергают частично прозрачные входные данные и никогда не изменяют состояние палитры или книги
Версия 2.361.43
Добавлено
- Классические книги XLS и XLSX теперь предоставляют парные перегрузки
ResolveIndexedColor, классифицирующие публичные цветовые индексы, значения BIFFicvи индексированные цвета OOXML, возвращая метаданные палитры, автоматического, системного или недопустимого цвета - Типизированный результат индексированного цвета сообщает исходный индекс, слот палитры, роль системного цвета, нормализованное значение ARGB и то, был ли разрешён конкретный цвет
Изменено
- Токены автоматического и системного цветов больше не опрашивают текущий рабочий стол Windows неявно; вызывающие стороны могут передать явный распознаватель, когда требуется конкретный цвет окружения
- Системные цвета темы теперь используют сохранённое резервное значение RGB, делая загрузку, сохранение и автономную обработку детерминированными на разных машинах
Исправлено
- Недопустимые значения индексированных цветов OOXML больше не разрешаются в непрозрачный чёрный, а значения по умолчанию устаревшего менеджера цветов теперь используют точные 128-канальные значения палитры
Версия 2.361.42
Добавлено
TXLSWorksheetиTXLSXWorksheetтеперь предоставляют парные методыTryGetOutlineNode,SetOutlineNodeCollapsedиSetOutlineDisplayLevelдля узлов структуры строк или столбцов с нумерацией с единицы
Изменено
- Запросы и обновления структуры листа теперь адаптируют разреженные метаданные движка к сжатым планам, по умолчанию сохраняют состояние вложенных потомков и применяют изменения скрытия и сворачивания без сканирования неиспользуемых координат листа
- Группы строк и столбцов OpenDocument теперь сохраняют собственное вложенное состояние отображения при прямых изменениях метаданных, структурных правках, циклах ODS и преобразовании в маркеры узлов структуры XLSX
TXLSXWorksheet.ToggleRowGroupedиToggleColGroupedостаются доступными как учитывающие направление оболочки совместимости вокруг API узлов структуры
Версия 2.361.41
Добавлено
TXLSOutlineGeometryтеперь может строить сжатые экземплярыTXLSOutlineMutationPlanдля идемпотентного сворачивания или разворачивания узлов и изменения уровня отображения структуры с нумерацией с единицы- Планы изменения структуры предоставляют явные режимы сохранения, сворачивания и разворачивания потомков, сохраняя по умолчанию независимость вложенных маркеров сворачивания
Изменено
- Разворачивание вложенного узла структуры теперь учитывает свёрнутых предков и свёрнутых потомков при выведении видимости, а массовое обнаружение узлов обходит только материализованные диапазоны за линейный проход с монотонным стеком
Версия 2.361.40
Добавлено
- Новый независимый от движка модуль
lxOutlineстроит геометрию структуры строк или столбцов из отсортированных разреженных диапазонов и обнаруживает узлы с итогом до или после, вложенные детальные диапазоны, уровни итогов, скрытое состояние и явные маркеры сворачивания без сканирования неиспользуемых координат листа
Версия 2.361.39
Добавлено
- Метаданные столбцов классических XLS теперь предоставляют независимый маркер сворачивания структуры через
TXLSColumnInfo.CollapsedиTXLSColumnInfoList.Collapsed
Исправлено
- Маркеры сворачивания структуры столбцов классических XLS теперь переживают циклы BIFF, копирование форматов столбцов, копирование листов и объединение смежных записей, сохраняя без изменений заданную ширину, флаги подбора по содержимому и фонетические флаги
Версия 2.361.38
Исправлено
- Столбцы итогов структуры классических XLS теперь сохраняют свою логическую позицию слева или справа в представлениях листа слева направо и справа налево вместо записи противоположного бита направления в
WSBOOL
Версия 2.361.37
Добавлено
- Классические листы XLS и XLSX теперь предоставляют
EvaluateFormulaAtдля вычисления формул A1 или R1C1 только для чтения в явном контексте целевой ячейки IXLSFormulaEvaluationTemplateодин раз компилирует неизменяемый якорь формулы и многократно вычисляет его в других ячейках черезEvaluateAtилиEvaluateAtWithOptions- Опции вычисления формул теперь включают ограничения на длину формулы, шаги элементов синтаксиса, глубину рекурсии и байты генерируемого массива, а исчерпание сообщается как
xlfeResourceLimit
Изменено
- Одноразовое и повторно используемое вычисление теперь разделяют локальные для листа имена, структурированные ссылки, некэшированные зависимости формул, корни массивов, волатильный статус, отмену и явно авторизованные внешние ссылки без записи состояния книги
- Существующие методы
Calculateкниги и листа остаются фасадами совместимости над типизированным контекстным вычислителем
Исправлено
- Контекстное вычисление теперь сохраняет варианты ошибок формул и различает сбои разбора, неподдерживаемой функции, циклической ссылки, внешней ссылки, отмены, времени жизни листа и лимита ресурсов
- Повторно используемые шаблоны R1C1 теперь переводят относительные смещения строк и столбцов от своего якоря компиляции при вычислении в другой целевой ячейке
Версия 2.361.36
Добавлено
ConvertExternalDefinedNamesToRefErrorsтеперь доступен в классических книгах XLS и XLSX, чтобы отсоединять подтверждённые определённые имена внешних книг, не переписывая обычные формулы ячеек- Пропущенные некорректные или неподдерживаемые определения сообщаются через
xlsDiagnosticDefinedNameConversionSkipped
Изменено
- Преобразование атомарно заменяет выбранные определения на собственный
#REF!, сохраняя область книги или листа, видимость, комментарии, флаги макросов и встроенных имён, неизвестные атрибуты и части внешних связей
Исправлено
- Синтаксис слотов внешних определённых имён, такой как
=[1]!RemoteName, теперь разрешается через объявленную связь книги, а зависимые формулы сохраняют результирующее значение ошибки Excel при пересчёте
Версия 2.361.35
Добавлено
TXLSWorkbookWorkspace.Recalculateтеперь вычисляет зарегистрированные узлы формул Classic XLS, XLSX и ODS за один топологический проход по всем книгам с обнаружением сильно связных компонент и распространением поколений изменённых значенийTXLSWorkspaceRecalcResultсообщает о повторном использовании графа, изменённых и вычисленных узлах, циклах, заблокированных зависимых, аннулированиях, а также попаданиях и промахах кэша времени выполнения
Изменено
- Рабочая область удерживает свой граф зависимостей, пока не изменятся регистрации или топология формул, тогда как обычные правки значений помечают изменёнными только затронутые узлы книги и их транзитивных зависимых
- Повторные чтения внешних ячеек за один проход вычисления разделяют точный кэш книги, листа, строки и столбца, который аннулируется перед каждым запланированным обновлением формулы
Исправлено
- Двунаправленные связи между книгами больше не считаются циклическими, если только граф ячеек формул не содержит реального цикла; участники цикла и их заблокированные зависимые аннулируются вместо возврата устаревших кэшированных значений
- Неудачный или аннулированный циклом сеанс рабочей области теперь сохраняет локальное для движка изменённое состояние, поэтому последующий пересчёт книги повторяет незавершённые формулы вместо того, чтобы считать частичный проход завершённым
Версия 2.361.34
Добавлено
TXLSWorkbookWorkspace.BuildDependencyGraphтеперь создаёт один граф зависимостей для всех зарегистрированных книг Classic XLS, XLSX и ODS, удерживая идентификацию книг, листов, ячеек, прямоугольных диапазонов и определённых имён с областью видимостиTXLSWorkspaceDepGraphпредоставляет запросы узлов формул, ссылок, рёбер, зависимых ячеек и зависимых определённых имён плюс диагностику проверки кандидатов для проверки производительности
Изменено
- Большие диапазоны формул остаются компактными интервалами вместо развёртывания в отдельные ячейки, а деревья интервалов строк отсекают как поиск зависимых, так и построение рёбер без материализации упакованных значений листа
- Локальные определённые имена сохраняют как свою символьную зависимость, так и статически разрешённые зависимости от ячеек или диапазонов, тогда как внешние определённые имена удерживают объявленные слот внешней книги, имя и область листа
Исправлено
- Обычные определённые имена больше не очищаются, пока анализатор формул проверяет необязательный префикс внешней книги
Версия 2.361.33
Добавлено
TXLSWorkbookWorkspace.OnLoadWorkbookтеперь может запрашивать внешнюю книгу по политике, управляемой вызывающей стороной, не более одного раза на нормализованную идентификацию, аResolveWithLoaderсообщает типизированные диагностики «не найдено», «ошибка», «цикл» и «лимит ресурсов»MaxLoadDepth,MaxWorkbookCountиResetLoadAttemptsпредоставляют явные границы и управление повторами для загрузки внешних книг
Изменено
- Параллельные запросы внешних книг теперь разделяют один выполняющийся результат загрузки, а вложенный повторный вход отвергается без ожидания в межпоточном цикле загрузки; рабочая область по умолчанию по-прежнему не выполняет доступа к файловой системе или сети
Версия 2.361.32
Добавлено
- Классические книги XLS теперь предоставляют
CreateWorkspaceWorkbook,RegisterExternalWorkbook,UnregisterExternalWorkbookиExternalWorkspace, позволяя книгам Classic, XLSX и ODS выдавать внешние значения формул через одну независимую от движка рабочую область - Кэши внешних связей классических XLS теперь декодируют числовые, строковые, логические, ошибочные и пустые значения из типизированных записей XCT и CRN в разреженный поиск за постоянное время без материализации листов
Изменено
- Вычисление внешних формул теперь разрешает имена листов до позиционных резервов и согласованно читает сначала явно зарегистрированную живую книгу, затем типизированный файловый кэш, затем возвращает
#REF!, при этом уничтоженные регистрации отзываются без неявного доступа к файлам или сети - Заключённые в кавычки идентификации внешних книг могут содержать схемы URI, буквы дисков Windows и прочие двоеточия, не будучи принятыми за разделитель трёхмерного диапазона листов, поэтому IRI внешних источников ODF остаются нетронутыми при импорте формул
Версия 2.361.31
Добавлено
TXLSWorkbookWorkspace,IXLSWorkspaceWorkbookиTXLSXWorkbook.CreateWorkspaceWorkbookпредоставляют потокобезопасный фундамент идентификации и регистрации внешних книг с явным статусом разрешения, отслеживанием поколений и отзывными адаптерами книг
Изменено
TXLSXWorkbook.RegisterExternalWorkbookтеперь сохраняет пути и расширения, разрешает относительные цели связей относительно владеющей книги, отвергает неоднозначные псевдонимы или цели с одинаковым базовым именем вместо молчаливого выбора одной, отзывает регистрации при уничтожении целевой книги и удерживает типизированный резервный кэш внешних связей без неявного доступа к файлам или сети
Версия 2.361.30
Добавлено
- Представления классических и XLSX книг только для чтения теперь могут вычислять формулы по требованию через
xlsvEvaluateFormulasи сообщать независимый результат черезFormulaEvaluation, не заменяя сохранённые кэши формул
Изменено
- Параллельные представления только для чтения теперь изолируют флаги рекурсии формул, скалярные результаты, скомпилированные формулы XLSX и матрицы массивов, тогда как внешние формулы XLSX используют только локальные для файла кэши внешних связей и никогда не разыменовывают регистрации живых книг
Исправлено
- Кэшированные значения внешних связей XLSX теперь разрешают индекс листа с нумерацией с единицы, передаваемый внешними записями XTI, в правильную запись кэшированного листа с нумерацией с нуля
Версия 2.361.29
Добавлено
- Книги XLSX теперь предоставляют
IXLSXWorkbookOwner.CreateReadOnlyViewс локальными для представления активными листами, материализованными и упакованными снимками ячеек по значению, кэшированными результатами формул, опциональным текстом формул, безопасным порядком освобождения владельца или представления и исключением записи с немедленным отказом
Изменено
- Представления XLSX только для чтения используют только локально сохранённые кэши внешних формул и никогда не разыменовывают слабые регистрации живых книг
Версия 2.361.28
Добавлено
- Классические книги теперь предоставляют
CreateReadOnlyViewиIXLSReadOnlyWorkbookViewдля представлений общей модели за постоянное время с независимыми активными листами, снимками ячеек по значению, кэшированными результатами формул, опциональным текстом формул, подсчитанным по ссылкам временем жизни владельца и исключением записи с немедленным отказом
Версия 2.361.27
Добавлено
- Книги Classic, XLSX и ODS теперь предоставляют
CreateFormulaCacheReaderи общий интерфейсIXLSFormulaCacheReaderдля независимого от движка осмотра кэшей формул с безопасным аннулированием времени жизни
Изменено
- Осмотр кэша общих формул теперь сохраняет независимый сохранённый результат каждого участника, поэтому последователь без кэшированного значения сообщает об отсутствии вместо наследования значения корневого участника
Версия 2.361.26
Добавлено
TXLSXWorkbook.TryGetCachedFormulaValueтеперь сообщает о наличии кэша формул XLSX и ODS, его происхождении и виде значения без вычислений или изменения книги
Исправлено
- Кэши формул XLSX и ODS теперь сохраняют отсутствующие и явные пустые результаты, пустые строки, логическую «ложь», числовой ноль, типизированные ошибки и явные даты при сохранении и повторном открытии, при этом изменённые формулы больше не сериализуют устаревшие кэшированные результаты
Версия 2.361.25
Добавлено
- Классические книги теперь предоставляют
TryGetCachedFormulaValueс явным наличием кэша, происхождением и видом значения, позволяя прочитать сохранённый результат формулы без вычислений, обратных вызовов пользовательских функций, декомпиляции токенов или изменения книги
Исправлено
- Логические и ошибочные кэши формул классических XLS теперь используют указанный байт полезной нагрузки BIFF в обычных и общих формулах, а загруженные ошибочные результаты остаются типизированными значениями
varErrorпри сохранении и повторном открытии
Версия 2.361.24
Добавлено
- Классические и XLSX книги теперь предоставляют перегрузку
CreateLoadedCellCursor(Boolean), которая может включать независимо оформленные сохранённые пустые ячейки как снимкиxlckBlank
Изменено
- Опциональный обход пустых ячеек сохраняет порядок листов, строк и столбцов, держит упакованное хранилище XLSX сжатым и исключает координаты с унаследованным форматом, а также неоформленные заполнители Empty и Null
Версия 2.361.23
Добавлено
- Книги XLSX теперь предоставляют
TXLSXWorkbook.CreateLoadedCellCursorдля обхода в постоянном состоянии сохранённых ячеек значений и формул по всем листам в порядке строк TXLSLoadedCellKindтеперь включаетxlckError, благодаря чему сохранённые ошибочные значения XLSX удерживают свой отдельный вид значения
Изменено
- Курсоры XLSX обходят материализованные разреженные блоки строк или упакованное хранилище напрямую, не сортируя ячейки и не материализуя упакованных значений, а снимки формул возвращают текущее сохранённое кэшированное значение без пересчёта
- Изменения топологии во всей книге и освобождение книги аннулируют курсоры XLSX через общую аренду времени жизни, тогда как правки содержимого существующих ячеек сохраняют обход действительным, а захваченные снимки — во владении
Версия 2.361.22
Добавлено
- Классические книги теперь предоставляют
IXLSWorkbook.CreateLoadedCellCursorдля обхода в постоянном состоянии сохранённых ячеек значений и формул по всем листам в порядке строк TXLSLoadedCellSnapshotвозвращает передаваемые во владение идентификатор листа, координаты с нумерацией с единицы, стиль, вид значения, значение и текст формулы, не раскрывая внутренние объекты ячеек
Изменено
- Курсоры загруженных ячеек немедленно отказывают после изменений топологии ячеек, коллекции листов или замены модели книги, тогда как правки содержимого существующих ячеек сохраняют обход действительным, а ранее захваченные снимки — неизменными
Версия 2.361.21
Добавлено
- Хранилища ячеек листов и коллекции листов Classic и XLSX теперь предоставляют независимые счётчики структурных поколений для безопасного длительного обхода
XlsValidateStructureGenerationиEXLSLoadedCellCursorInvalidatedпредоставляют единый контракт проверки с немедленным отказом для читателей загруженных ячеек
Изменено
- Создание, удаление и очистка ячеек, переупорядочение координат, переходы упакованного хранилища, перестроения индексов, а также операции добавления, удаления или перемещения листов продвигают соответствующее поколение, тогда как правки содержимого существующих ячеек, переименование или активация листа и мутации без эффекта оставляют его стабильным
Версия 2.361.20
Добавлено
TXLSForwardReaderтеперь принимает входные данные ODS через ту же поверхность обратных вызовов, что и XLS, XLSX, CSV и TSVPeakRowBufferedBytesиSheetPassesStartedраскрывают пиковый рабочий набор логических строк общего строкового бэкенда и количество успешных проходов по листам
Изменено
TXLSForwardReaderтеперь адаптируетTXLSRowCursorдля каждого поддерживаемого формата, разделяя поведение границ строк, проекции столбцов, состояния формул, форматированного текста, пароля, пропущенных записей и позиции потока вместо поддержки отдельных путей сканирования- Индексы листов прямого считывателя согласованно нумеруются с единицы, а листы, пропущенные через
OnSheet, не открываются и не распаковываются
Версия 2.361.19
Добавлено
TXLSRowCursorтеперь предоставляет явные состояния «закрыт», «до первого», «активен», «конец файла», «отменён» и «сбой», а также идемпотентный методCancel, освобождающий поток активного листа без закрытия источникаCurrentRowViewпредоставляет проверяемую по поколению заимствованную проекцию текущей строки без дублирования её массива ячеек; продвижение, выбор листа, отмена, закрытие или уничтожение курсора аннулируют прежние проекции сEXLSRowCursorViewInvalidated- Открытия потоков теперь принимают
xsoBorrowedилиxsoOwned, передавая владение только после успешного открытия, аPeakRowBufferedBytesсообщает оценённый пиковый буфер логических строк с последнего открытия
Изменено
- Сбои части листа и начала прохода теперь сохраняют исходное исключение чтения и переводят курсор в состояние сбоя вместо отображения как отмена или нормальный конец файла; явный выбор листа сбрасывает проход для повтора
Версия 2.361.18
Добавлено
TXLSDirectCellиTXLSRowCursorCellтеперь предоставляютHasFormulaиFormulaTextAvailable, различающие простые значения, формулы с доступным текстом и формулы, чей текст подавлен или недоступенTXLSDirectReader,TXLSForwardReaderиTXLSRowCursorтеперь предоставляютIncludeFormulaText; его отключение сохраняет кэшированные значения, координаты, стили и наличие формул, избегая накопления текста формул в потоках XLSX и ODS
Изменено
- Границы строк и проекция столбцов теперь передаются в бэкенды XLS, XLSX, ODS, CSV и TSV до выделения значений, формул и форматированного текста; повторяющиеся диапазоны столбцов ODS перепрыгивают напрямую между выбранными столбцами, а повторяющиеся блоки строк обрезаются до запрошенного диапазона
- Опции прохода строкового курсора заморожены, пока активен проход по листу, и снова становятся изменяемыми после конца файла, выбора листа или закрытия, не позволяя проходу смешивать несовместимые настройки фильтрации или декодирования
Версия 2.361.17
Добавлено
TXLSRowCursorтеперь открывает файлы ODS и принадлежащие вызывающей стороне потоки, автоматически обнаруживает пакеты ODS по их mimetype илиcontent.xml, предварительно загружает имена листов и потоково передаёт выбранную таблицу черезFindFirstиFindNextбез материализации книги
Изменено
- Обход строк ODS лениво разворачивает повторяющиеся строки и столбцы, опускает покрытые ячейки как независимые значения, сохраняет оформленные пустые ячейки и кэшированные значения формул, восстанавливает позиции заимствованных потоков и сообщает недопустимые или ограниченные сеткой счётчики повторов через
OnSkippedRecord
Версия 2.361.16
Добавлено
TXLSRowCursorтеперь потоково читает файлы CSV и TSV или принадлежащие вызывающей стороне потоки с обнаружением BOM UTF-8 и UTF-16, многострочными записями в кавычках, экранированными кавычками, распознаванием разделителей запятой, точкой с запятой, табуляцией или вертикальной чертой, необязательным переопределением разделителя и необязательным распознаванием типов чисел, дат ISO, логических значений и ошибок
Изменено
TXLSForwardReaderиTXLSRowCursorтеперь разделяют один приостанавливаемый строковый текстовый бэкенд, сохраняя идентичные результаты обратных вызовов и выборки и освобождая полезные нагрузки Variant, формул и форматированного текста предыдущей строки перед продвижением
Версия 2.361.15
Добавлено
TXLSRowCursorтеперь открывает классические книги.xlsиз файлов или потоков, автоматически обнаруживает составные контейнеры BIFF и возвращает кэшированные числовые или строковые результаты формул плюс сохранённые ячейкиBlankиMulBlank, удерживая только текущую логическую строку
Изменено
- Перегрузки
Openстрокового курсора принимают необязательныйTXLSForwardFormat; открытия из файлов владеют своим внутренним потоком BIFF, открытия из потоков заимствуют поток вызывающей стороны и восстанавливают его начальную позицию приClose, а повторные проходыFindFirstпозиционируются напрямую на выбранный лист
Версия 2.361.14
Добавлено
- Вычисление формул теперь поддерживает
ISFORMULAдля отдельных ячеек, межлистовых ссылок и прямоугольных диапазонов, возвращая логический массив той же формы для входных диапазонов без вычисления указанных формул
Изменено
- Проверки наличия формул различают обычные значения и пустые ячейки, участников общих формул, участников классических и XLSX формул массивов, якоря динамических массивов и потомков динамического разлива; генерируемые массивы ограничены
FormulaArrayMemoryLimit - XLSX сохраняет
ISFORMULAс префиксом_xlfn., ODS выводит стандартное написание OpenFormula, а сохранения Classic XLS отвергают неподдерживаемую будущую функцию, не фиксируя частичный поток
Исправлено
- Разбор текста формул теперь распознаёт семь стандартных литералов ошибок Excel, позволяя
#REF!распространяться через функции, принимающие только ссылки, а определённое имя, разрешающееся в скаляр, сообщает#VALUE!вместо#NAME?
Версия 2.361.13
Добавлено
- Вычисление формул теперь поддерживает
UNICHARпо всему диапазону скаляров Unicode, включая дополнительные и символы частного использования, с совместимыми с Excel ошибками для нуля, значений вне диапазона, суррогатных кодовых точек и несимволов Unicode - Вычисление формул теперь поддерживает
BAHTTEXTс тайским текстом батов и сатангов, округлением средней точки с двумя десятичными от нуля, отрицательными значениями, повторяющимися группами миллионов и конечными входными данными в научной нотации
Изменено
UNICHARиBAHTTEXTотображают диапазоны и генерируемые массивы поэлементно, сохраняя локальные ошибки; XLSX сохраняетUNICHARс её префиксом будущей функции, тогда какBAHTTEXTостаётся стандартной чистой функцией и в XLS, и в XLSX
Версия 2.361.12
Добавлено
- Вычисление формул теперь поддерживает
COMBINAиPERMUTATIONAс усечёнными неотрицательными аргументами, проверяемым переполнением, трансляцией одноэлементных массивов и поэлементными ошибками, плюс единичные матрицыMUNITбез фиксированного потолка размерности - Классические и XLSX книги предоставляют
FormulaArrayMemoryLimitсо значением по умолчанию 64 МиБ для ограничения полезных нагрузок генерируемых формульных массивов, включая параллельных работников пересчёта XLSX
Изменено
PERMUTATIONAиспользует логарифмическое возведение в степень,COMBINAукорачивает свою мультипликативную рекурсию, аMUNITразмещает компактную числовую матрицу, записывая только её диагональ
Исправлено
- Числовые формульные массивы больше не классифицируются как скалярные числа, а вновь созданные классические книги применяют пределы сетки BIFF97 при вычислении формул до своего первого сохранения
Версия 2.361.11
Добавлено
- Вычисление формул теперь поддерживает
COT,ACOT,COTH,ACOTH,CSC,CSCH,SECиSECHс правилами главного значения, области определения, особенностей, конечных входных данных и больших аргументов для скалярных и транслированных массивов операндов
Исправлено
- Отображённые формульные функции теперь сохраняют прямые скалярные сбои как значения ошибок электронной таблицы, используют устойчивые к отмене ветви обратных величин и экспоненциальных хвостов для больших допустимых входных данных, записывают точные имена
_xlfn.без_xlws.и аккуратно отвергают неподдерживаемые формулы Classic BIFF
Версия 2.361.10
Добавлено
- Вычисление формул теперь поддерживает
CEILING.MATHиFLOOR.MATHс опущенными аргументами значимости и режима, независимой от знака значимостью, точными границами кратных десятичных и заданными направлениями режима отрицательных чисел
Изменено
- Формульные функции массивов теперь могут разделять линейный отображатель элементов с трансляцией одноэлементных строк и столбцов, одноразовыми снимками диапазонов и поэлементными ошибками преобразования или вычисления; XLSX использует префикс
_xlfn.для обеих новых функций, тогда как сохранения Classic BIFF аккуратно отвергают неподдерживаемые формулы
Версия 2.361.9
Добавлено
- Вычисление формул теперь поддерживает
SORTBYсо стабильным многоключевым упорядочением строк или столбцов, независимыми направлениями по возрастанию или убыванию, значениями по умолчанию при опущенном направлении, ключами из диапазонов или генерируемых массивов и одноразовыми снимками источника и ключей с последующей сортировкой за O(n log n)
Исправлено
- Сохранения Classic BIFF теперь аккуратно завершаются сбоем, когда формулу невозможно представить, вместо сообщения об успехе после отвержения внутреннего идентификатора будущей функции, а XLSX записывает
SORTBYс_xlfn.и никогда не добавляет_xlws.
Версия 2.361.8
Изменено
- Режим отображения нулей листа теперь использует одно решение по сырому значению во всех путях просмотрщика книги, предпросмотра, печати, растровых изображений, EMF, SVG, PDF, Classic HTML и XLSX HTML; фактический числовой ноль скрывается до форматирования чисел и измерения текста, при этом режим отображения формул сохраняет приоритет
Исправлено
- Представления листов XLSX теперь разбирают, записывают и копируют состояние отображения нулей через одну настройку, корректно обрабатывают базу дат 1904, сохраняют визуальные эффекты условного форматирования и геометрию гиперссылок для скрытых нулевых ячеек, оставляя сохранённые значения, публичный форматированный текст, вывод CSV и ODS без изменений
Версия 2.361.7
Изменено
- Режим отображения формул листа теперь использует одно решение по тексту с учётом защищённых ячеек во всех путях просмотрщика книги, предпросмотра, печати, растровых изображений, EMF, SVG, PDF, Classic HTML и XLSX HTML; текст формул использует выравнивание текста при общем выравнивании, сохраняет явное выравнивание и получает непостоянную удвоенную эффективную ширину макета, не перетекая в соседние ячейки
Исправлено
- Представления листов XLSX теперь принимают как
showFormulas="1", так иshowFormulas="true", сохраняют настройку при копировании листов внутри книги и между книгами и выводят требуемое состояниеsheetView, не изменяя кэши формул, вывод CSV, сохранение ODS или публичный контракт форматированных значений
Версия 2.361.6
Изменено
- Внешние формулы книг XLSX теперь разделяют один учитывающий грамматику лексер префиксов книг между преобразованием
OnlyExternal, диагностикой формул, привязкой вычислений, копированием между книгами и сериализацией генерируемых формул; числовые слоты связей каноничны, тогда как структурированные ссылки, строковые литералы, некорректные индексы и неоднозначные префиксы имён файлов надёжно завершаются сбоем TXLSXExternalLinkтеперь раскрывает свой исходныйRelationshipId,SourceSlotс нумерацией с единицы и типизированныйLinkKind, чтобы записи книг, DDE, OLE и неразрешённых внешних ссылок можно было проверять, не выводя идентификацию из порядка коллекции или текста цели
Исправлено
- Изменение цели внешней связи XLSX или списка листов теперь аннулирует скомпилированные привязки внешних формул по версии вместо повторного сканирования каждой ячейки, а неизменённые части внешних связей DDE или OLE без файлов связей остаются побайтово сохранёнными при сохранении
Версия 2.361.5
Исправлено
- Слоты внешних формул книг XLSX теперь следуют порядку документов внешних ссылок
workbook.xml, а не порядку файлов связей; отсутствующие, неразрешённые и неверного типа связи удерживают пустые слоты, чтобы последующие ссылки[N]не сдвигались
Версия 2.361.4
Изменено
- Заморозка формул классических XLS с
OnlyExternalтеперь классифицирует сохранённые ссылки BIFF и преобразует только подтверждённые формулы внешних книг, тогда как внутренние, надстроечные, DDE/OLE и некорректные ссылки остаются формулами
Исправлено
- Результаты формул, начинающиеся со знака равенства или апострофа, теперь остаются литеральными строками при преобразовании значений, а группы формул массивов снимаются до освобождения корневой формулы или формулы разлива
Версия 2.361.3
Изменено
- Вспомогательные связи классических XLS и индексы внешних листов теперь используют ограниченную типизированную классификацию для записей собственной книги, того же листа, надстроек, внешних книг, DDE/OLE, неиспользуемых и неизвестных записей
Исправлено
- Некорректные полезные нагрузки вспомогательных связей сохраняются побайтово вместо реконструкции как другой тип связи, а усечённые таблицы внешних листов больше не читают за пределами данных своих записей
Версия 2.361.2
Исправлено
- Формулы классических XLS теперь разрешают индекс XTI с нумерацией с нуля в токенах внешних определённых имён в правильную внутреннюю запись внешнего листа, включая первую запись
Версия 2.361.1
Исправлено
- Прямой писатель XLSX теперь выводит базовый флаг подавления SpreadsheetML
showDropDownтолько когдаShowDropDownотключён, сохраняя семантику публичного ориентированного на отображение API
Версия 2.361.0
Добавлено
- Ряды диаграмм получили
CategoriesMultiLevel: установите его, чтобы выводить категории какmultiLvlStrRef(иерархические подписи осей) вместо плоской строковой ссылки, с восстановлением при цикле сохранения и загрузки сохранённых диаграмм
Версия 2.360.0
Исправлено
- Комментарии имён классических XLS теперь используют правильный идентификатор записи
NAMECMT($0894); ранее использовавшийся идентификатор ($0019) принадлежитWINDOWPROTECTсогласно спецификациям BIFF
Добавлено
WindowProtectedв классических книгах проводит флаг защиты окна книги через цикл сохранения и загрузки в записиWINDOWPROTECT($0019), причём захваченные исходные тела имеют приоритет, если свойство не записано явно
Версия 2.359.0
Добавлено
- Таблицы данных диаграмм предоставляют независимые переключатели
showHorzBorder/showVertBorder/showOutlineвместо постоянного рисования всех границ - Линейные диаграммы получили линии проекции (
HasDropLines), а составные линейчатые диаграммы — линии рядов (HasSeriesLines), обе с прохождением цикла сохранения и загрузки; отдельные ряды можно убирать из легенды черезLegendDeleted, оставляя их на графике
Версия 2.358.0
Добавлено
- Полосы отчётов получили семантику фиксированных и пустых наборов данных:
EmptyBandPolicyсохраняет, очищает или удаляет строки шаблона, когда набор данных пуст (больше не остаётся неразрешённых заполнителей),FixedBandзаписывает копии поверх строк ниже, ничего не вставляя, для полос форм наложения, аDeleteLastRowсхлопывает последнюю копию, чтобы следующий за ней контент стыковался вплотную (поведение X-диапазона)
Версия 2.357.0
Добавлено
- Экспорт PDF может встраивать автономные шрифты OpenType с контурами CFF через поток OpenType
FontFile3и потомкаCIDFontType0; автоматический и полный режимы удерживают полную программу, а недоступный требуемый поднабор приводит к сбою до фиксации вывода OnGetFontDirectoriesпредоставляет разделённые точкой с запятой каталоги для запрошенного семейства и стиля шрифта; принятые деревья рекурсивно просматриваются один раз и индексируются по внутренним метаданным шрифта для кэшированного резервного разрешения
Изменено
- Встроенные шрифты с данными GPOS OpenType или устаревшего кернинга теперь используют позиционированные метрики знаков как для простого текста, так и для сложных письменностей, сохраняя согласованность измерения, переноса, выравнивания и размещения знаков в PDF
Версия 2.356.0
Добавлено
- Встраивание шрифтов PDF стало настраиваемой политикой с четырьмя режимами:
FontEmbeddingвыбирает автоматическое историческое поведение, требуемое создание поднаборов, встраивание полной программы или шрифты только с отображением, чьи программы удаляются, тогда как отображение CID и таблицы ToUnicode сохраняются; PDF/A отвергает вывод «только отображение» - Событие
OnFontEmbedсрабатывает один раз для каждого шрифта Unicode до разрешения метрик и отображений знаков, получает его имя и путь к файлу и может принять режим для отдельного шрифта или байты замещающего шрифта через явный контрактHandled
Версия 2.355.0
Добавлено
- Пересчёт классических XLS теперь использует лениво построенный граф зависимостей, распространяет изменения входных данных только на транзитивных зависимых, пересчитывает волатильные формулы при каждом проходе и вычисляет формулы в порядке зависимостей вместо повторного сканирования всей разреженной кучи ячеек
- Циклические ссылки в классических XLS теперь следуют
EnableIteration,MaxIterationsиMaxIterationChange; сильно связные компоненты изолируют независимые циклы, детерминированно их итерируют, а затем вычисляют расположенные ниже формулы - Связанные файлы PDF/A-3 получили детализированную перегрузку
AddAttachmentс отображаемыми именами Unicode, описаниями, временем изменения, экранированными именами MIME, метаданными размера в байтах и связями Source, Data, Alternative, Supplement или Unspecified TXLSPDFWriterсоздаёт автономные документы PDF без книги, с явными размерами страниц, многостраничным выводом, прямоугольниками, линиями, эллипсами, измеренным стилизованным текстом, преобразованиями координат, прямоугольным отсечением и управлением состоянием графики
Изменено
- Отключение
UseFullPrecisionв классических XLS теперь округляет кэшированные результаты формул и таблиц данных What-If до эффективной отображаемой числовой точности до того, как их потребляют зависимые формулы, включая процентные форматы и округление средней точки от нуля
Исправлено
- Пересчёт классических формул теперь использует собственные координаты ячеек с нумерацией с нуля, исключает сбои вычисления из кэша успехов и сохраняет распространение ошибок через зависимые функции массивов
Версия 2.354.0
Добавлено
- Оси диаграмм получили перечисление режима пересечения (
Crosses: autoZero / max / min, выводимое какcrosses, когда явныйCrossesAtне задан) и стили основных и промежуточных делений для каждой оси (in,out,cross), всё с прохождением цикла сохранения и загрузки AutoTitleDeletedна диаграммах заменяет жёстко заданный флаг автоматического заголовка и подавляет производный от рядов заголовок, когда установлен
Версия 2.353.0
Добавлено
- Ряды диаграмм получили
Smooth/SmoothSetдля отрисовки кривых линий иMarkerFillColor/MarkerBorderColorдля явных цветов маркеров; оба сохраняются при сохранении и открытии, а общий отрисовщик рисует сглаженные сегменты как квадратичные кривые и учитывает цвета маркеров
Версия 2.352.0
Добавлено
- Форматирование области диаграммы проходит цикл сохранения и загрузки:
RoundedCorners, явные цвета фона и границы диаграммы и цвет фона области построения сохраняются при сохранении и открытии, а общий отрисовщик диаграмм учитывает цвета фона и границы вместо постоянного рисования белым на сером - Переключатели защиты диаграммы проходят цикл за единым главным флагом:
ProtectionEnabledплюсProtectedChartObjects,ProtectedDataEditing,ProtectedFormatting,ProtectedSelectionиProtectedUserInterfaceвыводят и разбирают элемент OOXMLprotection
Версия 2.351.0
Изменено
- Линейчатые и столбчатые диаграммы в общем постраничном отрисовщике теперь следуют опциям макета группы построения: GapWidth задаёт размер кластера, Overlap расширяет и стягивает соседние столбцы вместе, а составные / процентные составные группировки накапливают один полнокластерный столбец на категорию вместо рисования рядов бок о бок
Версия 2.350.0
Добавлено
- Копирование диапазона между книгами теперь переносит каждый стиль ячейки по значению в пулы шрифтов, заливок, границ, числовых форматов, выравнивания и защиты книги-приёмника, поэтому
CopyRangeToиCloneRangeToмежду двумя открытыми книгами сохраняют форматирование независимым от порядка пулов - Классические книги XLS проводят через цикл сохранения и загрузки встроенные числовые и датные свойства документа:
CreatedDate,LastSavedDate,RevisionNumberиEditTimeMinutesсохраняются в потоке OLE SummaryInformation, нулевые значения пропускаются, а полная очистка удаляет их
Версия 2.349.0
Добавлено
- Классические книги XLS предоставляют состояние защиты ревизий общей книги за структурированными свойствами:
SharedRevisionProtectedиSharedRevisionPasswordHashпроходят цикл сохранения и загрузки, при этом захваченные исходные тела записей из разобранных файлов по-прежнему имеют приоритет, если свойства не записаны явно - Осведомлённость отчётов о шифровании:
TXLSCompiledReportTemplate.CreateEncryptedоткрывает защищённый паролем шаблон напрямую, аRunToEncryptedFileвыполняет отчёт и записывает зашифрованный по ECMA-376 результат за один вызов
Версия 2.348.0
Добавлено
- Опции вставки из буфера обмена для обоих движков:
PasteFromClipboardпринимает режимы «только значения» (сохранить кэшированные результаты, пропустить формулы, форматы и объединения) и режимы вставки строк / столбцов, которые сдвигают существующее содержимое перед посадкой блока - Прямые считыватели сообщают о пропущенном содержимом: прямой считыватель, строковый курсор и считыватель вперёд предоставляют
OnSkippedRecord, срабатывающее, когда пропускается некорректная ссылка на ячейку или сканирование листа BIFF прерывается на усечённых или несовпадающих записях
Версия 2.347.0
Добавлено
- Комбинаторы формирования таблиц отчёта:
Filterпотоково передаёт совпадающие строки лениво,Sortвыполняет стабильную многоключевую сортировку, аDistinctсохраняет первую строку на кортеж ключей - Адаптеры источников данных:
FromDataSetснимает открытыйTDataSetв таблицу отчёта (имена полей становятся столбцами, позиция набора данных восстанавливается), аFromObjectsотображает опубликованные свойства произвольных списков и массивов объектов в столбцы - Двунаправленные полосы отчёта:
RunBidirectionalпозволяет каждой главной строке формировать свои столбцы из связанной дочерней таблицы, создавая зубчатые макеты столбцов, где более короткие строки оставляют лишние клоны пустыми PreprocessAndRunвыполняет шаблон дважды: первый проход заполняет значения и выполняет структурные директивы, чтобы шаблон адаптировался к данным, второй проход перекомпилирует переформированную книгу и заполняет оставшиеся заполнители
Версия 2.346.0
Добавлено
- Заполнители отчётов принимают значение по умолчанию:
{{name;fallback}}записывает резервный текст, когда ключ отсутствует или пуст - Выражения отчётов получили
dbvalue(table, row, field[, default])иdbcount(table)для чтения любой зарегистрированной таблицы контекста данных по строке и столбцу, плюсtonumber(text)для преобразования строки в число иref(rowOffset, colOffset)— относительные ссылки, следующие за копиями полос; шаблоны, исполнители и полосы предоставляют свойствоDataContext - Голая ячейка
{{=formula(...)}}теперь записывает живую формулу в ячейку вместо простого текста, а другие голые выражения сохраняют свой вычисленный тип (числа остаются числовыми) - Новые структурные директивы отчёта:
{{#imgsize zoom=150}}масштабирует изображение, закреплённое в ячейке директивы,{{#comment text}}добавляет комментарий к ячейке,{{#html <b>bold</b>}}передаёт фрагмент в форматированный текст, а{{#sheetvisible Sheet false}}/{{#deletesheet Sheet}}управляют видимостью и удалением листа
Версия 2.345.0
Добавлено
- Книги XLSX получили политику пересчёта при сохранении:
RecalcBeforeSaveвыбирает ручное (по умолчанию), пересчёт при изменениях или постоянный пересчёт при сохранении файла RecalcNeededсообщает, является ли какая-либо ячейка с формулой или захваченная правка в данный момент изменённой, аRecalcCellпересчитывает книгу и возвращает свежевычисленное значение отдельной ячейки по листу, строке и столбцу
Версия 2.344.0
Добавлено
- Шаблоны отчётов поддерживают структурные директивы в тексте ячеек:
{{#delete A2}}очищает именованный диапазон,{{#format fmt=0.00 bold fill=FFFF00}}применяет числовые форматы, полужирность, курсив, шрифт и цвета заливки к столбцу над ячейкой директивы, а{{#aggregate sum A2:A99}}записывает формулы вида=SUM(A2:A99)— всё выполняется после заполнения значений заполнителей, ячейки директив после этого потребляются, а неизвестные глаголы директив по-прежнему сообщаются как диагностика шаблона
Версия 2.343.0
Добавлено
- Писатель ZIP создаёт архивы ZIP64: записи на пределе или за пределами 32-битных ограничений размера резервируют дополнительное поле ZIP64 в своём локальном заголовке с сигнальными классическими полями, записи центрального каталога выводят 64-битные размеры и смещения с повышением требуемой версии, а перед записью конца центрального каталога выводятся запись ZIP64 EOCD и локатор, когда любое классическое поле достигает насыщения
- Потолки размеров записей и архива на стороне записи повышаются до 16 ГБ и 64 ГБ соответственно; предохранители распаковки на стороне чтения не изменились
Версия 2.342.0
Добавлено
- Встроенные рисунки несут метаданные доступности:
AltTextиAltTextTitleна каждом изображении сериализуются как атрибутыdescrиtitleрисунка и загружаются обратно в типизированную модель для книг, которые не воспроизводят исходный XML якоря
Изменено
- Частины срезов и временных шкал уже проходят через непрозрачный слой пакета без потерь (проверено от начала до конца в этом выпуске); контракт цикла теперь закреплён регрессионным тестом, охватывающим открытие и повторное сохранение пакетов со срезами
Версия 2.341.0
Добавлено
- Исполнители отчётов могут выполнять автоподбор готового вывода:
AutofitModeвыбирает проход по строкам, столбцам или оба для каждого листа после применения всех целей и перед сериализацией, аAutofitAdjustmentдобавляет необязательный запас над измеренными размерами - Перенесённые строки получают размер по измеренному количеству строк текста относительно ширины столбца, поэтому многострочный текст ячеек, созданный шаблонами, увеличивает высоту строки так, как это сделал бы собственный автоподбор Excel
Версия 2.340.0
Добавлено
- Экспорт PDF может задавать начальный режим просмотрщика — закладки, миниатюры, полный экран, необязательное содержимое или вложения — через элемент каталога
/PageMode - Экспорт PDF может определять действие открытия, которое переходит к выбранной странице с явным коэффициентом масштабирования или открывает панель закладок при загрузке документа
- Метаданные XMP теперь содержат идентификаторы
DocumentIDиInstanceID, событиеxmpMM:History, даты изменения и метаданных и объявлениеdc:format, ожидаемое архивными валидаторами
Версия 2.339.0
Добавлено
- Физический конвейер печати: новый
TXLSPrintDocumentпечатает листы, книги или все видимые листы через общую модель разбивки на страницы с окнами страниц, подборкой копий, заголовком документа и событиями перед новой страницей / после генерации страницы - Предпросмотр в просмотрщике книги получает режимы масштабирования — по странице, по ширине или явный коэффициент от 25% до 400% — с масштабированием колесом при зажатом Ctrl, перелистыванием страниц колесом и горизонтальным панорамированием, когда масштабированная страница превышает окно
Версия 2.338.0
Добавлено
- Отрисовка диаграмм рисует ось значений: деления и выровненные по правому краю числовые подписи вдоль левого края, основные линии сетки, когда они включены, масштабирование в единицах отображения, обратную ориентацию и логарифмическое ограничение
- Ряды, назначенные на вторичную ось значений, масштабируются по своей собственной шкале, поэтому комбинированные диаграммы сохраняют независимые первичные и вторичные величины
- Пузырьковые диаграммы отрисовывают пузыри, масштабируемые по площади и вычисленные из столбца размера пузырей, вместо фиксированных точек-маркеров
- Диаграммы в памяти разрешают свои диапазоны значений, категорий и пузырей относительно владеющего листа, когда кэши пусты, поэтому только что созданные диаграммы отрисовываются идентично загруженным
- Модель диаграмм получает редактируемые размер отверстия кольцевой диаграммы, угол первого сектора, стиль радара, тип «из круговой», положение и режим разделения, размер вторичной области построения и ширину зазора, всё сохраняется при сохранении и загрузке
Исправлено
- Категорийные диаграммы, чьи точки несут значения без числовых категорий, больше не прерывают отрисовку заполнителем, что ранее подавляло деления, линии сетки и вывод рядов для каждой столбчатой, линейчатой и линейной диаграммы
Версия 2.337.0
Добавлено
- Постраничный вывод может отрисовывать комментарии ячеек как список в конце через новый режим
PrintCommentsэкспортёра SVG и модели разбивки на страницы: адрес ячейки, автор и текст появляются под последней строкой данных листа - Именованные объекты рисования экспортируются как изображения PNG с настроенными DPI и масштабом через
ExportObjectAsPNG, с парнымGetObjectSize, предназначенным только для измерения и возвращающим размеры объекта в пунктах без отрисовки - Якоря текстовых фигур вне используемого диапазона теперь расширяют печатную поверхность, как это уже делают диаграммы и рисунки
Изменено
- Отрисовщик разбивки на страницы кэширует разрешённые шрифты ячеек на проход и запоминает повторные измерения текста, устраняя избыточные чтения пула шрифтов и вызовы измерения GDI из циклов сжатия по размеру и переноса слов
Версия 2.336.0
Добавлено
- Поворот текста ячеек теперь отрисовывается в выводе изображений страниц, SVG, печати и предпросмотра: углы от 1 до 90 градусов против и по часовой стрелке вращаются вокруг центра ячейки, а составная форма 255 выводит одну букву на строку
- Ячейки с нижним и верхним индексом отрисовываются со смещённой базовой линией и уменьшенным размером знаков вместо потери своего вертикального выравнивания
- Разделы верхнего и нижнего колонтитулов соблюдают свои коды форматирования размера в пунктах
&nnи цвета&Kв каждом выводе, управляемом разбивкой на страницы - Ширины столбцов в постраничном выводе выводятся из измеренной максимальной ширины цифры обычного шрифта книги, поэтому книги на основе шрифтов, отличных от Calibri 11, разбиваются на страницы с точными для Excel границами столбцов
- Листы с пользовательским классическим цветом сетки отрисовывают свои линии сетки этим элементом палитры вместо фиксированного серого по умолчанию
Версия 2.335.0
Добавлено
- Около семидесяти классических функций листа теперь вычисляются, а не только разбираются: группа математики и тригонометрии
ATAN2 ASIN ACOS SINH COSH TANH ASINH ACOSH ATANH EVEN ODD, группа даты и времениTIME HOUR MINUTE SECOND DATEVALUE TIMEVALUE DAYS360, финансовая группаMIRR IRR IPMT PPMT DB,TRANSPOSE TYPE N ADDRESS ROMAN HYPERLINK MAXA MINA, а также написания до 2010 года для семейства распределений и статистики, такие какNORMSDIST TDIST CHIDIST FDIST POISSON QUARTILE PERCENTILE PERCENTRANK COVAR CHITEST GAMMALN, которые перенаправляются к точечным реализациям, использующим те же списки аргументов
Исправлено
- Устаревшие формы нормальной функции распределения с одним аргументом, такие как
NORMSDIST, вычисляли неправильно масштабированную аппроксимацию функции ошибок MIRRначислял сложные проценты на положительные денежные потоки с показателем периода, смещённым на единицу, из-за чего результаты отклонялись от значений Excel
Версия 2.334.0
Добавлено
- Заполнители полос отчёта, состоящие из одного поля значения, теперь записывают исходный тип данных в целевую ячейку: числа остаются числовыми, даты остаются ячейками дат и получают формат даты по умолчанию, когда у ячейки общий формат, а логические значения сохраняют свой тип ячейки, поэтому последующие SUM, сортировка и ссылки диаграмм работают на сгенерированных отчётах
- Пользовательские стили таблиц получили полный набор разделов, включая разделы промежуточных итогов сводных таблиц, подзаголовков, пустых строк и полей страниц, имя шрифта, размер, курсив, размер полосы и границы по четырём краям для каждого раздела через
SetSectionEx, плюс флагиpivot/table, свойства книгиDefaultTableStyleName/DefaultPivotStyleNameи полный цикл сохранения и загрузки на стороне чтения для стилей, разделов и атрибутов dxf - Открытие зашифрованной книги XLSX без пароля теперь вызывает
TXLSXWorkbook.OnPasswordс тем же контрактом повторов, что и классический движок, позволяя запрашивать пароль в GUI, не зная заранее, что файл зашифрован - Сохранение классических книг BIFF5 с паролем теперь применяет обфускацию XOR, а книги BIFF8 могут выбирать стандартный RC4 через
EncryptionType, завершая матрицу классического шифрования рядом с существующим значением по умолчанию RC4 CryptoAPI - Отрисовка текста листа в выводе изображений страниц, SVG, печати и предпросмотра теперь соблюдает вертикальное выравнивание и перенос слов WrapText с жадным разбиением строк, вместо обрезки перенесённых ячеек до одной центрированной строки
Исправлено
- Ячейки ошибок теперь отображают свой литерал ошибки Excel, такой как #DIV/0! или #REF!, в каждом пути отрисовки вместо неопределённого пустого текста
- Разделы пользовательских стилей таблиц записываются в форме схемы
tableStyleElement, чтобы Excel распознавал стиль, а цвет шрифта раздела больше не отбрасывает свою настройку полужирности - Снимки полос отчёта сохраняют каждое значение связанного столбца, когда полоса вырастает за пределы своей начальной ёмкости
Версия 2.333.0
Добавлено
TXLSPDFSignature.CertificationPolicyможет создавать сертификационную подпись DocMDP, допускающую отсутствие изменений, заполнение форм и подписание или заполнение форм, подписание и аннотации; сертифицированные каталоги ссылаются на подпись через/Perms, обычный сертифицированный вывод использует PDF 1.5, а несовместимая сертификация PDF/A-1 отвергается до изменения потока приёмника
Версия 2.332.0
Изменено
- Автоматический тегированный PDF теперь выводит полную структуру таблиц со строками, семантическими ячейками заголовков и данных, плотными идентификаторами помеченного содержимого на страницу, точными отображениями родительского дерева, диапазонами строк и столбцов объединённых ячеек и изоляцией артефактов для украшения страницы, диаграмм, изображений, верхних и нижних колонтитулов
Исправлено
- Повторное использование одного экспортёра PDF теперь очищает слоты двоичных объектов между документами, предотвращая замещение нового размещённого объекта профилем ICC, изображением или другим потоком из более раннего экспорта при изменении нумерации объектов
Версия 2.331.0
Добавлено
- Единый фасад рисования XLSX предоставляет смешанный порядок изображений, диаграмм, текстовых полей, сохранённых якорей и групп, с операциями вперёд, назад, на передний план, на задний план, группировки с учётом преобразований и разгруппировки после сохранения и повторного открытия, сохраняющими связи объектов рисования
- Именованные стили поддерживают автоматические или явные связанные части форматирования с сохранением локальных переопределений, а все 60 встроенных светлых, средних и тёмных стилей таблиц разрешаются через общие пути форматирования HTML, PDF, изображений, предпросмотра и просмотрщика
TXLSPDFBookmarkподдерживает иерархические закладки Unicode, отношения между соседними и дочерними элементами, цвета, полужирные или курсивные заголовки, а также развёрнутые или свёрнутые потомкиTXLSPageImageExporter.ExportAllAsTiffзаписывает выбранные страницы в поток или файл как один многопоточный TIFF со сжатием LZW, с прогрессом, отменой и атомарной заменой файла- Открытие классических XLS может останавливаться после глобальных метаданных или переходить непосредственно к выбранным листам по проверенным смещениям
BOUNDSHEET, включая перепозиционирование зашифрованного потока TXLSFormatSnapshotзахватывает полный классический формат ячейки независимо от исходной рабочей книги, аIXLSRange.ApplyFormatприменяет его к диапазонам ячеек, строк или столбцов- Совместимые типизированные массовые записи XLSX в порядке строк используют упакованное хранилище RLE, с публичной статистикой упакованных ячеек и байтов, а также прозрачной однократной материализацией для стабильных дескрипторов объектов
Изменено
- Пустые ячейки XLSX только со стилем разделяют подсчитываемые по ссылкам полезные данные с локальными правками при копировании при записи, автоматическим уплотнением при массовом форматировании, обновлениях именованных стилей, копировании, сортировке, патче форматирования, сохранении и загрузке, а также измеримым объёмом избежавших записи байтов
- Динамические массивы передаются напрямую в скалярные агрегаты, повторные точные поиски повторно используют типизированные инкрементальные кэши диапазонов, а неизменяемые токены формул без состояния используются совместно между компиляциями
- Эллиптические дуги используют адаптивное разбиение кубическими кривыми Безье, управляемое плоскостностью и общее для вывода PDF, SVG и растровых изображений, повышая точность только там, где это требуется масштабом или эксцентриситетом
- Вывод пакета XLSX теперь стабилизирует общие строки, гиперссылки, связи и порядок частей, так что обратная сборка создаёт байт-идентичные детерминированные пакеты
- Единый прямой считыватель XLS, XLSX, CSV и TSV удерживает память в ограниченных пределах; продолжения общих строк BIFF8 выгружаются за настраиваемый порог, сохраняя защиту проекции, выбранных листов, шифрования и некорректного ввода
Исправлено
- Связывание пакетов C++Builder Win64 больше не создаёт дублирующиеся vtable-таблицы обобщённых списков объектов Delphi из модулей сравнения рабочих книг и проверки импорта
Версия 2.330.0
Добавлено
TXLSXWorksheet.Subtotalвставляет сгруппированные строки промежуточных итогов, настраиваемую строку общего итога, формулы, наследуемое видимое форматирование и совместимые с Excel уровни структуры для отсортированных диапазонов данныхGetCellVisibleFormatразрешает форматирование листа, строки, столбца, наложения диапазона и явное форматирование ячейки без материализации пустой ячейкиCheckDataValidationпроверяет проверяемое значение на соответствие правилам, охватывающим одну ячейку, и может атомарно зафиксировать его только при допустимости
Изменено
- Мемо-записи сканирования поиска используют компактные точные двоичные ключи и один поиск полезных данных на попадание в кэш, уменьшая выделение памяти при пересчёте и работу с хеш-таблицей без изменения сравнений при поиске
- Экспорт CSV фиксированной ширины дополняет каждое поле одной операцией, сохраняя линейное время дополнения относительно настроенной ширины вывода
Исправлено
- Обратные сканирования
ReplaceTextInтеперь вызывают обратные вызовы замены в запрошенном порядке обратного сканирования - Стилизованные ячейки без значения или формулы больше не блокируют переполнение соседнего текста при отрисовке SVG, изображений и предпросмотра
- Числовой вывод классического XLS нормализует отрицательный ноль в дополнение к неконечным и субнормальным значениям перед записью числовых записей BIFF
Версия 2.329.0
Добавлено
A1ToR1C1преобразует формулы в стиле A1 в нотацию R1C1 (относительные смещения, абсолютные формы$, диапазоны и полные циклы черезR1C1ToA1), завершая оба направления преобразования стилей ссылок
Изменено
- Мемо-таблица поиска при пересчёте пропускает векторы сканирования менее пяти ячеек в
VLOOKUP,XLOOKUP/XMATCHиMATCH, где прямое сканирование дешевле, чем проход через словарь
Версия 2.328.0
Добавлено
- Общий рендерер страниц за выводом SVG, изображений и предпросмотра теперь отрисовывает стили ячеек XLSX: сплошные заливки (с альфа-каналом), шрифты и цвета для каждой ячейки, горизонтальное выравнивание с выравниванием чисел вправо по умолчанию в Excel, схлопывание границ в стиле Excel, где выигрывает более тяжёлый общий край, подгонку под ширину, масштабирующую шрифт под столбец, и переполнение длинного текста в последовательные пустые соседние ячейки
Версия 2.327.0
Добавлено
- Загрузчик CSV/TSV получает пофакторные директивы импорта (
cctText,cctNumber,cctDate,cctBoolean,cctSkip), повторяющие мастер импорта текста Excel, так что отдельные столбцы можно принудительно задать как текст для сохранения ведущих нулей, привести к типу или исключить из импорта - Импорт текста фиксированной ширины: назначение ширин полей переключает загрузчик с разбора по разделителям на нарезку по позициям символов, а модуль сохранения может выводить дополненные пробелами столбцы фиксированной ширины с усечением
Версия 2.326.0
Добавлено
- Поиск по рабочим листам XLSX получает оконные методы
FindTextInиReplaceTextIn, ограничивающие сканирование прямоугольным диапазоном ячеек, а также флаг порядка сканирования по столбцам, повторяющий режим Search: By Columns диалога поиска и замены Excel; обратное сканирование теперь принимает нулевую якорную точку, чтобы начинать из нижнего правого угла - Сохранение теперь защищает от формул длиннее ограничения Excel в 8192 символа, быстро завершаясь ошибкой с указанием проблемной ячейки, вместо записи книги, которую Excel открыл бы в режиме восстановления
Исправлено
- Нечисловые значения ячеек (NaN и положительная или отрицательная бесконечность) больше не могут просачивать неразбираемые токены в сохраняемые части XLSX; теперь они сериализуются как ячейки ошибок
#NUM!, а субнормальные числа двойной точности сбрасываются в ноль как в писателе XLSX, так и в писателе BIFF8, соответствуя тому, что Excel может хранить и отображать
Версия 2.325.0
Добавлено
- API форматов книг теперь включают редактируемые XML-карты и привязки схем, упорядоченные множественные окна книги, выделения нескольких областей и отдельных панелей, а также принадлежащий вызывающему коду просмотр токенов формул без потерь, их реконструкцию, замену ссылок и атомарную обратную запись для XLS и XLSX
- Обработка книг теперь включает устойчивую горизонтальную или вертикальную сортировку с пользовательскими компараторами и явным перемещением формул, преобразование стилей и формул BIFF2–BIFF4, единый проекционный фасад прямого чтения для XLS, XLSX, CSV и TSV, типизированные пользовательские представления, а также редактируемые подмодели соединений OLAP, веб-таблиц, текста фиксированной ширины и параметров
- Вычисление и проверка теперь включают структурированную диагностику отсутствующих функций, внешних ссылок и циклических зависимостей, глобальные и локальные для книги реестры пользовательских функций, визуальное двунаправленное упорядочивание Unicode, стратегии автоподбора для объединённых ячеек, типизированное сохранение макросов Excel 4 и сканирование команд, а также функции
ISOMITTED,ARRAYTOTEXT,VALUETOTEXT,PDURATIONиRRI - Компилируемая генерация отчётов теперь охватывает заполнители для всей книги, именованные полосы строк, столбцов и перекрёстных таблиц, расширяемые полосы таблиц Excel, единую абстракцию таблицы и курсора, точные индексы связей по составным ключам, отложенные контексты данных, потоковые комбинаторы таблиц, управляемые поставщики именованных запросов, постраничные полосы записей, листы продолжения при переполнении и неизменяемые рекурсивные включения
- Создание отчётов теперь включает компилируемые условия, поиск, регулярные выражения, динамические формулы и форматы, поля изображений, повторную привязку серий диаграмм, переиспользуемые исполнители с потоковым или атомарным файловым выводом, клонирование диапазонов с учётом зависимостей, планирование фиксированных нижних колонтитулов и сбалансированной разбивки на страницы, адресную диагностику, строгое выполнение, проверку шаблонов и безопасную миграцию поддерживаемых устаревших заполнителей
- Вывод PDF теперь включает автоматические деревья тегированной структуры, видимые или невидимые поля с подписью узла, явные профили соответствия PDF/A-1, PDF/A-2 и PDF/A-3 на уровнях a и b, атомарный прогресс и отмену, кэшированный подбор шрифтов с учётом стилей, контекстное формирование сложного текста, встроенные многоточечные градиенты, альфа-канал на точку, узоры заливки ячеек, тени и позиционируемые аннотации комментариев
- Общий рендеринг теперь включает встроенный SVG для диапазонов, страниц, книг и именованных объектов, инкрементальные страницы PNG и JPEG, независимую от бэкенда геометрию макета, встроенные векторные диаграммы и фигуры в HTML, сеансы частичного HTML с сохранением состояния и общими CSS, применяемые эффекты изображений, геометрию векторных фигур-заготовок и WordArt, расширенные детали научных и финансовых диаграмм, а также детерминированную компоновку коллизий подписей данных и линий-указателей
Изменено
- Все 55 проверенных пунктов возможностей F01–F18, R01–R19 и V01–V18 теперь имеют завершённые поддерживаемые реализации с явными границами владения, безопасности форматов, отмены и вывода
- Крупные шаблоны отчётов компилируют целевые объекты и выражения один раз, материализуют только привязанные поля осей, потребляют курсоры данных один раз, хешируют ключи связей и соединений, замораживают префиксы исходных коллекций для повторного непересекающегося клонирования и избегают повторного сканирования сгенерированных объектов книги
- Пути рендеринга совместно используют разбивку на страницы, геометрию, размещение объектов, состояние эффектов и кэши ресурсов документа, тогда как выводы PDF, SVG, HTML, растровых изображений, метафайлов, предпросмотра и печати сохраняют только свои кодировщики, специфичные для формата
Исправлено
- События записи ячеек XLSX теперь сериализуют свои эффективные значения замены без сохранения устаревших фрагментов форматированного текста, токены внешних имён BIFF сохраняют полный 4-байтовый индекс имён, а источники соединений верхнего уровня проходят полный цикл независимо от источников импорта текста, сохраняя резервный механизм устаревших источников
- Устаревшие стили BIFF и смысл формул, переназначение окон книги и выделений, смешанные абсолютные ссылки формул, владение токенами формул и запись недопустимых токенов теперь сохраняют детерминированное поведение без потерь при загрузке, редактировании и сохранении
- Развёртывание отчётов теперь отклоняет детерминированные конфликты таблиц, фильтров, имён, перекрытий, частичных объектов, сеток и запросов до структурной записи, сохраняет мощность таблиц с нулевым числом строк там, где это представимо, сохраняет точные целочисленные ключи соединений за пределами 2^53 и сообщает детерминированные подсчёты применённых изменений после отмены или сбоя
- Вывод PDF и векторных форматов теперь сохраняет сопоставления Unicode резервных шрифтов, графемные кластеры и кластеры формирующего контекста, ограничения архивных профилей, альфа-канал градиентов, эффекты изображений, оформление диаграмм, плотное размещение подписей и атомарность вывода без роста ресурсов при повторном содержимом
Версия 2.324.0
Добавлено
- Просмотр токенов формул без потерь и контролируемая обратная запись для XLS и XLSX через
TXLSFormulaTokenStream,ParseFormulaTokens,GetFormulaTokens,FormulaTokensToTextиSetFormulaTokensпредоставляют виды и классы токенов RPN, необработанные токены BIFF и дополнительные данные, независимые флаги ссылок, клонирование, замену ссылок, происхождение контекста и точное совместимое переиспользование BIFF, отклоняя некорректные, несовместимые, принадлежащие массивам или неподдерживаемые потоки до изменения ячеек - Расширяемые полосы таблиц Excel через
TXLSCompiledTableReportBandиспользуют один ограниченный снимок курсора для развёртывания одной строки шаблона данных с сохранением заголовков, итогов, диапазонов таблицы и автофильтра, состояния фильтра и сортировки, метаданных столбцов, вычисляемых формул и формул итогов, стилей, структурированных ссылок и зависимых объектов листа; представимые результаты с нулевым числом строк удаляют строку данных шаблона, тогда как поддерживаемые запросами, конфликтные, недопустимые и переполняющиеся макеты завершаются с ошибкой до записи - Цепочки резервных шрифтов PDF с учётом стилей через
SetFontFallbackChain,AddFontFallbackиClearFontFallbackChainsразрешают уровни исходных семейств и стилей по покрытию глифов, кэшируют загруженные начертания и выборы, сохраняют дополнительные скаляры и графемные кластеры между фрагментами, назначают различные CID последовательностям Unicode с общими глифами, встраивают автономные начертания TTC и атомарно отклоняют вывод PDF/A, когда встроенный глиф недоступен
Версия 2.323.0
Добавлено
- Переиспользуемые шаблоны отчётов книг через
TXLSCompiledReportTemplate: заполнители компилируются один раз и могут применяться многократно без повторного сканирования книги, используя отсортированный поиск значений и предварительно разделённые текстовые фрагменты в ячейках, форматированном тексте, комментариях, ветках обсуждений, гиперссылках, текстовых полях, заголовках диаграмм и именах рядов, верхних и нижних колонтитулах, именах листов, определённых именах и свойствах документа - Привязка данных отчётов через
IXLSReportTable,IXLSReportCursor, отложенную загрузкуIXLSReportTableProvider, таблицы памяти с произвольным доступом иTXLSReportRelationIndex, который один раз строит хеш дочерних элементов по составному ключу и сохраняет номера строк вместо копирования полезных нагрузок строк для повторного поиска по схеме «главный–подчинённый» - Вычисление формул теперь оценивает
PDURATIONдля количества периодов, необходимых для достижения целевой стоимости инвестиции, иRRIдля эквивалентной периодической ставки роста, включая совместимые с Excel числовые границы ошибок и требуемый префикс хранения OOXML_xlfn. - Вычисление формул теперь оценивает
ISOMITTED,ARRAYTOTEXTиVALUETOTEXT, включая специальное значение пропущенного аргумента, которое остаётся отличным от пустой ячейки, циклические преобразования токенов пропущенных аргументов BIFF, одномерные и двумерные массивы, строгое экранирование строк, локализованные разделители, правила преобразования ошибок и префиксы будущих функций OOXML - Структурированная предварительная проверка формул через
TXLSXWorkbook.AnalyzeFormulaIssuesсообщает об отсутствующих функциях, ссылках на внешние книги и точных компонентах циклических зависимостей с координатами ячеек и ограниченными списками элементов, тогда как строковые литералы и локальные структурированные ссылки исключаются из ложных совпадений - Клонирование диапазонов с учётом зависимостей через
TXLSXWorksheet.CloneRangeToкопирует выделенные ячейки, объединённые диапазоны, условное форматирование, проверки данных, гиперссылки, комментарии, изображения и диаграммы за одну операцию, перемещает применяемые диапазоны и якоря и преобразует полезные нагрузки формул со смешанной семантикой относительных и абсолютных ссылок; полосы отчётов используют тот же путь для зависимых объектов - Прогресс и отмена экспорта PDF через
TXLSPDFExport.OnProgress,OnProgressExиCancel: уведомления о начале, странице и окончании добавляют незначительные накладные расходы на обратные вызовы, отмена проверяется между проходами строк и объектами страниц, отменённые потоки не получают частичный PDF, и экспортёр остаётся переиспользуемым - Диагностика компилируемых отчётов через
TXLSCompiledReportTemplate.Analyze, строгое выполнение иWriteDiagnosticsвыявляют отсутствующие значения, пустые заполнители и незакрытые заполнители с целевым типом, а также координатами листа и ячейки до изменения, или записывают те же результаты в диагностический лист - Переиспользуемое выполнение отчётов через
TXLSCompiledReportRunnerпредоставляет прогресс начала, цели и окончания с состояниями завершения, отмены и сбоя, поддерживает отмену до первой записи или между скомпилированными целями, сообщает точное количество применённых изменений и остаётся переиспользуемым после отмены или исключений без повторного сканирования книги - Стратегии автоподбора для объединённых ячеек в классическом XLS и XLSX позволяют первой или последней строке либо столбцу поглощать требуемый прирост или распределять его равномерно по объединённому диапазону, сохраняя устаревшее поведение перегрузок, скрытые состояния, явные границы и детерминированные повторные вызовы
- Необязательные аннотации комментариев PDF через
TXLSPDFExport.ExportCommentsAsAnnotationsразмещают автора и текст комментария в кодировке Unicode на прямоугольнике исходной ячейки, сохраняя существующую страницу комментариев в конце; индексы комментариев для каждого листа строятся примерно за время O(C log C) и поддерживают поиск ячеек за O(log C) - Иерархические реестры пользовательских функций позволяют книгам XLS и XLSX совместно использовать обработчики уровня процесса, сохраняя локальные для книги переопределения, замену, удаление, очистку и существующий резервный механизм событий книги; средний поиск выполняется за O(1), локальные совпадения перекрывают глобальные имена, а обработчики выполняются вне блокировок реестра для безопасного параллельного пересчёта и самоудаления
- Отложенные комбинаторы таблиц отчётов через
TXLSReportTableFactoryпредоставляют первые строки, проекцию столбцов, количество строк, определения минимума и множественных агрегатов, объединение по схеме, смежные разделы разбиения и сохраняющие дубликаты внутренние или левые хеш-соединения без материализации полных промежуточных полезных нагрузок строк - Инкрементальный экспорт страниц PNG и JPEG через
TXLSPageImageExporterподдерживает диапазоны, листы и книги XLS и XLSX с выбором страниц, DPI, масштабом, качеством JPEG, прогрессом, отменой и переиспользуемыми сеансами; для каждого сеанса строится одна модель разбивки на страницы, а память растровых изображений освобождается после каждой страницы - Несколько окон книги XLSX через
TXLSXWorkbook.WorkbookViewsсохраняют независимые активные вкладки, первые видимые листы, видимость, свёрнутое состояние, геометрию, отображение вкладок, прокрутку, неизвестные атрибуты, расширения и корректно переназначенные привязки представлений листов, тогда как существующие свойства одного окна по-прежнему обращаются к первому представлению - Именованные полосы отчётов строк, столбцов и перекрёстных таблиц через
TXLSCompiledReportBandструктурно развёртывают шаблон с определённым именем из однопроходных ограниченных снимков данных, сохраняют формулы и зависимые объекты листа, выкладывают явные метаданные строк и столбцов без создания нулевых размеров по умолчанию и повторно используют фиксированные границы исходных коллекций, чтобы повторное клонирование на том же листе не сканировало сгенерированные полезные нагрузки - Экспорт PDF теперь записывает двухточечные и многоточечные осевые или радиальные градиенты как встроенные заливки PDF, повторно использует идентичные ресурсы функций, заливок и прозрачности, обрезает каждую заливку до своей ячейки и применяет сплошной или равномерный альфа-канал градиента без прежнего приближения полосами прямоугольников
Исправлено
- Пользовательские переопределения ширины и высоты бумаги в пунктах теперь участвуют в расчёте полосы разбивки на страницы, а также в финальном объекте страницы, поэтому разрывы страниц и отображаемые размеры используют одну и ту же доступную область
Версия 2.322.0
Добавлено
- Вычисление формул теперь оценивает функции Бесселя первого рода
BESSELJ(осциллирующую) иBESSELI(модифицированную), вычисляемые через степенные ряды с рекуррентными соотношениями членов для числовой устойчивости во всём практически используемом диапазоне аргументов
Версия 2.321.0
Исправлено
- Экспорт XLSX в RTF теперь создаёт настоящую таблицу шрифтов вместо жёстко заданного Calibri: предварительное сканирование собирает все различные имена шрифтов ячеек,
\fonttblперечисляет каждый из них с собственным индексом\fN, а текст каждой ячейки ссылается на её фактический шрифт — книги, оформленные шрифтами Times New Roman, Courier New или любым другим, больше не визуально переформатируются в Calibri при открытии в Word или WordPad
Версия 2.320.0
Исправлено
- Экспорт PDF теперь корректно отображает поворот текста на пути классического движка XLS: ячейки с ориентацией 90 или 270 градусов рисуют текст вертикально через матрицу текста PDF с поворотом вокруг центра ячейки, что соответствует существующему поведению пути XLSX; ранее вертикальные заголовки и повёрнутые подписи отображались горизонтально в PDF, созданных из книг
.xls
Версия 2.319.0
Добавлено
- Вычисление формул теперь оценивает зависящие от LAMBDA массивные комбинаторы Excel 365:
MAP(поэлементное преобразование),REDUCE(свёртка в одно значение),SCAN(свёртка с выводом каждого промежуточного шага),MAKEARRAY(построение по индексам строк и столбцов),BYROW(построчная агрегация с выводом столбца) иBYCOL(постолбцовая агрегация с выводом строки), завершая семейство функционального программирования LAMBDA наряду с существующей поддержкойLAMBDAиLET
Версия 2.318.0
Добавлено
- Вычисление формул теперь оценивает функции облигационных и казначейских финансов:
COUPDAYBS,COUPDAYS,COUPDAYSNC,COUPNCD,COUPPCD,COUPNUM(примитивы расчёта дней купонного периода),PRICE/YIELD(стандартная оценка облигаций с решением доходности методом бисекции),PRICEDISC/YIELDDISC(дисконтные ценные бумаги),PRICEMAT/YIELDMAT(на основе срока погашения),DURATION/MDURATION(дюрация Маколи и модифицированная),TBILLEQ/TBILLPRICE/TBILLYIELD(казначейские векселя),DISC/INTRATE/RECEIVED(дисконт и проценты),ACCRINTM(накопленные проценты при погашении),DOLLARDE/DOLLARFR(преобразование долей доллара),EFFECT/NOMINAL(эффективные и номинальные ставки),CUMIPMT/CUMPRINC(накопленные проценты и основная сумма),FVSCHEDULE(будущая стоимость с переменной ставкой) иAMORDEGRC/AMORLINC(французская амортизация); все они используют единый автономный движок вложенных дат купонов с пятью стандартными базами расчёта дней
Версия 2.317.0
Добавлено
- Загрузка зашифрованных книг теперь принимает файлы Agile Encryption, объявляющие алгоритм хеширования SHA-256 (создаваемые некоторыми сторонними программами): вывод ключа из пароля, цикл прокрутки, проверка пароля, а также IV и HMAC для ключа и значения целостности данных следуют объявленному хешу, тогда как файлы, объявляющие несогласованные хеши между данными ключа и шифратором ключа, по-прежнему отклоняются; сохранение по-прежнему записывает вариант SHA-512 по умолчанию Excel
Версия 2.316.0
Добавлено
SortRangeсохраняет формулы в обоих движках книг: ячейки с формулами перемещаются вместе со своими строками, а их относительные ссылки переустанавливаются в соответствии с семантикой сортировки Excel (абсолютные части $ сохраняются, ссылки, смещённые за пределы сетки, фиксируются на месте), поэтому отсортированные таблицы продолжают вычисляться вместо превращения в значения- Фоновые изображения листа:
SetBackgroundImageзамостит картинку позади ячеек листа XLSX (только для отображения, как в Excel), с полным циклом через элементpictureлиста, его медиа-связь и типы содержимого пакета
Исправлено
- Пересчёт арифметической формулы, ссылающейся на никогда не изменявшуюся пустую ячейку, больше не прерывается с ошибкой преобразования — пустые операнды дают вклад 0, как в Excel
Версия 2.315.0
Добавлено
CopyToClipboardпубликует встроенный формат буфера обмена Biff8 наряду с текстом и HTML в обоих движках книг, поэтому диапазоны, вставляемые в Excel или другие книги HotXLS, переносят значения, формулы, числовые форматы, шрифты, заливки, границы, выравнивание и объединённые ячейки вместо обычного текстаPasteFromClipboardпредпочитает полезную нагрузку Biff8 при её наличии: текст, вставленный из Excel, сохраняет исходные значения без повторного разбора дат и чисел, зависящего от локали, формулы переустанавливают свои относительные ссылки на целевой диапазон вставки, а объединённые области перестраиваются в месте назначения; оба движка также вставляют блоки друг друга с полным форматированием
Изменено
- Формулы, вставленные в Excel, поступают в виде вычисленных значений (ограничение стороннего разбора Biff8 буфером обмена Excel); всё остальное — текст, числа с форматами, заливки, границы и объединения — вставляется в Excel без потерь, а формулы полностью сохраняются в направлениях Excel→HotXLS и HotXLS→HotXLS
Версия 2.314.0
Добавлено
- Объекты камеры на листах XLSX:
AddCameraразмещает живой снимок-изображение, привязанный к диапазону ячеек — связанное изображение инструмента камеры Excel, — с записью привязки диапазона в документированное расширение рисунка и изображением-заполнителем, размер которого соответствует якорю; объекты камеры, созданные в Excel, снова открываются с сохранённой привязкой диапазона
Версия 2.313.0
Добавлено
- Изменение листа на месте для пакетов XLSX:
BeginPatchв потоковом записи открывает существующую книгу и перезаписывает ровно один лист — все остальные части (стили, рисунки, диаграммы, сводные таблицы, пользовательские части) копируются со своими сжатыми байтами без изменений, без распаковки или пересоздания чего-либо, поэтому крупный шаблон получает обновлённый лист данных за долю времени полной пересборки - Режим изменения может также добавлять новый лист: лист регистрируется в списке частей книги, связях и типах содержимого с нумерацией, которая никогда не конфликтует с существующими частями, следуя собственной конвенции связей пакета — строгой или переходной
- Изменённые пакеты автоматически отбрасывают устаревшую цепочку вычислений (Excel перестраивает её при загрузке), а функции, которым потребовались бы новые части пакета (таблицы, диаграммы, изображения, комментарии, определённые имена), сообщают понятную ошибку вместо записи недопустимого пакета
Версия 2.312.0
Добавлено
- Строгий вывод Open XML: установка
StrictOOXMLдля книги XLSX сохраняет пакет в строгом соответствии ISO/IEC 29500 — каждое объявление пространства имён и тип связи переключается с переходных словарей на строгиеpurl.oclc.orgво всех листах, общих строках, стилях, теме, рисунках, диаграммах, комментариях, свойствах документа и сохраняемых частях, тогда как типы содержимого, имена частей и словари VML остаются общими для обоих классов соответствия - Чтение книг строгого соответствия теперь полное: типы связей, записанные в строгой форме, разрешаются в те же цели, что и их переходные эквиваленты, дополняя приём строгих пространств имён элементов, поэтому файлы, сохранённые в режиме Excel «Strict Open XML Spreadsheet», открываются как любые другие книги
- Сохранение с включённым строгим выводом сообщает понятную ошибку для функций, существующих только как расширения Microsoft (проекты VBA, элементы управления форм, ветки обсуждений, метаданные динамических массивов), вместо записи пакета, который не прошёл бы проверку
Исправлено
- Пользовательские свойства документа объявляли пространство имён типов значений с ошибкой в написании, из-за чего часть свойств могла не пройти проверку во внешних инструментах
Версия 2.311.0
Добавлено
- Чтение книги XLS сохраняет нераспознанные записи листа: любая запись, не смоделированная типизированным анализатором, захватывается без изменений и воспроизводится при сохранении, поэтому файлы с записями, специфичными для конкретных производителей или из более новых спецификаций, проходят через HotXLS полный цикл без потерь
Версия 2.310.0
Добавлено
- Фигуры с готовой геометрией на листах XLSX:
AddPresetShapeзаписывает любой из 187 готовых токенов OOXMLST_ShapeType(rightArrow,flowChartDecision,star5, …) в элемент<a:prstGeom>рисунка без изменений, а свойствоPrstTokenпозволяет существующим фигурам менять геометрию — токены проходят полный цикл через сохранение и повторное открытие
Версия 2.309.0
Добавлено
- Обработка шаблонов на листах:
ApplyTemplateзаменяет заполнители{{key}}во всех ячейках — значения сохраняют свои исходные типы, а заполнители формул подставляются до разбора, — аFillTemplateBandклонирует блок шаблона по одному разу на запись с переводом строк формул для каждого клона, клонированием объединённых диапазонов и полем#skipдля условных выражений на уровне строк, превращая любой лист ручной работы в управляемый данными генератор отчётов
Версия 2.308.0
Добавлено
- Экспорт PDF может присоединять файлы:
AddAttachmentпереносит исходные документы в экспортируемый PDF как записи/EmbeddedFiles(спецификация файла, встроенный поток с необязательным подтипом MIME и дерево имён каталога), поэтому отчёты поставляются вместе со своими вспомогательными данными в одном автономном файле
Изменено
- Чтение книги XLS с нераспознанным словом версии BIFF больше не отклоняет весь поток: читатель переключается на компоновку BIFF8, поэтому файлы от программ, выдающих необычные номера версий, по-прежнему загружаются, когда их записи разбираются
Версия 2.307.0
Добавлено
- Централизованное управление временными файлами: каждый временный файл, создаваемый библиотекой, регистрируется и удаляется, поэтому прерванный экспорт или исключение между созданием и удалением больше не оставляют осиротевшие временные файлы
VerifyEncryptedSaveзаново открывает только что записанный зашифрованный контейнер через полный конвейер расшифровки и завершает сохранение ошибкой, когда пароль не может его разблокировать, — повреждённые контейнеры обнаруживаются сразу, а не при следующем открытии пользователем- Экспорт набора данных вызывает событие
OnExportLimit, когда вступает в силу разбиение строк, а пределы сетки книги для каждой версии формата предоставляются как константы (65536×256 для BIFF8, 1048576×16384 для форматов 2007+) для согласования возможностей
Версия 2.306.0
Добавлено
- Листы XLSX получают создание элементов управления форм:
AddFormButton,AddFormCheckBox,AddFormRadioButton,AddFormComboBoxиAddFormListBoxзаписывают элементы управления — кнопки, флажки, переключатели, раскрывающиеся списки и списки — с подписями, связанными ячейками, состоянием отметки и привязкой макроса; путь сохранения выдаёт фигуры VML, частиctrlPropsдля каждого элемента управления, их связи и записи типов содержимого, а файлы с элементами управления при повторном открытии проходят полный цикл своих частей без изменений
Версия 2.305.0
Добавлено
- Экспорт PDF получает подключаемый режим
UsePDFA, создающий документы, идентифицированные как PDF/A-2b: профиль sRGB IEC61966-2.1 встраивается как выходной интент GTS_PDFA1, метаданные XMP несут идентификацию части/соответствияpdfaid, а заголовок объявляет PDF 1.7 — сочетайте это со встроенным шрифтом TrueType (UnicodeFontFileили автоматически выбранным установленным шрифтом) для архивного вывода
Версия 2.304.0
Добавлено
- Живое вычисление между книгами:
RegisterExternalWorkbookсвязывает объект книги с именем книги, чтобы такие формулы, как[Book.xlsx]Sheet!A1, компилировались (префикс[Book]Sheet!Refтеперь разбирается в настоящую внешнюю ссылку) и при каждом пересчёте читали текущее состояние зарегистрированного объекта; отмена регистрации отключает живую связь и возвращается к кэшу внешних ссылок
Версия 2.303.0
Добавлено
- Сравнение книг через
TXLSXWorkbookCompare: сопоставляет листы по имени и сообщает о добавленных/удалённых листах, добавленных/удалённых ячейках, изменённых значениях, изменённых формулах и добавленных/удалённых объединённых диапазонах — в виде структурированного списка различий для инструментов и в виде одной читаемой строки на каждое различие черезReport
Версия 2.302.0
Добавлено
- Потоковый прямой записыватель получает поставку строк в режиме вытягивания:
OnNeedRowсрабатывает один раз для каждой ожидаемой строки, и поставщик записывает эту строку напрямую через записыватель, объявляя конец данных для остановки, — конвейеры данных могут управлять экспортом без предварительной буферизации списков строк
Версия 2.301.0
Добавлено
- Экспорт ODS записывает формулы ячеек: ссылки в пределах того же листа преобразуются в стандартное написание
of:=OpenFormula (ссылки в скобках, разделители аргументов точкой с запятой, строковые литералы не изменяются), тогда как уточнённые листом и структурированные ссылки используют сквозной проходmsoxl:, который сам Excel применяет для обмена между пакетами, — сохранённые пакеты открываются с исходным текстом формулы Excel
Версия 2.300.0
Добавлено
- Листы с письмом справа налево теперь везде отображаются зеркально: экспорт PDF переворачивает геометрию столбцов относительно ширины печати (столбец A справа, содержимое ячеек не изменяется), а оба экспортёра HTML выводят
dir="rtl"на таблице, чтобы браузер переворачивал порядок столбцов, — флаг листа уже проходит полный цикл через XLSX и BIFF
Версия 2.299.0
Добавлено
- Экспорт набора данных (
TDataToXLS) получает полосу заголовка и полосу нижнего колонтитула:Titleвыводит одну объединённую строку с полужирным стилем над заголовком (собственныйTitleFontи необязательныйTitleColor), аFooterдобавляет строку под последней строкой данных или итогов ForEachFormattedCellна листе обходит каждую заполненную ячейку в порядке строк и столбцов и передаёт её отображаемый текст — с применённым числовым форматом — через обратный вызов, готовый для индексации и извлечения текста
Версия 2.298.0
Добавлено
- Пример ApiTour теперь открывается сразу в живой демонстрации: продажи-дашборд в памяти с плитками KPI, межлистовыми формулами
SUMIF/COUNTIF, гистограммами данных, цветовой шкалой, набором значков и двумя диаграммами отображается во встроенном просмотрщике книг сразу при запуске примера, каждая ячейка сетки остаётся редактируемой с мгновенным пересчётом и обновлённым условным форматированием, а действия в один клик экспортируют демонстрацию в PDF, HTML и CSV или передают её в Excel с замером времени построения и экспорта - Пример C++Builder ApiTour повторяет новую демонстрацию Delphi, встроенный просмотрщик, строку формул, действия экспорта и журнал активности
Изменено
- Примеры ApiTour заменяют модальные диалоги результатов внутриоконным журналом активности, тогда как классический пошаговый сценарий создания, изменения и экспорта сохраняет своё поведение
Версия 2.297.0
Добавлено
- Экспорт PDF получает подключаемый режим
UseXRefStream, создающий файлы PDF 1.5 со сжатыми потоками объектов и двоичным потоком перекрёстных ссылок: небольшие объекты-словари переносятся внутри одного контейнера, сжатого Flate, а классическая таблица xref и трейлер заменяются компактным потоком, уменьшая экспортируемые документы, тогда как содержимое страниц остаётся побайтово идентичным
Версия 2.296.0
Добавлено
- Потоковый прямой записыватель получает подключаемый режим
AutoSplitRows: строка за пределом листа (1048576) завершает текущий лист и продолжается на вновь созданном листе<name>_2,<name>_3…, поэтому неограниченный экспорт никогда не выдаёт недопустимый индекс строки FillTableCalculatedColumnна листе переносит формулу вычисляемого столбца таблицы в каждую строку данных с построчным переводом для каждой ячейки, как это делает собственный редактор Excel, а затем естественно пересчитывается
Версия 2.295.0
Изменено
- Экспорт XLSX в HTML централизует стили ячеек: идентичные комбинации стилей выводятся один раз как классы
td.cNв таблице стилей вместо повторяющегося встроенного атрибутаstyleна каждой ячейке, уменьшая HTML-вывод для таблиц с единообразным стилем; визуальные наложения условного форматирования остаются встроенными, сохраняя свой поячеечный характер
Версия 2.294.0
Исправлено
- Структурированные ссылки в форме текущей строки (
Table[@Col]) теперь при пересчёте вычисляются относительно собственной строки ячейки с формулой — как в последовательном, так и в параллельном пути вычисления; ранее каждая такая формула читала строку 1 столбца (обычно текст заголовка), и пересчёт сразу завершался ошибкой приведения типа, когда эта строка содержала текст
Версия 2.293.0
Изменено
- Подключаемое запоминание
RecalcAggregateCacheтеперь также охватывает безусловные агрегаты по одному диапазону —SUM,AVERAGE,MIN,MAX,COUNTиCOUNTAпо одному простому диапазону на одном листе, — поэтому повторные итоги по одному и тому же блоку переиспользуют результат первого прохода при том же контроле стабильности ссылок, что и семейство условных функций
Версия 2.292.0
Добавлено
- Генератор кода из книги (
TXLSCodeGen): обходит книгу и создаёт операторы исходного кода, которые её воссоздают, — создание листов, значения ячеек, формулы, числовые форматы, ширины столбцов и объединённые диапазоны — в диалектах Delphi или C++Builder, так что созданный вручную файл превращается в готовый пример API - Валидатор импорта по правилам столбцов (
TXLSImportCheck): поставочные правила обязательности, длины текста, шаблона регулярного выражения и уникальности плюс обратный вызов вызывающего кода выполняются по строкам данных листа; нарушения могут быть помечены красным шрифтом и комментарием с причиной, аKeepOnlyViolationsсжимает лист до заголовка и строк с ошибками для книги «исправьте и верните»
Версия 2.291.0
Добавлено
- Импорт CSV принимает запись параметров: перегрузки
OpenCSVпринимают пропуск ведущих строк (SkipRows, для баннеров заголовков над сеткой) и обрезку пробелов (AutoTrim) наряду с разделителем и переключателями определения типов FillMergedCellValuesна листе копирует значение якоря каждого объединённого диапазона во все входящие ячейки, так что листы в стиле отчёта с объединёнными подписями читаются как единая плоская сеткаAddListValidationполучает перегрузку с массивом строк, которая объединяет элементы в один раскрывающийся список за один вызов- Экспорт набора данных (
TDataToXLS) получает полосатую закраску (AlternatingColor, применяется к нечётным строкам деталей) и строку итогов (SummaryRow), которая добавляет настоящие формулыSUMдля экспортируемых числовых полей или списка полей, заданного вызывающим кодом, с полужирной ячейкой подписи
Исправлено
- Экспорт набора данных теперь применяет настроенный фон
DetailColorк ячейкам деталей; ранее свойство принималось, но никогда не отображалось
Версия 2.290.0
Изменено
- Подключаемое запоминание
RecalcLookupCacheтеперь также охватывает точный и приближённый поискVLOOKUP,HLOOKUPи типы совпадения 0 и 1 дляMATCH, поэтому книги, повторяющие эти классические поиски по одному диапазону, при проходе пересчёта переиспользуют результат первого сканирования при том же защитном контроле стабильности ссылок, что иXLOOKUP/XMATCH
Версия 2.289.0
Добавлено
- Потоковый прямой записыватель получает подключаемый режим
TrackColumnWidths: лист буферизуется в памяти, пока строки передаются потоком, чтобы сохранённый файл содержал подсказку используемого диапазона<dimension>и ширины столбцов, подобранные под самый длинный видимый отображаемый текст (символы плюс отступы, максимум 255), приближая автоподбор для экспорта, данные которого известны только по мере потоковой передачи; явно заданные ширины столбцов всегда имеют приоритет
Версия 2.288.0
Добавлено
- Открытие пакетов XLSX терпимо к неканоническим префиксам пространств имён: листы, диаграммы, рисунки и части свойств документа, привязывающие свои элементы к пространству имён с другим префиксом (или строгому ISO 29500), при разборе нормализуются к стандартному словарю, поэтому файлы от сторонних генераторов и сохраняющих в строгом режиме программ загружаются корректно
- Листы, у ячеек которых опущен атрибут позиции
r, размещают каждую ячейку после предыдущей в порядке сканирования, а строки без атрибутаrпродолжают последовательность строк, — это соглашение, используемое несколькими потоковыми записывателями
Версия 2.287.0
Добавлено
Openчитает книги Excel 2.0/3.0/4.0 (BIFF2-4): необработанные потоки BIFF без обёртки OLE загружаются со своими числами, текстом, логическими значениями, ошибками и кэшированными результатами формул; строковые результаты формул поступают через запись String BIFF2-4, а запись кодовой страницы потока управляет декодированием текста
Изменено
- Документы BIFF2-4 читаются ради значений, — числовые форматы и стили этих поколений не моделируются, поэтому даты проявляются как необработанные серийные номера, а формулы — как их последние вычисленные значения
Версия 2.286.0
Добавлено
- Числовые форматы с секциями сравнения (
[>=100],[<0], …) везде, где выводится отображаемый текст, выбирают секцию по значению, повторяя поведение условного форматирования Excel - Текстовые секции числовых форматов (
"ID:"@) шаблонизируют строковые значения вместо игнорирования формата SetCellFromHtmlзаполняет ячейку из лёгкого HTML-фрагмента:<b>/<strong>,<i>/<em>,<u>,<br>и<font color=...>становятся форматированными фрагментами; остальные теги отбрасываются, а их текст сохраняется- Разметка
TaggedTextпринимает разрывы строк<br>, псевдонимы<strong>/<em>, форму атрибута<font color=...>и сущности"/ - Блоки склеивания столбцов (
KeepColumnsTogether) запрещают вертикальные разрывы страниц внутри группы столбцов, повторяя функциональность уровня строк в разбиении на страницы, предпросмотре и выводе PDF - Классические элементы управления форм Spinner и ScrollBar можно добавлять в файлы XLS с настройками Min/Max/Inc/Page и связанной ячейкой, они выводятся через подзапись OBJ FtSbs
WriteAutoValueраспознаёт датыm/d/yyyyиd.m.yyyyс необязательным временем (включая AM/PM) помимо формы ISO, отклоняя невозможные календарные датыConvertFormulasToValuesполучает режимOnlyExternal, который замораживает только формулы, ссылающиеся на другие книги, а классический фасад XLS получает метод для всего листа- Автоподбор высоты строки измеряет объединённые ячейки по их суммарной ширине столбцов и распределяет требуемую высоту по объединённым строкам
Версия 2.285.0
Добавлено
- Экспорт PDF рисует диаграммы листа как нативную векторную графику: сгруппированные, с накоплением и с накоплением в процентах столбцы и столбики, линейные диаграммы с маркерами, диаграммы областей, круговые и кольцевые диаграммы с процентными подписями, точечные диаграммы и лепестковые диаграммы — каждая с рамкой с заголовком, автоматически масштабированными осями, подписями делений, линиями сетки, легендой, необязательными подписями данных для каждой точки, сплошными заливками по рядам и палитрой акцентов Excel по умолчанию; трёхмерные типы диаграмм отображаются как их двумерные проекции
- Диаграммы, закреплённые за последней ячейкой, теперь расширяют область печати, поэтому диаграмма, размещённая под строками данных, всё равно появляется в выводе PDF и предпросмотре вместо обрезания
Версия 2.284.0
Добавлено
- Верхние и нижние колонтитулы PDF отображают коды стилей Excel:
&Bполужирный,&Iкурсив,&U/&Eодинарное/двойное подчёркивание,&Sзачёркивание,&X/&Yнадстрочный/подстрочный индекс,&nnразмер шрифта,&Kцвет и&"Font,Style"ключевые слова начертания - Экспорт PDF учитывает режим чёрно-белой печати листа, сводя заливки, шрифты, границы, гистограммы данных и значки к серому по яркости
- Печатаемые заголовки строк и столбцов (номера строк и буквы столбцов) отображаются рядом с сеткой, когда это запрашивает лист
- Центрирование при печати:
CenterHorizontally/CenterVerticallyсмещают печатаемую сетку между полями, тогда как полосы верхнего и нижнего колонтитулов остаются на месте - Комментарии ячеек печатаются либо как красный индикатор в углу (режим как на экране), либо как страница со списком комментариев после листа через новое свойство листа
PrintCommentsAtEnd, которое сохраняет значение настройки страницы ExcelcellComments="atEnd" - Внутренние гиперссылки (цели
Sheet!Cell) становятся кликабельными ссылками GoTo внутри документа, переходящими на страницу целевого листа - Экспортёр предоставляет настройку просмотрщика
PageLayoutи записывает пакет метаданных XMP вместе со словарём информации о документе - Шрифты коллекций TrueType (
.ttc) могут служить встроенным шрифтом Unicode; полужирное и курсивное начертания встроенной гарнитуры синтезируются, когда существует только обычное начертание
Изменено
- Ширины столбцов преобразуются по формуле Excel для максимальной ширины цифры (метрики Calibri 11) вместо фиксированной оценки на символ, поэтому ширины в PDF и предпросмотре совпадают с сохранёнными Excel пиксельными ширинами
- Перенесённые строки переизмеряются от собственного первого символа каждой строки, исправляя перенесённые строки, которые игнорировали ширину слов, перенесённых вниз более ранним разрывом
Версия 2.283.0
Добавлено
- Экспорт PDF переносит ячейки
WrapTextс настоящим разрывом по словам, построчным горизонтальным выравниванием, вертикальным выравниванием блока и интервалами по ширине или с распределением - Экспорт PDF отображает повёрнутый текст ячеек через матрицы текста PDF, включая вертикальный составной текст, и учитывает
ShrinkToFit, уменьшая размер шрифта, пока значение не поместится - Текст PDF, выходящий за пределы ячейки, теперь распространяется на пустые соседние ячейки и обрезается у первой занятой ячейки, повторяя поведение печати Excel; общее выравнивание выравнивает числа по правому краю, как Excel
- Экспорт PDF рисует форматированные фрагменты с начертанием, размером, цветом, подчёркиванием, зачёркиванием, надстрочным и подстрочным индексами для каждого фрагмента; перенесённые строки сохраняют стиль каждого фрагмента
- Экспорт PDF рисует диагональные границы ячеек и настоящие двойные границы
- Текст, охватывающий объединённые ячейки, теперь рисуется, выравнивается, переносится, а гиперссылки закрепляются по всему объединённому прямоугольнику, а перекрытые члены объединения больше не рисуют собственный фон
Изменено
- Ширины текста PDF берутся из калиброванных таблиц продвижения по символам вместо фиксированной средней ширины символа, поэтому выравнивание, перенос и уменьшение соответствуют печатной странице
- Отступ ячейки смещает текст, как в Excel, а ячейки с наборами значков делают отступ своего значения рядом со значком
Версия 2.282.0
Добавлено
- Экспорт PDF сохраняет прозрачность PNG: изображения с альфа-каналом теперь выводят плоскость мягкой маски вместо потери прозрачности, включая палитровые изображения с фрагментом tRNS
Изменено
- Потоки содержимого страниц PDF теперь сжимаются Flate, существенно уменьшая экспортируемые документы без требований к просмотрщику сверх PDF 1.4
- Экспорт PDF группирует последовательные текстовые операции в общие текстовые блоки и пропускает избыточный выбор шрифта, размера и цвета, сокращая и объём вывода, и время генерации
- Соседние ячейки с одинаковой сплошной заливкой отображаются как один объединённый прямоугольник, а коллинеарные сегменты границ с одинаковым стилем рисуются одним штрихом вместо краёв по ячейкам
- Изображения PNG встраиваются в PDF без декодирования и перекодирования, сохраняя исходный сжатый поток и точные пиксели
- Изображения с идентичным байтовым содержимым встраиваются один раз и используются совместно, независимо от того, сколько объектов изображений на них ссылаются
Исправлено
- Аннотации гиперссылок теперь также создаются для ячеек со ссылками, текст которых отображается через путь встроенного шрифта Unicode
- Байты содержимого PDF больше не зависят от активной системной кодовой страницы, поэтому западный текст отображается одинаково в любой локали Windows
Версия 2.281.0
Исправлено
- Читатели буфера обмена больше не усекают дескриптор данных до 32 бит, из-за чего
XLSGetClipboardBiff8и путь вставки XML Spreadsheet возвращали пустоту в 64-разрядных приложениях - Операции с буфером обмена повторяют попытки открыть буфер до половины секунды, когда его удерживает другое приложение, вместо сбоя при первом конфликте
Изменено
- Поиск правил условного форматирования (пути
FindAt/IndexOfCell) разбирает диапазон ячеек каждого правила один раз, а не при каждом запросе ячейки, повторяя кэш проверки данных - Экспорт PDF строит постраничный индекс гиперссылок, заменяя линейное сканирование по ячейкам двоичным поиском
Версия 2.280.0
Добавлено
- Пользовательские функции можно регистрировать по имени:
RegisterUserFunctionнаправляет формулы, вызывающие это имя, прямо в его обработчик (без глобальной цепочки if в одномOnUserFunction), при этом событие книги по-прежнему обслуживает незарегистрированные имена ScanUnknownFunctionsпроверяет книгу на функции формул, которые движок вычислений не может вычислить, сообщая каждую ячейку и имя — идеально перед включением пересчёта для сторонних файловRecoveryMode: структурно повреждённая часть листа пропускается с предупреждающей диагностикой вместо прерывания всего открытия- Нативный формат буфера обмена BIFF8:
XLSSetClipboardBiff8/XLSGetClipboardBiff8публикуют и читают потокBiff8, который использует сам Excel, поэтому обмен через буфер обмена сохраняет значения, формулы и форматирование
Изменено
- Аудит проверки данных разбирает диапазон ячеек каждого правила один раз вместо каждой ячейки, ускоряя
CheckDataValidationsна больших листах
Версия 2.279.0
Добавлено
- Экспорт PDF встраивает изображения листа: растровые PNG/GIF/BMP преобразуются в объекты RGB XObject, сжатые Flate, а файлы JPEG проходят без изменений через DCTDecode (без пересжатия); одинаковые изображения на нескольких страницах используют один объект, а изображения, добавленные без явного размера, по умолчанию получают свои размеры в пикселях при 96 DPI
- Блоки склеивания:
KeepRowsTogetherзапрещает разбиению на страницы при печати/PDF разрывать блок строк, помещающийся на одну страницу, аXlsxAutoPageBreaksпревращает естественные (с учётом склеивания) границы страниц в явные разрывы строк, чтобы Excel разбивал на страницы так же, как экспорт - Настраиваемое сжатие XLSX:
ZipCompressionLevelвыбирает уровень deflate для сохранения (от -1 по умолчанию до 9) - Воспроизводимое сохранение:
DeterministicOutputфиксирует временные метки записей zip, так что повторное сохранение одной и той же книги даёт побайтово идентичные файлы
Исправлено
- Повреждённые составные файлы с циклическими цепочками FAT больше не зависают в классическом загрузчике .xls, — обходы цепочек каталога и потоков снабжены защитой от циклов
Версия 2.278.0
Добавлено
- Экспорт PDF создаёт кликабельные аннотации ссылок для гиперссылок листа: ячейки с URL получают невидимый прямоугольник /Link с действием URI поверх области ячейки
- Экспорт PDF записывает структуру документа (закладки): каждый экспортируемый лист становится закладкой, указывающей на его первую отрисованную страницу
Версия 2.277.0
Добавлено
- Проверка данных получает API аудита:
CheckDataValidationsсверяет заполненные ячейки с правилами листа (членство в списке, границы целых/десятичных/дат/времени, длина текста, пользовательские формулы через калькулятор) и сообщает о каждой ячейке с нарушением вместе с индексом правила и причиной - Типизированные пользовательские свойства документа проходят полный цикл через
docProps/custom.xml: текстовые, числовые, датовые и логические записи вWorkbook.CustomProperties - Пользовательские части XML-данных проходят полный цикл через
Workbook.CustomXmlPartsсо связями на уровне книги и типами содержимого - Изображения принимают сопроводительный SVG:
AddImagePairсохраняет байты SVG рядом с растровым запасным вариантом, записывает расширениеsvgBlipи дополнительную часть мультимедиа, которую потребляет Excel 2016+ - Диаграммы могут брать текст подписей данных из диапазона ячеек (“Value From Cells”) через
DataLabelsRange; это выводится как расширение диаграммы и восстанавливается при открытии - Пользовательские стили таблиц:
Workbook.CustomTableStylesопределяет именованные стили с цветными/полужирными секциями (строка заголовка, строка итогов, полосы, крайние столбцы), записываемые вtableStylesс собственными дифференциальными стилями, чтобы таблицы могли ссылаться на них по имени
Версия 2.276.0
Добавлено
- Градиентные заливки ячеек: линейные заливки по градусам и градиенты по пути с цветами для каждой остановки проходят полный цикл через
gradientFill, отображаются как CSS-градиенты в экспорте HTML, как заливки с интерполяцией по полосам в экспорте PDF и в просмотрщике книг и предлагаются через удобный методTXLSXFills.AddLinearGradient - Числовые форматы прошедшего времени (
[h]:mm:ss,[mm]:ss,[s]) теперь отображают нарастающие итоги вместо заворачивания, как часы, во всех путях вывода (FormattedText, HTML, PDF, значения условного форматирования) - Числовые форматы дробей (
# ?/?,# ??/??, фиксированные знаменатели, например0/8) отображаются с наилучшим рациональным приближением Excel, включая скрытие нулевого целого и выравнивающие пробелы - Цветовые скобки в стиле
[Red]теперь проявляются черезTXLSXCell.GetFormattedTextColorи перекрашивают текст ячейки в экспорте PDF TXLSXWorkbook.ValidateNumberFormatпроверяет строку пользовательского формата так же, как диалог пользовательского формата Excel, — количество секций, баланс кавычек и содержимое скобок (цвета, условия, единицы прошедшего времени, директивы локали)- Состояние закреплённых панелей можно считать обратно через
GetFrozenPanes, а позиция прокрутки нижней правой панели проходит полный цикл черезSetPaneScroll/GetPaneScroll(записывается какtopLeftCell) - Переключатель отображения заголовков строк и столбцов
DisplayRowColHeadersпроходит полный цикл черезshowRowColHeaders - Диаграммы раскрывают
DispBlanksAs(пробел / линия / ноль) иPlotVisibleOnlyвместо жёсткого кодирования и восстанавливают оба значения из сохранённого ChartML при открытии - Комментарии несут редактируемую геометрию рамки (
WidthPt/HeightPt, точки VML) плюс управляемую текстом эвристикуAutoSizeFromText
Версия 2.275.0
Добавлено
- Поиск и замена понимает подстановочные знаки Excel:
*(любая последовательность символов),?(ровно один символ) и~как экранирование для литеральных*,?или~— та же семантика, которую сам Excel применяет в поиске и замене, критериях семействаCOUNTIFи автофильтрах - Метод
FindTextлиста XLSX получает перегрузку с параметрами: учёт регистра, совпадение всего содержимого ячейки, поиск по тексту формул наряду со значениями, режим подстановочных знаков и обратное сканирование, с начальным якорем, чтобы повторные вызовы проходили по совпадениям ReplaceTextполучает тот же набор параметров плюс необязательный обратный вызов для каждого совпадения, который может принимать, переписывать, пропускать или прерывать каждую замену ячейка за ячейкой- Классический лист XLS
FindText/ReplaceTextполучает перегрузки с подстановочными знаками и совпадением всей ячейки, поэтому оба фасада разделяют семантику поиска Excel GetRangeStatisticsсканирует прямоугольник и за один проход сообщает минимум, максимум, сумму, среднее, количество числовых значений и количество заполненных ячеекWriteAutoValueзаписывает текст так, как его интерпретирует собственный ввод ячейки Excel:TRUE/FALSEстановятся логическими значениями, литералы ошибок, такие как#N/A, становятся значениями ошибок, однозначные даты ISO — датами, обычные числа в инвариантном формате — числами, а всё остальное, включая ведущие нули и разделители тысяч, остаётся текстом (оба фасада)GetHtmlFromCellотображает одну ячейку как стилизованный HTML-фрагмент с экранированной разметкой, дополняя экспорт HTML всего листаSortRangeпринимает флаг без учёта регистра, чтобы текстовые ключи сортировались по алфавиту независимо от регистра (фасад XLSX)
Версия 2.274.0
Добавлено
- Таблицы Excel теперь проходят полный цикл без строки заголовка и с комментариями для каждой таблицы через новые свойства таблицы
HasHeaderRowиComment, записываемые какheaderRowCount="0"и атрибутcomment - Диаграммы могут выбирать стиль галереи Excel через новое свойство
ChartStyle(1–48 или расширенный диапазон 101–148), проходящее полный цикл через элемент стиля части диаграммы - Комбинированные диаграммы могут управлять слоями области построения через новое свойство
ZOrderна каждой группе графиков, так что ряд столбцов может отображаться позади или перед рядом линий - Листы и отдельные ячейки могут замораживать формулы в их вычисленные значения через
ConvertFormulasToValuesиConvertFormulaToValue, сохраняя кэшированный результат и отбрасывая формулу, связь общей формулы и метаданные массива - Определённые имена теперь несут необязательный комментарий через новое свойство имени
Comment, проходящее полный цикл через классическую запись комментария имени и атрибутcommentопределённого имени XLSX - Экспорт PDF принимает пользовательские размеры бумаги в пунктах через новые свойства
PaperWidthиPaperHeight, переопределяя перечисление размера бумаги для каждого отображаемого листа - Экспорт PDF может подавлять полосу верхнего или нижнего колонтитула через новый набор
HidePrintObjects - Коды полей верхнего и нижнего колонтитулов PDF
&F(имя файла) и&Z(путь) теперь раскрываются с использованием пути исходной книги, захваченного экспортом на основе файлов - Гистограммы данных поддерживают независимый цвет границы отрицательных значений через новые настройки
NegativeBorderColorиNegativeBarBorderColorSameAsPositive, выводимые в расширении гистограмм данных Excel 2010+ - Встроенные стили ячеек, чьи идентификаторы не имеют устаревшего слота записи (Hyperlink, Title, Headings, Accents, Good/Bad/Neutral, …), теперь разрешают свои канонические отображаемые имена при сохранении, поэтому галерея стилей Excel переживает полный цикл
- Книги с Agile-шифрованием теперь несут настоящий блок
dataIntegrity: записыватель выводит соответствующий спецификации HMAC по всему зашифрованному пакету, а открытие проверяет его, обнаруживая неверный пароль или изменённый пакет; файлы от записывателей без этого блока по-прежнему открываются без изменений - Классические книги поддерживают резервирование записи Excel “password to modify” через
SetModifyPassword(флаг рекомендовать только чтение, устаревший хеш пароля и имя резервирующего пользователя выводятся как пара записей WRITEPROT + FILESHARING);IsWriteReservedсообщает состояние, а пустой пароль сбрасывает его - Опциональное запоминание
RecalcLookupCacheускоряет пересчёт с интенсивным поиском: повторные сканированияXLOOKUP/XMATCHпо одному и тому же диапазону переиспользуют результат первого сканирования. Запоминание включается только когда граф зависимостей доказуемо стабилен по ссылкам (нетOFFSET/INDIRECTили неразрешимых ссылок, нет циклических цепочек, нет таблиц данных What-If) и в противном случае молча остаётся выключенным, поэтому результаты всегда идентичны - Сопутствующее запоминание
RecalcAggregateCacheускоряет пересчёт условных агрегатов: повторные сканированияSUMIF/COUNTIF/AVERAGEIFпо одному и тому же диапазону и критериям переиспользуют первый результат при том же контроле стабильности ссылок и с идентичными результатами - Выражения
LAMBDAвычисляются с полными замыканиями: определённое имя, чей RefersTo являетсяLAMBDA, можно вызывать по имени с аргументами (=MyFunc(5)), замыкания связываются лексически внутриLET(=LET(f, LAMBDA(x, x*2), f(21))), параметры затеняют ссылки на столбцы с тем же написанием, а текст формулы проходит полный цикл без изменений; голыйLAMBDA, сохранённый как результат ячейки, сохраняет поведение пропуска без значения LETтеперь имеет полную семантику: каждая привязка видна последующим привязкам и выражению тела, включая вложенную композициюLET, — заменяя прежнюю частичную реализацию- Текст формулы теперь принимает запятую как разделитель аргументов наряду с классической точкой с запятой, соответствуя каноническому синтаксису Excel для вставленных и импортированных формул
- Структурированные ссылки в формулах теперь вычисляются:
Table[Column],Table[[Column]], диапазоны столбцов и формы элементов[#Data]/[#All]/[#Headers]/[#Totals]разрешаются относительно таблиц Excel книги во время разбора, поэтому=SUM(Table1[Amount])вычисляется, а исходный текст формулы по-прежнему проходит полный цикл без изменений; неразрешимые ссылки сохраняют прежнее поведение пропуска без значения, а формы текущей строки ([@Column]) остаются неподдерживаемыми
Изменено
- Когда книга отключает полную точность, пересчитанные результаты теперь сохраняются округлёнными до числа десятичных знаков, отображаемых числовым форматом каждой ячейки, соответствуя поведению Excel “precision as displayed” для значений, вычисленных HotXLS
- Правила условного форматирования, записываемые в XLSX, теперь получают уникальные для листа приоритеты, устраняя файлы с повторяющимися приоритетами, из-за которых Excel запрашивал восстановление
- Условные форматы, помеченные как действующие в пределах сводной таблицы через новое свойство
IsPivot, направляются в блок расширений вместо основного блока условного форматирования листа, где Excel мог бы их отбросить или разместить неправильно
Версия 2.273.0
Изменено
TXLSXWorkbook.PreserveRawPartsтеперь копирует неизменённые изображения листов, изображения верхних и нижних колонтитулов и части диаграмм с их исходными сжатыми полезными нагрузками, тогда как правки данных изображений и правки модели диаграммы идут по пути сериализации- Успешное сохранение файла (SaveAs) теперь принимает зафиксированный пакет как следующую базовую линию копирования исходных данных, позволяя последующим сохранениям переиспользовать заново сериализованные непрозрачные данные, VBA, подключения, внешние ссылки, изображения, диаграммы, темы и полезные нагрузки сводных таблиц без повторного открытия предыдущего исходного пакета
Исправлено
- Неизвестные связи листов и рисунков из пакетов с нестандартными расположениями частей теперь перепривязываются к сгенерированным каноническим владельцам, включая пакеты только с рисунками, чьи единственные якоря — сохранённые неподдерживаемые фигуры
- Неудачное копирование сжатого элемента теперь откатывает его частичный локальный заголовок, байты полезной нагрузки, записи родительских папок и счётчик центрального каталога перед безопасным откатом к сериализации, предотвращая накопление недостижимых данных в выходном архиве
Версия 2.272.0
Изменено
- XLSX SaveAs теперь открывает один проверенный исходный архив для всей операции сохранения и копирует каждую неизменённую непрозрачную часть, достижимую по связям, с её исходной сжатой полезной нагрузкой, избегая повторных сканирований центрального каталога, а также распаковки и пересжатия, тогда как изменённые полезные нагрузки по-прежнему идут по пути сериализации
Исправлено
- Неизвестные связи книги из пакетов, чья книга использует нестандартное имя части, теперь перепривязываются к сгенерированному расположению книги, предотвращая недостижимость сохранённых целевых частей после SaveAs
- Проецированные прямые чтения теперь сохраняют определения мастеров общих формул за пределами выбранного набора строк или столбцов, поэтому выбранные ячейки-последователи по-прежнему получают корректно переведённые формулы без пересборки невыбранных значений или форматированного текста
- Правка диаграммы больше не удаляет немоделируемый числовой формат оси лишь потому, что создание числового формата подписей данных использует элемент с тем же локальным именем
Версия 2.271.0
Исправлено
- Классический экспортёр HTML теперь записывает UTF-8 и объявляет его с помощью
<meta charset>плюс doctype HTML5; ранее поток записывался в системной кодовой странице ANSI, повреждая любое не-ASCII значение ячейки, а отсутствие объявления кодировки оставляло страницу на милость браузера
Версия 2.270.0
Добавлено
- Подписи данных диаграммы теперь могут нести явный числовой формат и размещение через новые свойства рядов
LabelNumFmtиLabelPos(с их флагами*Set), выводимые как<c:numFmt>и<c:dLblPos>в обоих записывателях — стандартном и комбинированных диаграмм, — позволяя текст подписей в процентах или валюте и такие позиции подписей, как снаружи в конце или по центру; любая из настроек сама по себе также включает блок подписей, а ненастроенные ряды остаются побайтово идентичными
Версия 2.269.0
Добавлено
- Ряды линейных и точечных диаграмм теперь могут нести явный символ и размер маркера через новые свойства
MarkerSymbol,MarkerSizeиMarkerSet, выводимые как блок<c:marker>ряда в обоих записывателях — стандартном и комбинированных диаграмм; ненастроенные ряды сохраняют автоматические маркеры - Оси значений с единицами отображения теперь могут показывать подпись единицы (“Thousands”, “Millions”, …) через новое свойство оси
ShowDispUnitsLabel
Версия 2.268.0
Добавлено
- Линии тренда диаграмм XLSX теперь поддерживают фиксированный перехват, а также периоды прогноза вперёд и назад через новые свойства
Intercept/InterceptSet,ForwardиBackward, выводимые как<c:intercept>/<c:forward>/<c:backward>; ранее эти настройки предлагал только классический построитель диаграмм BIFF, а ненастроенные линии тренда остаются побайтово идентичными
Версия 2.267.0
Добавлено
- Вычисление формул теперь вычисляет функции комплексных чисел
IMCOS,IMSIN,IMTAN,IMSEC,IMCSC,IMCOT,IMLOG2иIMLOG10, завершая инженерное семействоIM*покрытием тригонометрических, обратных и логарифмических по основанию 2/10 функций над строковыми операндами комплексных чисел
Версия 2.266.0
Изменено
- Потоковый прямой читатель теперь применяет проекцию столбцов до накопления значений ячеек: когда настроен набор проектируемых столбцов, ячейки вне его пропускают построение значения, формулы и строки форматированного текста, которое ранее выполнялось для каждой ячейки и отбрасывалось в конце ячейки, ускоряя чтение широких листов, проецирующих лишь несколько столбцов
Версия 2.265.0
Добавлено
- Группы графиков столбчатых и столбиковых диаграмм теперь раскрывают настраиваемый режим группировки (
clustered,stacked,percentStacked), ширину зазора кластера и перекрытие рядов через новые свойстваBarGrouping,GapWidthиOverlap; ранее каждая столбчатая/столбиковая диаграмма была жёстко задана какclusteredбез управления зазором или перекрытием, а ненастроенные группы остаются побайтово идентичными, при этом список слияния после правки считает новые элементы принадлежащими
Версия 2.264.0
Исправлено
- Границы ячеек PDF теперь отражают стиль и толщину границ листа вместо того, чтобы каждая граница рисовалась как одинаковая сплошная линия 0.75 pt: ячейки XLSX отображают тонкие, средние, толстые, волосяные и двойные толщины и узоры пунктирный, точечный, штрих-пунктирный, штрих-пунктир-пунктирный и наклонный штрих-пунктирный, а ячейки BIFF отображают тонкие, средние и пунктирные/точечные стили
Версия 2.263.0
Добавлено
- Экспорт PDF теперь может встраивать метаданные документа через новые свойства
DocumentTitle,DocumentAuthor,DocumentSubjectиDocumentKeywords; когда задано любое из них, PDF несёт словарь/Infoс этими полями плюс идентификациюCreator/ProducerиCreationDate, а экспорты по умолчанию без метаданных остаются побайтово идентичными
Версия 2.262.0
Исправлено
- Экспорт CSV больше не избыточно заключает поля в кавычки: внутренний пробел больше не принуждает к кавычкам, поэтому значения, подобные
John Smith, записываются без кавычек, соответствуя RFC 4180 и Excel; поля с разделителем, двойной кавычкой, переносом строки или ведущими/замыкающими пробелами по-прежнему заключаются в кавычки как раньше
Версия 2.261.0
Добавлено
- Каждый ряд диаграммы теперь может нести сплошной цвет заливки через новое свойство
SolidFillHex, выводимое как свойства фигуры<c:spPr>ряда; назначение шестнадцатеричного цвета наносит на ряд фирменный цвет или цвет палитры вместо автоматического цвета темы Excel, при этом ненастроенные ряды остаются побайтово идентичными, а список слияния после правки считаетspPrпринадлежащим, так что он заменяется, а не дублируется
Версия 2.260.0
Изменено
- Внутренняя часть разреженного хранилища ячеек теперь увеличивает буфер каждого блока на 256 строк геометрически (удваивая) вместо перераспределения при каждой добавленной ячейке, устраняя квадратичную стоимость копирования при загрузке плотных листов
Версия 2.259.0
Исправлено
- Записи BIFF8 защиты объектов листа (
OBJECTPROTECT) и защиты сценариев (SCENARIOPROTECT) теперь считываются обратно в состояние защиты листа, поэтому флаги блокировки переживают полный цикл вместо записи с потерей при перезагрузке - Записи глобальных данных книги BIFF8
MMS,RefreshAllиUseSelFSтеперь сохраняются при полном цикле вместо молчаливого отбрасывания
Версия 2.258.0
Добавлено
- Форматированный отображаемый текст теперь распознаёт цветовые директивы
[Cyan]и[Magenta]и индексированные директивы палитры с[Color1]по[Color8], поэтому форматированный вывод в стиле HTML применяет эти цвета вместо их отбрасывания
Версия 2.257.0
Добавлено
- Вычисление формул теперь вычисляет инженерные и математические функции
FACTDOUBLE,SQRTPI,DELTA,GESTEP,SERIESSUMиCONVERT, причёмCONVERTпокрывает единицы массы, расстояния, времени, давления, силы, энергии, мощности, магнетизма, температуры и объёма и отклоняет несовпадающие категории единиц
Версия 2.256.0
Исправлено
- Форматированный отображаемый текст теперь корректно отображает минуты в масках времени, таких как
hh:mm,mm:ssи[h]:mm:ss; ранее использовалсяmmDelphi (месяц), поэтому поля минут показывали номер месяца - Директивы локали и валюты, такие как
[$-409]и[$$-1009], теперь удаляются из форматированного вывода вместо утечки как литеральный префикс$-409, при этом символ валюты, присутствующий в директиве, сохраняется
Версия 2.255.0
Добавлено
- Чтение ZIP-пакетов теперь понимает архивы ZIP64, разбирая дополнительное поле расширенной информации и запись и локатор ZIP64 конца центрального каталога, так что книги, чьи части или смещения превышают классические пределы 4 ГБ / 65535 записей, открываются корректно вместо сбоя проверки корректности конца центрального каталога
Версия 2.254.0
Безопасность
- Проверка пароля зашифрованных книг теперь сравнивает хеш проверяющего значения за постоянное время как для Agile, так и для стандартного шифрования, закрывая побочный канал по времени, который мог раскрыть, сколько ведущих байтов хеша пароля совпадают
- Agile-шифрование больше не возвращается к псевдослучайному генератору с временным зерном для солей, проверяющих значений и промежуточных ключей, когда системный CSPRNG недоступен; теперь оно безопасно завершается с ошибкой вместо выработки предсказуемого ключевого материала
Версия 2.253.0
Добавлено
- Вычисление формул теперь оценивает функции Excel 365 для формирования массивов
VSTACK,HSTACK,TOROW,TOCOL,WRAPROWS,WRAPCOLS,TAKE,DROP,CHOOSECOLS,CHOOSEROWS,EXPAND,RANDARRAYиTEXTSPLIT, проецируя их результаты через существующий механизм динамических массивов - Вычисление формул теперь оценивает современные текстовые функции
TEXTBEFOREиTEXTAFTERс обработкой номера экземпляра, без учёта регистра, конца совпадения и отсутствия значения - Вычисление формул теперь оценивает
RANDBETWEEN,ISEVEN,ISODDи псевдонимFORECAST.LINEARфункцииFORECAST
Версия 2.252.0
Добавлено
- Определённые имена несут необязательный комментарий, проходящий полный цикл как запись NAMECMT BIFF8 и атрибут
commentэлементаdefinedNameOOXML - Цели гиперссылок на локальные файлы нормализуются (преобразование обратной косой черты в косую, префиксы
file://иfile:///, процентное кодирование зарезервированных символов), поэтому Excel сохраняет их без изменений - Виды заливки фигур, изображений и текстовых полей (сплошная, изображение, градиент, нет, автоматическая) теперь типизированы поверх свойства необработанного типа заливки и проходят полный цикл без потерь
- Гистограммы данных условного форматирования поддерживают независимые цвета границ полос отрицательных значений Excel 2010+
- Поля кэша сводной таблицы проходят полный цикл многоуровневой привязки группировки дат и чисел
- Обратные вызовы пользовательских функций получают дескриптор вида аргумента, поэтому обработчики могут различать литеральные значения, ссылки на ячейки или диапазоны и константы массивов
- Компиляция формул принимает локализованные имена функций (немецкие, французские, испанские), переписываемые в канонический английский до лексического разбора
- Вспомогательные средства паролей и шифрования предоставляют именованные константы кодов возврата
Изменено
- Сохранение пакетов и XLSX теперь выполняется через большие буферы deflate с более высоким уровнем памяти сжатия и пропускает избыточный проход контрольной суммы по уже сжатым байтам, снижая нагрузку на процессор и время сохранения
- Внутренний рост построителей строк, списков и хеш-таблиц теперь использует геометрическое (удваивающее) выделение вместе с более ранней точкой изменения размера хеша, снижая интенсивность выделений и стоимость поиска, когда книга содержит много стилей, имён, определённых диапазонов или общих строк
- Поиск в таблице общих строк теперь напрямую сравнивает сохранённые байты до материализации полной строки, сокращая выделения при поиске на больших таблицах общих строк
Версия 2.251.0
Исправлено
- Открытие и сохранение XLSX теперь сохраняют посторонние объявления пространств имён корня книги, атрибуты совместимости разметки, полные полезные нагрузки
<extLst>на уровне книги и их неизвестные связи при регенерации типизированного состояния книги; сохранённые ссылкиr:idследуют переназначению идентификаторов связей вместо устаревания, когда они конфликтуют со сгенерированными связями листа или книги
Версия 2.250.0
Изменено
- Разрежённые записи строк XLSX теперь хранят только свой столбец и стабильный дескриптор ячейки, устраняя неиспользуемые теги полезной нагрузки, избыточную классификацию и повторный поиск индекса строки всякий раз, когда изменяется значение ячейки, формула или объект форматированного текста
Версия 2.249.0
Добавлено
- Перегрузки
TXLSRTFImport.LoadFromRTFиTXLSWorksheet.OpenRTFмогут импортировать таблицы или списки абзацев в явную целевую строку и столбец с отсчётом от 1, тогда как исходные перегрузки по-прежнему начинаются с A1
Изменено
- Типизированные построчные записыватели XLSX теперь добавляют строго последовательные пакеты непосредственно в предварительно размеренные разрежённые векторы строк, а поиск разрежённых ячеек разрешает попадания в первый и последний столбцы без бинарного поиска, тогда как перекрывающиеся записи сохраняют существующий путь замены и стабильные дескрипторы ячеек
Исправлено
- Копирование необработанных частей XLSX на основе файлов и выборочная загрузка листов теперь используют частную идентичность исходного архива с проверкой размера и временной метки, поэтому последующее открытие потока или публичное присваивание
FileNameне может перенаправить сохранённые части в другую книгу RefreshPivotCacheтеперь переключает обновлённые кэши на типизированную сериализацию, чтобы перестроенные записи не могли быть перезаписаны устаревшими необработанными байтами пакета при сохранении- Копирование необработанных сжатых ZIP теперь требует, чтобы исходный поток содержал ровно объявленное количество сжатых байтов, отклоняя как усечённые, так и чрезмерно длинные записи до регистрации в центральном каталоге
- Повторное использование одного импортёра RTF теперь сбрасывает состояние анализатора кодовой страницы и символьных форматов между документами, поэтому полужирное, курсивное, подчёркнутое, зачёркнутое начертание и размер шрифта не могут просочиться в следующий импорт
- Открытия XLSX в режиме
MetadataOnlyтеперь избегают общих строк, лиц, связей листов, комментариев, рисунков, диаграмм, таблиц, таблиц запросов, сводных таблиц и непрозрачных полезных нагрузок, достижимых с листа, сохраняя свойства книги, имена, состояния листов, стили, тему, подключения и внешние ссылки
Версия 2.248.0
Изменено
- XLSX SaveAs теперь копирует без изменений части
connections.xmlиз исходного пакета, когда разобранная модель подключений не изменена, сохраняя точность исходного XML и избегая ненужной распаковки и пересжатия, по-прежнему перезаписывая отредактированные подключения из типизированной модели
Версия 2.247.0
Изменено
- XLSX SaveAs теперь копирует без изменений XML внешних ссылок и части связей из исходного пакета, когда разобранная модель не изменена, сохраняя неизвестный XML расширений и избегая ненужной распаковки и пересжатия, по-прежнему перезаписывая отредактированные ссылки из типизированной модели
Версия 2.246.0
Добавлено
- Перегрузки
TXLSHTMLImport.LoadFromHTMLмогут импортировать в целевую строку и столбец с отсчётом от 1, выбирать одну таблицу верхнего уровня с отсчётом от 0 или все таблицы и разбирать числа с явным десятичным разделителем без изменения глобальных настроек форматов
Изменено
- Загрузка стилей XLSX теперь разрешает стиль каждой ячейки через общий неизменяемый массив cellXf вместо повторного построения строковых ключей и линейного поиска по карте, сокращая время открытия стилизованных книг и временные выделения
Исправлено
- Изменённые байты проекта VBA теперь обходят копирование сохранённых необработанных частей, поэтому сохранение отредактированной книги с поддержкой макросов не может восстановить исходную полезную нагрузку
vbaProject.bin - Копирование необработанных элементов ZIP теперь отклоняет методы сжатия, отличные от STORE и DEFLATE, вместо выдачи несогласованного заголовка сжатия, позволяя вызывающему коду использовать безопасную распаковку и пути отката с перезаписью
- Импорт HTML теперь игнорирует теги строк и ячеек вне таблиц верхнего уровня и сохраняет установленное поведение всех таблиц исходных перегрузок
Версия 2.245.0
Добавлено
- Редактируемые ячейки
TXLSWorkbookViewerс учётом защиты ячеек при вводе, вводом формул и пересчётом, выделением прямоугольных диапазонов, выбором ссылок на формулы и ограниченной циклической историей отмены и повтора TXLSPivotDesignerпредоставляет переиспользуемую невизуальную модель списка полей с зонами строк, столбцов, фильтров и значений, детерминированным перемещением полей, выбором агрегации, проверкой макета и применением результатов- Классические книги XLS теперь предоставляют диагностику
CalculateAndVerifyс общими записями расхождений, содержащими идентичность листа, координаты ячеек с отсчётом от 1, кэшированные и заново вычисленные значения и текст формулы - Классические листы XLS и XLSX теперь предоставляют типизированные числовые, строковые и вариантные построчные и постолбцовые записыватели с координатами от 1, ограничением границами сетки, прямыми записями в модель ячеек и возвращаемым количеством записей
Изменено
- Отображение просмотрщика XLSX теперь сохраняет разрежённые листы, избегая материализации пустых ячеек при перерисовке и разрешении стилей
TXLSXWorksheet.ReplaceTextтеперь обходит сохранённые ячейки напрямую за линейное время без копирования и сортировки полной коллекции ячеек
Исправлено
- Чтение и запись классических XLS RC4 и RC4 CryptoAPI теперь сохраняют каждое тело записи открытого текста, требуемое
[MS-XLS], оставляютBoundSheet8.lbPlyPosнезашифрованным, потребляют согласованные позиции потока ключей и активируют расшифровку до чтения первой зашифрованной записи послеFILEPASS - Сериализация SpreadsheetML теперь применяет симметричный кодек
_xHHHH_только к полям Xstring, тогда как формулы и синтаксис ссылок используют обычное XML-экранирование, поэтому литералы в форме токенов сохраняют точное значение формулы
Версия 2.244.0
Добавлено
- Многоформатный импорт из буфера обмена:
XLSPasteFromClipboardRichпредпочитает формат буфера обмена XML Spreadsheet (переносящий формулы, стили и объединения) обычному тексту Unicode, сXLSClipboardHasXmlSpreadsheet,XLSGetClipboardXmlSpreadsheetиXLSParseXmlSpreadsheetдля обнаружения формата, извлечения и разбора SpreadsheetML 2003
Версия 2.243.0
Добавлено
- Внешние определённые имена:
TXLSXExternalLinkтеперь разбирает, хранит и проводит полный цикл записей<definedNames>(имя + refersTo) из ссылок на внешние книги, с доступом черезAddDefinedName,FindDefinedNameи индексированныйDefinedNames[] - Состояние сбоя обновления для каждого листа: каждый
TXLSXExternalSheetDataнесёт флагRefreshError, фиксирующий, не завершилась ли последняя попытка обновления сбоем, разбираемый из атрибутаrefreshErrorи выводимый в него
Версия 2.242.0
Добавлено
TXLSXWorkbook.PreserveRawPartsкопирует сжатое представление неизменённых частей (темы, проекта VBA, сводных таблиц и кэшей сводных таблиц) непосредственно из исходного архива при SaveAs, избегая распаковки и пересжатия сохранённых непрозрачных записей
Версия 2.241.0
Добавлено
- Свойство
TXLSXWorkbook.SelectedSheetsвключает выборочную загрузку листов: Open разбирает XML ячеек только для листов, перечисленных в списке, тогда как остальные листы сохраняют свои имена и состояния видимости с нулевым числом ячеек. ВызовLoadSheet(Index)материализует пропущенный лист по требованию из исходного архива
Версия 2.240.0
Добавлено
- Режим открытия
TXLSXWorkbook.MetadataOnlyразбирает свойства книги, определённые имена, имена и состояния видимости листов, стили, тему, подключения и внешние ссылки, но пропускает весь XML ячеек листов и вспомогательные части для быстрого обнаружения свойств и имён в больших книгах
Версия 2.239.0
Добавлено
- Компактное хранилище ячеек блоками по 256 строк со стабильными публичными дескрипторами, кэш-дружелюбной сериализацией по строкам и уплотнением стилей по всем пулам книги перед каждым сохранением
- Интервальные наложения стилей позволяют форматированию строк, столбцов и прямоугольников оставаться компактным без материализации пустых объектов ячеек, разрешаются лениво при доступе к ячейке, переживают структурные правки и проходят полный цикл как компактные записи ячеек столбцов, строк и только стилей
Изменено
- Обычное сохранение книги теперь передаёт строку каждого листа непосредственно в поток deflate пакета, поэтому пиковая память соответствует самой большой отдельной строке, а не полному XML листа
- Общие строки и вспомогательные части XML теперь передаются по одной записи через единый переиспользуемый сериализатор UTF-8, ограничивая пиковую память самой большой записью вместо всей части
Версия 2.238.0
Добавлено
TXLSPaginationModelстроит переиспользуемые логические страницы для диапазонов, листов и книг XLS и XLSX с геометрией бумаги, полями, верхними и нижними колонтитулами, полосами строк и столбцов, повторяемыми заголовками, порядком страниц, политикой линий сетки и размещением рисунковTXLSWorkbookViewerтеперь предоставляет предпросмотр печати с общей моделью, навигацию по страницам с клавиатуры и колеса прокрутки, кэшированный доступ кPaginationModel, явныйRefreshPaginationи вывод EMF для выбранных страницTXLSPDFExport.CreatePaginationModelпредоставляет точную принадлежащую модель страниц, используемую подсчётом и рендерингом PDF для всех шести типов входных данных XLS и XLSX
Изменено
- Экспорт PDF и подсчёт страниц теперь используют единый движок разбивки на страницы вместо отдельных циклов страниц XLS и XLSX
- Масштабирование по ширине и по высоте теперь решается относительно фактических полос страниц, включая ручные разрывы и повторяемые заголовки, в пределах диапазона масштаба Excel от 10% до 400%
Версия 2.237.0
Добавлено
TXLSFormulaDebuggerсоздаёт принадлежащую интерактивную сессию, содержащую разобранное дерево выражений, исходные диапазоны, операторы, узлы и значения операндов, промежуточные результаты, детерминированный порядок вычисления и навигируемое состояние текущего шага- Сеансы отладки формул предоставляют зависимости ячеек и диапазонов с разрешёнными координатами листов, сообщают выбранные и пропущенные ветви для
IF,IFERROR,IFNA,CHOOSE,IFSиSWITCHи сохраняют восстановленные внутренние ошибки с их исходным узлом
Изменено
Calculateкниги и листа теперь возвращает сбои формул Excel как стандартные значения ошибокVariantвместо преобразования их вNullTXLSFormulaTracerтеперь фиксирует точные стеки операндов до и после для шагов помещения и свёртки
Версия 2.236.0
Добавлено
TXLSXWorksheet.StructuralEditRegistryтеперь позволяет метаданным листа, принадлежащим приложению, участвовать во вставках и удалениях строк и столбцов черезIXLSXStructuralEditParticipant
Изменено
- Структурные правки XLSX теперь выполняют свою чувствительную к ссылкам работу в одной защищённой транзакции, охватывающей формулы, имена, проверки, условные форматы, комментарии, гиперссылки, рисунки, таблицы, запросы, сценарии, таблицы данных, настройки печати, спарклайны, кэши и представления сводных таблиц и расширения листов
Исправлено
- Вставленные или удалённые строки и столбцы теперь обновляют защищённые диапазоны, якоря ветвей обсуждений, заново открытый VML классических комментариев, локальные и межлистовые ссылки спарклайнов, типизированные источники и якоря сводных таблиц, вычисляемые формулы сводных таблиц и распознаваемые ссылки внутри сохранённого XML расширений листов
Версия 2.235.0
Добавлено
TXLSDirectWriterтеперь добавляет классические комментарии, закреплённые изображения листов, основанные на формулах столбчатые, полосовые, линейные, областные, круговые, кольцевые и точечные диаграммы и полный предоставленный вызывающим кодом ChartML без построения полной объектной модели книги- Изображения можно предоставлять в виде байтов, перемещаемых потоков с необязательной передачей владения или путей к файлам, и они могут использовать содержимое PNG, JPEG, GIF, BMP, EMF или WMF
Изменено
- Обширные части прямого записывателя используют побочные дескрипторы текущего листа, назначают идентификаторы связей листа до закрытия листа и передают потоком медиа и связанные части XML после XML листа, чтобы память строк не зависела от размера листа
Версия 2.234.0
Добавлено
TXLSDirectReaderтеперь предоставляет события размеров, формата листа, столбцов, строк, панелей и объединённых диапазонов по запросу с типизированными записями макета- События столбцов и строк сообщают ширины или высоты, скрытое и свёрнутое состояние, уровни структуры и исходные индексы стилей без построения объектов ячеек листа
Изменено
- Назначенные обратные вызовы макета используют проход метаданных с ограниченной памятью до доставки ячеек, гарантируя, что объединённые диапазоны и другие факты макета поступают до ячеек, которые от них зависят, тогда как обычные сканирования только ячеек сохраняют исходный однопроходный путь
- Параллельные прямые чтения сохраняют обратные вызовы макета на вызывающем потоке и завершают метаданные выбранных листов до обработки упорядоченных очередей ячеек рабочих потоков
Версия 2.233.0
Добавлено
TXLSXChartTextStyleтеперь предоставляет типизированные имена шрифтов заголовков диаграмм, легенд, заголовков осей и подписей осей, размеры в пунктах, цвета RGB, акцент и поворот текстаTXLSXChartLayoutтеперь предоставляет нормализованное ручное позиционирование области построения, заголовка диаграммы, заголовков осей и легенды с явными режимами края или коэффициента и внутренними или внешними целями области построения- Диаграммы теперь предоставляют типизированные видимость, положение, наложение, стиль текста и элементы управления макетом легенды вместе с настройками наложения заголовка диаграммы
Изменено
- Ручные макеты всегда сериализуют полные группы x, y, ширины и высоты, используя совместимые с Office режимы по умолчанию, поэтому Excel не отбрасывает частичные или конфликтующие координаты
Исправлено
- Редактирование типизированных шрифтов или макетов диаграмм сохраняет несвязанные списки расширений и пользовательское содержимое пространств имён, тогда как очистка известного свойства цвета или акцента больше не восстанавливает импортированное значение при структурном слиянии
Версия 2.232.0
Добавлено
TXLSXImageтеперь предоставляет края обрезки в процентах, прозрачность, яркость, контраст, поворот в градусах и режимы заливки растяжением или плиткойTXLSXImage.HasPreservedXmlсообщает, доступен ли импортированный DrawingML, тогда какClearPreservedXmlпереводит одно изображение в чистую регенерацию типизированной модели
Изменено
- Значения эффектов изображений используют компактное хранение с фиксированной точкой и записывают нативные единицы DrawingML без выделения вспомогательных объектов для каждого эффекта
Исправлено
- Редактирование поддерживаемого свойства импортированного изображения теперь сохраняет несвязанные расширения, выборы совместимости разметки, пользовательские атрибуты, эффекты фигур и содержимое с квалифицированными пространствами имён
Версия 2.231.0
Добавлено
- Импортированные диаграммы XLSX теперь сохраняют свой исходный ChartML, пока включён
TXLSXWorkbook.PreserveUnsupportedParts, сохраняя неизвестные пространства имён, альтернативы совместимости разметки, списки расширений, пользовательские стили и немоделируемое форматирование TXLSXChart.HasPreservedXmlсообщает, доступен ли исходный ChartML, аClearPreservedXmlпозволяет приложениям переводить одну диаграмму в чистую регенерацию типизированной модели
Изменено
- Сохранение нетронутой импортированной диаграммы воспроизводит её исходный ChartML, тогда как правки поддерживаемых свойств структурно накладываются только на смоделированные узлы диаграммы и оставляют несвязанное содержимое на месте
Исправлено
- Редактирование заголовка диаграммы, ряда, оси или другого поддерживаемого свойства больше не отбрасывает несвязанные созданные в Excel расширения, альтернативное содержимое, стили или форматирование из части диаграммы
Версия 2.230.0
Добавлено
TXLSXChart.AddPlotGroupтеперь строит упорядоченные комбинированные диаграммы, семейства диаграмм и ряды которых сохраняют независимые назначения основных или вторичных осей- Диаграммы теперь предоставляют основные и вторичные оси категорий и значений плюс ось рядов с типизированными настройками категорий, значений, дат и осей рядов, включая позиции, идентификаторы, пересечения, единицы дат, интервалы подписей и видимость
- Столбчатые, полосовые, линейные, круговые и областные диаграммы теперь имеют выделенные трёхмерные типы диаграмм с настраиваемым поворотом, высотой, глубиной, перспективой, осями под прямым углом и глубиной зазора
- Ряды теперь предоставляют типизированные строковые и числовые кэши для имён, категорий, значений и размеров пузырьков, включая разрежённые индексы точек и коды числовых форматов
Изменено
- Совместимые API
ChartType,AddSeriesи плоскийSeriesпо-прежнему обращаются к основной группе построения, тогда как модель диаграммы сохраняет каждую упорядоченную группу построения
Исправлено
- Открытие и повторное сохранение комбинированных диаграмм больше не сворачивает их в одно семейство диаграмм и не теряет вторичные, датовые оси или оси рядов
- Ссылки формул диаграмм и кэшированные значения рядов теперь переживают копирования книг и циклы открытия/сохранения без уплощения или отбрасывания
- Якоря диаграмм теперь сопоставляются с их частями диаграмм по идентификатору связи, поэтому приложения, переупорядочивающие записи связей, больше не меняют местами содержимое диаграмм между позициями листов
Версия 2.229.0
Добавлено
TXLSXWorksheet.HeaderFooterImagesтеперь создаёт, находит, заменяет и удаляет типизированные слоты изображений для каждой левой, центральной и правой позиции верхнего или нижнего колонтитула на нечётных, чётных и первых страницах- Изображения верхних и нижних колонтитулов предоставляют свои необработанные данные, формат, заголовок, точечные размеры и точечные поля с прямой загрузкой из файлов PNG, JPEG, GIF, BMP, EMF и WMF
Изменено
- Изображения для чётных страниц и первой страницы автоматически включают соответствующие варианты страниц и поддерживают требуемые коды полей рисунков при редактировании текста верхнего или нижнего колонтитула
Исправлено
- Комментарии листа и изображения верхних или нижних колонтитулов теперь сохраняют независимые связи VML, когда они используют один лист
- Слоты изображений верхних и нижних колонтитулов, созданные в Excel, теперь сохраняют свои байты изображения, форматы, заголовки, размеры, поля и связи через циклы открытия и сохранения
Версия 2.228.0
Добавлено
- Классические листы XLS и коллекции фигур теперь создают и обнаруживают типизированные элементы управления
TXLSButtonиTXLSRadioButtonнаряду с флажками, полями со списком и списками - Элементы управления форм теперь предоставляют имена макросов, связанные ячейки, диапазоны ввода, состояния флажков, плоский или 3D-вид и связи групп переключателей через типизированные свойства
- Определённые имена предоставляют
IsMacro, чтобы привязки макросов сохраняли необходимые метаданные имени книги
Исправлено
- Редактирование и повторное сохранение классических элементов управления форм больше не отбрасывает состояния флажков, привязки макросов, формулы связанных ячеек, исходные диапазоны или поддерживаемые метаданные групп переключателей
- Очистка исходного диапазона поля со списком или списка теперь удаляет сериализованную формулу ввода вместо восстановления предыдущего диапазона при следующем открытии
Версия 2.227.0
Добавлено
LINESTиLOGESTтеперь возвращают полные многомерные массивы коэффициентов и необязательные пятистрочные статистические матрицыTRENDиGROWTHтеперь возвращают сформированные массивы прогнозов для одномерных и многомерных входов
Изменено
- Массивы арифметики, сравнения, конкатенация, унарное отрицание и процентные операции теперь рассылают скаляры и одиночные строки или столбцы, сохраняя результаты для каждой ячейки
- Зависимости вычислений теперь разворачивают вложенные имена книг и листов, имена, определённые формулами, и ссылки на несколько областей с защитой от циклов, учитывающей область действия
Исправлено
- Ошибка в одном элементе массива больше не разрушает полный результат и некорректно не откатывается к скалярной оценке
- Определённые формулами имена, зависимости которых можно разрешить статически, больше не принуждают к ненужному волатильному полному пересчёту
Версия 2.226.0
Добавлено
- Существующие XLSX сводные кэши и представления сводных таблиц теперь загружаются в типизированную модель через связи пакета, включая записи кэша, поля, общие элементы, группировку, фильтры, форматы, вычисляемые определения и расширения
TXLSPivotTable.Makeтеперь оценивает вычисляемые поля кэша, вычисляемые элементы и вычисляемые элементы данных с привязкой имён, учитывающей зависимости- Расширенные режимы
ShowDataAsдобавляют родительские проценты, накопительные проценты и возрастающее или убывающее ранжирование с допустимой разметкой расширения XLSX
Изменено
- Генерация сводных результатов теперь применяет видимость элементов, выбор страниц и фильтры подписей, дат, агрегатов и значений перед построением сгруппированных доменов
- Числовые, датовые и дискретные группы, сортировка по подписи или значению данных, настроенные промежуточные итоги и необязательные материализованные строки или столбцы общих итогов теперь участвуют в генерации результатов
Исправлено
- Сводные фильтры теперь используют допустимую по схеме разметку фильтров корневого уровня и символические типы фильтров вместо неоднозначных числовых значений
- Загрузка на основе связей больше не предполагает обычные или последовательные имена частей сводного кэша, записей кэша или сводных таблиц
Версия 2.225.0
Добавлено
TXLSXWorkbook.ConnectionsиTXLSXWorksheet.QueryTablesтеперь предоставляют типизированное создание и редактирование метаданных внешних баз данных, веба, текста и результатов запросов- Параметры подключения сохраняют свой точный тип Boolean, целое число, число с плавающей точкой, строку или ссылку на ячейку, включая явные значения ноль, false и пустая строка
Изменено
- Открытие и сохранение XLSX теперь разрешают и записывают части подключений и таблиц запросов через их отношения владельца, синхронизируют таблицы результатов и определенные имена и сохраняют неизвестные атрибуты, дочерние узлы и списки расширений
- Редактирование строк и столбцов сохраняет диапазоны результатов запросов выровненными, тогда как копирование листов в одной книге и между книгами сохраняет владение запросами и переназначает идентификаторы подключений и конфликтующие имена
Исправлено
- Таблицы запросов могут сосуществовать со стандартными таблицами, цепочками комментариев и сводными таблицами без коллизий идентификаторов отношений листа или книги
Версия 2.224.0
Добавлено
- Классические листы XLS и современные листы XLSX теперь предоставляют
AddDataTableиDataTablesдля таблиц данных What-If с одной переменной по строке, одной переменной по столбцу и двумя переменными
Изменено
- Пересчёт книги вычисляет каждый результат таблицы данных в изолированном контексте ввода, включая косвенные зависимости формул, и сохраняет определения плюс кэшированные результаты при открытии, сохранении, копировании листа и структурных правках строк или столбцов
Исправлено
- Удалённые ячейки ввода What-If теперь дают результаты
#REF!, а классический пересчёт книги посещает каждый лист вместо того, чтобы пропускать первый лист - Вставка строк в верхней части классического листа больше не грозит нарушением доступа на Win64
Версия 2.223.0
Изменено
- Отмена параллельного прямого читателя теперь распространяется через активные чтения ZIP-членов и каждый шаг распаковки вместо ожидания следующего извлечения XML
Исправлено
- Прерывание параллельного сканирования листа больше не ожидает завершения большого чтения сжатого XML перед освобождением заблокированных рабочих потоков
Версия 2.222.0
Добавлено
TXLSDirectReader.ParallelBufferMemoryLimitограничивает совокупную полезную нагрузку очереди сырых ячеек для параллельного сканирования листов, тогда какParallelPeakBufferedBytesотображает измеренный пик для диагностики и тестов ёмкости
Изменено
- Параллельные прямые чтения теперь передают в потоковом режиме ZIP-записи листа в XML-читатели, локальные для рабочего потока, и ограниченные очереди «производитель-потребитель», вместо сохранения полностью распакованного XML листа и полных буферов ячеек на каждый лист
- Активные листы получают независимые бюджеты очередей и обрабатываются в окнах размером с рабочий поток, сохраняя порядок обратных вызовов без позволения последующим листам оставлять без ресурсов лист, выводимый в данный момент
Исправлено
- Прерывания ячеек, сбои обратных вызовов и ошибки рабочих потоков теперь пробуждают заблокированных производителей и потребителей, кооперативно останавливают извлечения XML, присоединяют все рабочие потоки и оставляют прямой читатель пригодным для повторного использования
Версия 2.221.0
Изменено
- Открытие многостраничного XLSX теперь передаёт в потоковом режиме каждую ZIP-запись листа напрямую в свой распаковщик и XML-читатель, локальные для рабочего потока, вместо сохранения распакованного XML листа перед синтаксическим анализом
- Параллельные читатели листов сериализуют только короткие позиционированные чтения из источника пакета, поэтому распаковка и анализ XML остаются параллельными, тогда как временная входная память листа ограничена количеством активных рабочих потоков
Версия 2.220.0
Добавлено
- Формирование результатов сводной таблицы теперь выполняет все девять классических режимов
ShowDataAs, включая разницу, процент от базового элемента, процентную разницу, нарастающий итог, процент строки, процент столбца, процент от итога и расчёты индекса xlPivotBaseItemPreviousиxlPivotBaseItemNextпредоставляют типизированные селекторы для смежных базовых элементов в расчётах сравнения
Изменено
- Проценты сводной таблицы и значения индекса используют итоги по строкам, столбцам и общие итоги, агрегированные напрямую из исходных записей, сохраняя корректную семантику Average, Product, Count, дисперсии и стандартного отклонения без повторного сканирования источника
- Нарастающие итоги следуют порядку элементов сводной таблицы, сбрасываются независимо для каждой одноранговой группы и сохраняют разрежённое хранение результатов для сводных таблиц высокой мощности
Исправлено
- Записи BIFF8
SXDIтеперь используют стандартную фиксированную 14-байтовую разметку и сохраняютShowDataAs, базовое поле, базовый элемент, числовой формат и отображаемое имя через типизированные чтения, тогда как устаревшие записи HotXLS остаются читаемыми - Поля данных XLSX теперь записывают индексы полей сводной таблицы, сопоставляют селекторы previous и next с требуемыми значениями OOXML и формируют базовые атрибуты только для режимов, которые их используют
- Отсутствующие ячейки сравнения остаются пустыми, тогда как присутствующие нулевые знаменатели возвращают
#DIV/0!вместо того, чтобы путаться с отсутствующими данными
Версия 2.219.0
Исправлено
VDBтеперь применяет амортизацию по переменному снижающемуся остатку в дробных периодах, переключается на линейную амортизацию при выгодности и учитываетno_switch- Нулевые коэффициенты, границы ликвидационной стоимости, дробные начальные периоды и недопустимые диапазоны периодов теперь следуют Excel-совместимым результатам вместо округления периодов и возврата упрощённой аппроксимации снижающегося остатка
Версия 2.218.0
Добавлено
TXLSXWorksheet.Scenariosтеперь предоставляет типизированное создание диспетчера сценариев What-If с именованными сценариями, индексами active и shown, диапазонами изменяемых ячеек, метаданными пользователя и комментария, состояниями locked и hidden, а также принадлежащими значениями ячеек ввода- Определения сценариев теперь следуют копиям листов и структурным правкам строк или столбцов, тогда как ограничения совместимости с Excel проверяются до того, как недопустимые метаданные могут быть записаны
Исправлено
- Открытие и сохранение сценариев, созданных в Excel, теперь сохраняет корневые атрибуты и вложенные ячейки ввода вместо уплощения иерархии в потери в сырому XML
- Элементы листа Сценарий, Автофильтр, консолидация данных, объединённые ячейки и фонетические элементы теперь используют порядок схемы, чтобы строгим потребителям электронных таблиц не требовался проход ремонта
Версия 2.217.0
Добавлено
TXLSXWorksheet.IgnoredErrorsтеперь предоставляет типизированное создание для каждой стандартной категории игнорируемых ошибок со ссылками на несколько областей, поддержкой копирования листов, обновлениями при структурном редактировании и циклами открытия/сохраненияTXLSXWorkbookтеперь предоставляет режим ссылок, пересчёт при сохранении, полную точность, параллельные вычисления и настройки ручной параллельности наряду с существующими параметрами вычислений
Исправлено
- Каждый нестандартный параметр вычислений книги теперь независимо создаёт и сохраняет в цикле элемент
calcPr, упорядоченный по схеме, включая пределы итерации, заданные до включения итерации - Режимы вычислений, режимы ссылок, границы итерации, идентификаторы вычислений и счётчики ручной параллельности теперь отклоняют или нормализуют недопустимые значения вместо записи неоднозначного состояния книги
Версия 2.216.0
Изменено
- Функции
XMATCHиXLOOKUPтеперь выполняют логарифмические восходящий или нисходящий бинарный поиск по запросу, включая совместимые с Excel границы дубликатов и приблизительного совпадения - Функция
XIRRтеперь учитывает своё начальное приближение с помощью защищённого решателя, способного находить высокие и чувствительные к начальному приближению корни, аXNPVиспользует компенсированное суммирование и проверенные входные данные дат и ставок - Поиск определённых имён XLSX при высокой кардинальности теперь использует ленивый индекс хэширования с учётом области видимости, сохраняя сериализованный порядок, приоритет локальных имён и поведение первого совпадения
- Сохраняемые части пакета XLSX теперь выделяют заявленный несжатый размер однократно, сохраняя полную проверку длины и CRC
Исправлено
- Недопустимые режимы поиска, бинарный поиск с подстановочными знаками, двумерные диапазоны поиска и несоответствующие возвращаемые векторы
XLOOKUPтеперь сообщают об ошибках формулы вместо выдачи неоднозначных результатов XIRRиXNPVтеперь отклоняют недопустимые знаки денежных потоков, ставки, начальные приближения и даты, усекают дробные сериальные номера дат и сообщают о расходимости вместо возврата непроверенного среднего значения
Версия 2.215.0
Добавлено
- Функция
FREQUENCYтеперь возвращает вертикальный массив с одним результатом на каждый интервал плюс дополнительный интервал переполнения
Изменено
- Функция
SORTтеперь использует стабильное масштабируемое упорядочивание строк или столбцов, сохраняя исходный порядок равных ключей - Функция
UNIQUEтеперь использует стабильное сопоставление по хеш-индексу для строк или столбцов, включая результатыexactly_onceи текст без учёта регистра - Функции
PERCENTRANK.INC,PERCENTRANK.EXCиMODE.MULTтеперь эффективно масштабируются на входных данных с высокой кардинальностью вместо квадратичного сканирования
Исправлено
- Параметр
by_colфункцийSORTиUNIQUEтеперь работает со столбцами вместо возврата к поведению для строк
Версия 2.214.0
Добавлено
- Открытие XLSX теперь принимает потоковые XML-части в UTF-16 с прямым и обратным порядком байтов с меткой порядка байтов или обязательным endian-специфичным объявлением, включая символы вне Basic Multilingual Plane
Изменено
- Обновление кэша сводных таблиц с высокой кардинальностью теперь использует детерминированные хеш-индексы для общих значений и выделяет матрицу записей однократно, сохраняя порядок элементов по первому вхождению и избегая повторных линейных поисков и построчного роста
- Проекционные прямые чтения отбрасывают ячейки вне выбранных строк и столбцов перед копированием необработанных значений, формул и форматированного текста в буферы отдельных листов
Исправлено
- Некорректный XML с дублирующимися метками порядка байтов, неподдерживаемыми или противоречивыми объявлениями кодировки, сигнатурами UTF-32, нечётными длинами байтов UTF-16 или недопустимыми суррогатными парами теперь отклоняется
- Параллельные рабочие процессы прямого чтения теперь инициализируют всё состояние задач перед запуском, прекращают принимать новые задания листов после сбоя, детерминированно повторно вызывают ошибку задания с наименьшим индексом и очищают каждый созданный рабочий процесс при сбое построения пула
Версия 2.213.0
Добавлено
- Функция
T.TESTтеперь вычисляет независимые выборки с объединённой равной дисперсией или неравной дисперсией Уэлча в дополнение к парным выборкам, включая односторонние и двусторонние вероятности
Изменено
- Открытие XLSX теперь следует целевым объектам связей книги, листа и документа для листов, общих строк, стилей, тем, макросов, внешних ссылок, комментариев, цепочек комментариев, VML, рисунков, изображений, диаграмм, таблиц и сводных таблиц, включая корректные пакеты, использующие переименованные или несмежные пути частей
Исправлено
- Некорректные пакеты с дублирующимися идентификаторами связей больше не позволяют более поздней неподдерживаемой связи заменить первый пригодный целевой объект при восстановлении совместимости
Версия 2.212.0
Изменено
- Отслеживание зависимостей формул теперь лучше масштабируется на больших листах за счёт индексирования зависимостей ячеек и диапазонов перед перестроением и инвалидацией загрязнённых ячеек
- Большие статистические и регрессионные формулы теперь вычисляют каждое числовое значение в указанных диапазонах вместо остановки на предыдущем буфере фиксированного размера
Исправлено
- Ячейки XLSX вне сетки листа последовательно отклоняются, поэтому недопустимые координаты больше не могут псевдонимно ссылаться на корректные ячейки
- Редактирование формул больше не сбрасывает режим вычисления книги, лимиты итераций, флаги полного вычисления и другие параметры вычисления
- Чтение списков больших двоичных объектов теперь явно проверяет запрошенные диапазоны и допускает корректные пустые срезы в конце потока
Безопасность
- Шифрование классического XLS теперь охватывает потоки кэша сводных таблиц вместе с данными листа
- Некорректные хвосты расширений SST и записи центрального каталога ZIP отклоняются до того, как слишком большое выделение памяти, усечённое чтение или встроенные в комментарий поддельные записи каталога смогут повлиять на загрузку
Версия 2.211.0
Добавлено
TXLSPivotTable.Makeтеперь материализует каждое настроенное поле данных с собственной агрегацией и разворачивает значения по строкам или столбцам в соответствии сDataFieldAxisIsRow
Изменено
- Генерация результатов сводной таблицы повторно использует хеш-индексированные домены ключей строк и столбцов для всех полей данных, выбирает плотное или разреженное хранилище аккумулятора по форме результата, сохраняет порядок элементов кэша более чем для девяти ключей и формирует читаемые комбинированные метки для много полей по осям
Исправлено
Countтеперь включает непустые текстовые, логические, значения ошибок, дат и числовые значения кэша, тогда какCountNumsвключает только числовые значения и даты,Productвозвращает ноль для пересечений без числовых значений, пустые ячейки больше не учитываются как записи, а сводные таблицы только со значениями могут формировать свои общие итоги без полей строк или столбцов
Версия 2.210.0
Добавлено
TXLSWorkbookViewerтеперь отрисовывает условные заливки XLSX, цвет и начертание шрифта, числовые форматы, направленные положительные и отрицательные полосы данных, градиенты, границы, оси, скрытые значения и все встроенные семейства наборов значковTXLSWorkbookViewer.RefreshConditionalFormatsперестраивает подготовленное агрегированное и пороговое состояние после того, как вызывающий код изменяет присоединённую книгу XLSX на месте
Изменено
- Средство просмотра кэширует один подготовленный вычислитель условного форматирования на активный лист, повторно использует его при прокрутке, выделении и перерисовке и освобождает его при смене книги или листа
Исправлено
- Оси полос данных на крайней правой границе теперь обрезаются внутри ячейки-владельца вместо отрисовки в соседней ячейке
Версия 2.209.0
Добавлено
- Листы XLSX теперь предоставляют подготовленный вычислитель условного форматирования, который определяет приоритет правил,
StopIfTrue, относительные формулы, дифференциальные стили, ранжирование Top/Bottom, проверки выше/ниже среднего, повторяющиеся и уникальные значения, относительные периоды дат, двух- и трёхцветные шкалы, полосы данных и наборы значков для любой ячейки
Изменено
- Экспорт в HTML и PDF теперь отрисовывает соответствующие условные заливки, начертание и цвет шрифта, числовые форматы, цветовые шкалы, направленные положительные и отрицательные полосы данных, явные оси, глифы семейств значков, скрытые значения и цвета темы с разрешением оттенка
- Большие домены условного форматирования теперь повторно используют скомпилированные относительные формулы без распределения синтаксического дерева для каждой ячейки, потоково вычисляют среднее, отклонение, минимальные и максимальные статистические показатели, сохраняют упорядоченные значения только для правил ранжирования или перцентилей, пакетно сортируют дубликаты ключей в Unicode и используют индексы кандидатов строк-полос, чтобы избежать сканирования несвязанных правил
Исправлено
- Классические условные правила теперь корректно загружают типы выражений и последовательно вычисляют обращения между границами, предикаты текста без учёта регистра, пустые ячейки и предикаты ошибок
Версия 2.208.0
Изменено
- Движок упакованного хранения ячеек теперь записывает собственные помеченные строковые, логические, значения ошибок и пустые полезные нагрузки, перебирает ячейки в порядке строк и кодирует серии последовательных ячеек одного типа с подсчётом повторов для меньшего использования памяти и более быстрого последовательного вывода
- Общие строки классической книги теперь хранят байты символов в одном распределении и создают декодированные строковые значения лениво, что снижает накладные расходы на распределение для больших таблиц уникальных строк
Добавлено
- Сводные таблицы теперь могут вычислять полную матрицу результатов из записей кэша с группировкой ключей строк и столбцов и всеми 11 поддерживаемыми агрегатными функциями
- Диаграммы классической книги теперь предоставляют типизированную информацию о сериях, осях, легенде и группе диаграмм для рабочих процессов преобразования и проверки
Версия 2.207.0
Добавлено
TXLSPivotCache.RefreshFromSourceстроит кэш сводной таблицы из диапазона исходного листа: он читает строку заголовка для именования полей, извлекает уникальные значения каждой строки данных ’ в домен общих элементов поля, фиксирует тип поля по первому непустому значению и записывает индекс общего элемента для каждой пары (запись, поле) — поэтому сводную таблицу можно создать программно из диапазона данных, вместо того чтобы полагаться наrefreshOnLoadExcel. Читатель значений на основе обратного вызова сохраняет независимость модуля сводных таблиц от прямого листа
Версия 2.206.0
Добавлено
- Новый
TlxCellMMU(модульlxCellMMU) реализует упакованный движок хранения ячеек в порядке строк с кодированием серий равных типов и пустых серий ячеек с подсчётом повторов и байтовым кодом типа, который также служит селектором ширины данных — поэтому столбец небольших целых чисел занимает один байт на ячейку вместо восьми. Движок кодирует числа в наименьшей ширине, сохраняющей значение (int8 / int16 / int32 / масштабированные целые с 2 / 4 десятичными знаками / IEEE double), компактно хранит строковый индекс, логические значения, значения ошибок и пустые ячейки и предоставляет APIGetValue/SetNumber/SetStringплюс прямой итератор. Это движок следующего поколения за флагом функции для существующего APITXLSXCells, нацеленный на сокращение рабочего набора в 10–25× на плотных листах
Версия 2.205.0
Добавлено
TXLSCustomChart.GetChartInfoтеперь декодирует смысловую сводку из необработанного потока записей BIFF-диаграммы — семейство типов диаграммы (линейчатая, линейная, круговая, площадная, точечная, лепестковая, кольцевая, поверхностная, пузырьковая), количество серий и наличие легенды — поэтому тип BIFF-диаграммы можно запросить программно, а преобразование BIGH в XLSX-диаграмму может выбрать правильное целевое семейство. Хранение байтов напрямую, гарантирующее точность обратного преобразования, осталось без изменений
Версия 2.204.0
Изменено
- Классическая таблица общих строк
.xlsтеперь записывает строки только в ASCII в сжатой кодировке Latin-1 ([MS-XLS] §2.5.294fHighByte=0, один байт на символ) вместо постоянного использования UTF-16, примерно вдвое уменьшая размер SST — и, следовательно, файла.xls— для книг с преобладанием ASCII
Версия 2.203.0
Добавлено
- Новый
TlxCompoundFileчитает и записывает формат контейнера Compound File Binary (OLE2) напрямую на чистом Pascal, без зависимости отole32.dll/ COMIStorage— открывая путь к обработке.xlsв памяти и на разных платформах. Читатель охватывает макет v3, с которым HotXLS встречается на практике (заголовок + in-header DIFAT + обход цепочки FAT + MiniFAT и мини-поток для потоков меньше 4096 байт + дерево каталогов); писатель формирует минимальный, но корректный контейнер v3, достаточный для вывода HotXLS
Версия 2.202.0
Добавлено
- Состояние сортировки автофильтра теперь имеет типизированную модель (
TXLSXSortStateс дочерними элементамиTXLSXSortCondition), охватывающую сортировку по значению / цвету ячейки / цвету шрифта / значку, метод сортировки (нет / штрих / пиньинь), учёт регистра, сортировку по столбцам и пользовательские списки для каждого условия — поэтому приложения могут создавать состояния сортировки программно вместо редактирования необработанного XML, тогда как устаревший непрозрачный проходSortStateXmlпо-прежнему имеет приоритет для файлов, созданных не HotXLS - Динамические фильтры теперь читаются и записываются как типизированный
TXLSXDynamicFilterType(выше/ниже среднего и стандартное отклонение, сегодня/вчера/завтра, на этой/последней/следующей неделе, месяц, квартал и год, с начала года, Q1–Q4, M1–M12) с необязательными границамиval/maxVal— открытие книги, использующей динамический фильтр, больше не приводит к его потере при сохранении
Версия 2.201.0
Добавлено
- Поверхностные и трёхмерные поверхностные диаграммы (
xlsxChartSurface/xlsxChartSurface3D) теперь являются полноправными типами диаграмм — они записываются, читаются и проходят обратное преобразование так же, как другие семейства диаграмм - API создания автофигур охватывает практическое подмножество списка предустановленной геометрии OOXML — треугольники, ромбы, параллелограммы, шестиугольники, восьмиугольники, стрелки, шевроны, выноски, узлы блок-схем, звёзды, сердца, солнце, луна, скобки и фигурные скобки — каждый из которых сопоставляется со своим корректным токеном
prstи идентификатором формы[MS-ODRAW], поэтому созданные фигуры корректно отображаются в Excel (полный список из 187 предустановок уже сохранялся при обратном преобразовании через необработанный проход)
Версия 2.200.0
Исправлено
- Открытие книги, автофильтр которой использует цветовой фильтр или фильтр по значку, больше не приводит к потере этого фильтра при сохранении —
colorFilterиiconFilterтеперь считываются в типизированные столбцы (TXLSXAutoFilterColumn.SetColorFilter/SetIconFilter) и повторно выводятся без изменений вместо того, чтобы теряться как нераспознанные дочерние элементы filter-column
Версия 2.199.0
Добавлено
TCondFormatRule.Evaluateотвечает на вопрос, срабатывает ли правило условного форматирования для заданной ячейки, охватывая сравнения значений ячеек, выражения формул, правила «текст содержит/начинается с/заканчивается на», пустые ячейки и правила ошибок — основа для запроса того, какие ячейки правило в данный момент выделяет, и для отрисовки результатов CF вне Excel
Изменено
FACTи внутренние вспомогательные функции факториала теперь используют предварительно вычисленную таблицу 0!..170! вместо повторного вычисления произведения O(n) при каждом вызове, что ускоряетFACT, мультиномиальные коэффициенты и пути распределения Пуассона/Биномиального/хи-квадрат
Версия 2.198.0
Изменено
- Сохранение листа теперь группирует ячейки в строки за один проход «подсчёт-затем-заполнение» вместо увеличения индекса каждой строки с перераспределением на ячейку, устраняя скрытое копирование O(ячейки × ячейки-в-строке) на больших листах
- Граф зависимостей формул теперь индексирует свои диапазоны ссылок по (лист, строка), поэтому засев загрязнённой ячейки бинарным поиском находит полосу-кандидат вместо сканирования каждой формулы при каждом изменении ячейки — чем больше книга и чем больше в ней листов, тем больше ускорение при пересчёте
- Обход ячеек по строкам с сортировкой столбцов теперь предоставляется как
TXLSXWorksheet.BuildRowMajorCellOrder, поэтому сохранение, буфер обмена, автофильтр и другие потребители строкового порядка используют один обход вместо повторного его вывода
Версия 2.197.0
Исправлено
- Лепестковые, биржевые и круговые/линейчатые диаграммы типа «круг-из-круга» больше не теряются при открытии и повторном сохранении книги
.xlsx, содержащей их — читатель диаграмм теперь распознаёт контейнерные элементыc:radarChart,c:stockChartиc:ofPieChart, которые он уже записывает, восстанавливая симметричное покрытие чтения/записи SUBTOTALс кодами функций 101–111 теперь исключает значения в скрытых строках, аAGGREGATEтеперь учитывает коды вариантов игнорирования скрытых строк (2, 3, 6, 7), соответствуя Excel вместо одинакового обращения с вариантами включения и игнорирования скрытых строк- Вызов встроенной функции с фиксированной арностью с большим числом аргументов, чем объявлено (например,
=SIN(1,2)), теперь централизованно вызывает#VALUE!вместо принятия диспетчером
Версия 2.196.0
Исправлено
- Вставка и удаление строк и столбцов теперь разделяют условные форматы значений и выражений ячеек, а также проверки данных, когда отредактированные целевые области требуют разных относительных привязок формул, сохраняя настройки правил, назначая уникальные приоритеты условного форматирования и оставляя агрегированные домены условного форматирования без изменений
Версия 2.195.2
Изменено
- Экспорт в PDF теперь подмножествует встроенный шрифт TrueType через Windows
fontsub.dllAPICreateFontPackage, сохраняя только те глифы, которые документ фактически отрисовал, вместо встраивания всего.ttf— обычно сжимая PDF в 8–20× для листов с интенсивным использованием Unicode; при недоступности подмножества выполняется полное встраивание
Версия 2.195.1
Исправлено
- Вставка или удаление строк и столбцов в классическом движке
.xlsтеперь переписывает все затронутые ссылки в формулах (формулы ячеек и определённые имена) в соответствии с семантикой Excel — ссылки ниже точки вставки смещаются, ссылки полностью внутри удаления превращаются в#REF!, а частично пересекающиеся области сужаются — вместо оставления устаревших координат
Версия 2.195.0
Изменено
- Удаление столбцов таблицы теперь преобразует каждый затронутый токен структурированной ссылки в
#REF!в формулах листа, формулах таблицы, определённых именах и сериях диаграмм, сохраняя несвязанные ссылки и строковые литералы
Исправлено
- Удаление всей таблицы больше не оставляет полные структурированные ссылки, указывающие на несуществующую таблицу
- Клонированные проверки данных теперь сохраняют свой режим ввода IME
Версия 2.194.0
Изменено
- Редактирование строк и столбцов теперь сохраняет идентификаторы столбцов таблицы Excel, имена, вычисляемые формулы, формулы итогов, столбцы фильтра, диапазоны фильтра и условия сортировки синхронизированными с отредактированной таблицей
Исправлено
- Формулы условного форматирования и проверки данных теперь перебазируют относительные и смешанные ссылки, когда удаление убирает их первую целевую область
- Состояния сортировки листа и таблицы теперь записывают корректные атрибуты и отбрасывают условия, диапазоны которых были удалены
Версия 2.193.0
Изменено
- Редактирование строк и столбцов теперь обновляет сложные и межобластные формулы определённых имён, диапазоны данных пузырьковых диаграмм и пороги визуальных условных форматов на основе формул
- Пузырьковые и точечные диаграммы теперь восстанавливают диапазоны серий оси X, оси Y и размера пузырьков при повторном открытии
Исправлено
- Многообластные цели условного форматирования и проверки данных теперь смещают каждую выжившую область независимо, вместо того чтобы оставлять полный список целей без изменений
- Привязки текстовых полей и объектов WordArt теперь перемещаются или изменяют размер при вставке и удалении строк и столбцов
Версия 2.192.0
Добавлено
- Потоковые прямые чтения и обход строкового курсора могут включать структурированные форматированные строки с полным форматированием серий, фонетическими сериями и фонетическими свойствами, сохраняя при этом ограниченное хранение общих строк
TXLSDirectWriter.WriteRichStringзаписывает форматированный и фонетический текст как встроенные или дедуплицированные общие строки
Изменено
- Дедупликация форматированных общих строк теперь различает форматирование серий и фонетические метаданные, сохраняя при этом обычную интернировку строк на существующем быстром пути
Исправлено
- Фонетический текст во встроенных строках больше не включается в отображаемое значение ячейки
Версия 2.191.0
Добавлено
TXLSXRange.SetDynamicArrayFormulaтеперь создаёт собственные формулы динамических массивов с полной цепочкой метаданных Excel XLDAPR
Изменено
- Корни динамических массивов теперь используют одну дедуплицированную запись метаданных книги, а межкнижные копии листов или диапазонов переразмещают эту запись в целевую книгу
- Поддерживаемые метаданные динамических массивов остаются доступными, когда сохранение неподдерживаемых частей пакета отключено, тогда как несвязанные метаданные значений по-прежнему удаляются
Исправлено
- Ячейки переливания динамического массива больше не моделируются как устаревшие последователи CSE, а замена или очистка корня больше не оставляет устаревших индексов метаданных
- Удаление последнего корня динамического массива теперь удаляет неиспользуемую часть метаданных, связь книги и запись типа содержимого
Версия 2.190.0
Изменено
- Потоковые прямые чтения и обход строкового курсора теперь разворачивают последователей общих формул в полные относительные по ячейкам формулы, сохраняя поведение проекции и ограниченной памяти
Исправлено
- Книги с динамическими массивами теперь сохраняют индексы метаданных ячеек и значений, атрибуты пересчёта формул, связи метаданных пакета и неизменённые префиксы будущих функций во время циклов открытия и сохранения
- Отключение сохранения неподдерживаемых частей больше не оставляет висячих индексов метаданных листа после удаления части метаданных
Версия 2.189.0
Добавлено
- Открытие книг XLSX теперь разворачивает последователей общих формул в полные формулы по отдельным ячейкам с корректными относительными, абсолютными, смешанными, диапазонными и квалифицированными по листу ссылками
Исправлено
- Самозакрывающиеся последователи общих формул больше не захватывают более поздние значения или XML формул, а их кэшированные результаты проходят циклы открытия и сохранения
- Формулы массивов CSE теперь сохраняют свои привязки и отношения последователей через структурные изменения строк или столбцов, копирование полных диапазонов, дублирование листов и межлистовое копирование между книгами
- Назначение обычной формулы или очистка ячейки теперь удаляет устаревшее членство в массиве CSE, чтобы вычисление нельзя было перенаправить на старую привязку массива
- Копирование только части массива CSE больше не создаёт висячих ссылок последователей в месте назначения
- Копирование диапазонов теперь создаёт снимок перекрывающихся источников и смещает ссылки в относительных формулах, предотвращая перезапись исходных ячеек или привязок массивов до их копирования
- Изменения строк или столбцов, пересекающие только часть массива CSE, отклоняются вместо молчаливого изменения размера или отсоединения массива
Версия 2.188.0
Добавлено
TXLSDirectReader.SharedStringMemoryLimitограничивает память декодированных общих строк и автоматически переносит большие таблицы в индексированное временное хранилище с удалением при закрытии и кэшем значений фиксированного размераTXLSRowCursor.SharedStringMemoryLimitпредоставляет тот же контроль ограниченного хранения общих строк для обхода строк только вперёд
Изменено
- Прямой разбор общих строк теперь сохраняет значения только из пробелов, CDATA, сущности XML, символы вне BMP, пустые элементы и порядок серий форматированного текста, исключая при этом текст фонетических подсказок из отображаемого значения
Исправлено
- Открытие книг XLSX теперь сохраняет каждый элемент общих строк в порядке документа, предотвращая схлопывание повторяющегося текста или по-разному отформатированных форматированных строк в более поздние индексы ячеек
- Сохранение книг XLSX теперь дедуплицирует форматированные строки по границам серий и свойствам форматирования, а не только по видимому тексту, сохраняя различное форматирование для ячеек с одинаковым отображаемым значением
Версия 2.187.0
Добавлено
TXLSDirectReader.FirstRowиLastRowограничивают потоковое чтение диапазоном строк с нумерацией от 1 и останавливают разбор листа после запрошенного диапазонаTXLSDirectReader.IncludeColumnиClearColumnProjectionобеспечивают проекцию столбцов за постоянное время, пропуская невыбранные ячейки до декодирования значений и вызова обратного вызова
Версия 2.186.0
Добавлено
TXLSDirectWriter.UseSharedStringsможет дедуплицировать повторяющийся текст в часть OOXML общих строк с точным подсчётом общего и уникального количества, уменьшая размер пакета для данных с большим количеством повторенийTSimpleDomReaderпредоставляет компактное дерево XML за один проход для запросов со случайным доступом к метаданным книги и частям пакета, с учётом регистра поиском по QName и локальному имени
Изменено
- Прямое чтение XLSX теперь использует точную хеш-ассистированную диспетчеризацию элементов, сбор атрибутов за один проход и поиск столбца текущей строки за постоянное время, сохраняя потоковое поведение памяти
- Генерация XML общих строк теперь использует буфер с линейным ростом, чтобы избежать повторного копирования всей строки на больших таблицах уникальных строк
Исправлено
- Экспорт формул CSV больше не добавляет второй знак равенства, когда текст формулы уже содержит его
- Экспорт XLSX в PDF больше не усекает текст ячейки, используя оценку количества символов перед разметкой
- Хеши имён читателя XML теперь отслеживают инструкции по обработке, атрибуты и возвращения к своим элементам-владельцам, не раскрывая устаревшее состояние элемента
Версия 2.185.1
Исправлено
- Вставка или удаление строк и столбцов теперь корректирует локальные и межлистовые ссылки формул ровно один раз, сохраняя имена функций и текстовые литералы
Версия 2.185.0
Добавлено
TXLSPDFExportтеперь предоставляет выбор выходных данных с односторонней нумерациейFirstPageиLastPage, полное логическоеPageCountи шесть перегрузокCalculatePageCountдля классических и XLSX диапазонов, листов и книг без построения объектов страниц PDFTXLSXWorkbook.SaveWorkbookAsHTMLпубликует видимые листы в одном документе HTML с навигацией, со стабильными привязками для каждого листа, экранированными заголовками и именами листов, а также возможностью включить скрытые или очень скрытые листыTDataToXLS.BeforeRecordможет пропускать записи перед выводом строк, аBeforeValueможет преобразовывать или подавлять значения полей с контекстом набора данных, уровня детализации, исходного поля и столбца экспортаTXLSWorkbookViewerпредоставляет комментарии и гиперссылки выбранных ячеек, вызывает событие гиперссылки, управляемое приложением, отрисовывает индикаторы комментариев и шрифты XLSX, заливки и выравнивание, а также нормализует выделение и отрисовку по объединённым диапазонам
Изменено
- Пример ConversionWorkbench теперь может создавать выходные данные PDF и публикует все видимые листы XLSX для целей HTML, тогда как пример WorkbookViewer демонстрирует навигацию по объединённым ячейкам, комментарии и активацию гиперссылок
Версия 2.184.0
Добавлено
- Классические диапазоны XLS и XLSX могут копировать текст в формате Unicode и стилизованный HTML в буфер обмена Windows через
CopyToClipboard, сохраняя формулы, объединённые ячейки, ссылки, форматирование отображения и безопасно закодированные встроенные табуляции, разрывы строк и кавычки TXLSXWorkbookтеперь сохраняет пользовательские части пакета, доступные из неизвестных связей корня пакета, книги, листа или документа, включая обработку конфликтов идентификаторов связей, типов содержимого, дочерних связей, выбора сжатия и точных байтов полезной нагрузки;PreserveUnsupportedParts,UnsupportedPartCount,UnsupportedPartBytesиClearUnsupportedPartsпредоставляют контроль и диагностику- Сохранение классического XLS предоставляет обратные вызовы начала, работы и завершения с отменой через
OnProgressEx, тогда какIXLSWorkbookProgressпредоставляет структурированную диагностику со стабильными кодами, серьёзностью, операцией, контекстом листа, собственными возвращаемыми значениями и сведениями об исключениях TXLSXWorkbookтеперь предоставляет те же структурированные поверхностиDiagnostics,LastDiagnosticиOnDiagnosticдля сохранения, открытия, пересчёта, отмены и отчётности об исключениях- Разобранные модули VBA теперь поддерживают редактирование
SourceCodeи запись обновлённого сжатого потока модулей обратно через сохранение классического XLS, отдельное хранилище VBA и OOXML с поддержкой макросов, сохраняя префиксы потоков и нетронутое содержимое проекта - Классические листы и коллекции фигур теперь предоставляют типизированные элементы управления формы
TXLSCheckBox,TXLSComboBoxиTXLSListBoxс помощниками создания, метками, проверкой типа элемента управления, привязками ячеек, удалением и обнаружением при открытии/сохранении TXLSXRange.ApplyFormatPatchможет выборочно копировать компоненты шрифта, заливки, границы, числового формата, выравнивания и защиты с мозаикой исходного шаблона, сохраняя значения назначения и невыбранное форматированиеTDataToXLSможет рекурсивно экспортировать связанные наборы данных «мастер-деталь» черезReadDetailTablesиIndentDetailTables, сохраняя активные связи данных, добавляя каждую таблицу детализации под записью мастера и наследуя параметры полей, заголовков и форматирования на каждом уровнеTXLSXWorksheet.AddWordArtсоздаёт привязанный к ячейке текст DrawingML с предустановленным искажением, а также настраиваемыми цветами текста и контура, а путь сохранения необработанных привязок документа сохраняет полную фигуру WordArt в последующих циклах открытия/сохраненияTXLSWorkbookViewerдобавляет средство просмотра листов VCL для классических и современных объектов книг с загрузкой файлов XLS, XLSX, XLSM, шаблонов и ODS, форматированным текстом ячеек, классическими стилями, размерами строк и столбцов, заголовками, отрисовкой сетки и выделения, полосами прокрутки, выделением мышью, навигацией с клавиатуры, позиционированием ячеек, переключением листов и событиями выделения или листа- Новые примеры Delphi
FeatureShowcaseиWorkbookViewerдемонстрируют печать в стилизованном PDF, заголовки печати, ручные разрывы, классические элементы управления форм, выборочные исправления формата, WordArt, диагностику, создание средства просмотра во время выполнения, загрузку файлов, навигацию по ячейкам, переключение листов и события средства просмотра с соответствующими руководствами на английском и темами справочника для разработчиков
Изменено
- Экспорт PDF для классической книги XLS и современной книги XLSX, листа и диапазона теперь записывает каждый видимый лист в один документ, пропускает скрытые листы и листы диаграмм, отрисовывает сплошные заливки, цвета шрифта, размеры шрифта, полужирное и курсивное начертание, горизонтальное и вертикальное выравнивание, явные границы ячеек и необязательные линии сетки листа, следует области печати, размеру бумаги, ориентации, полям, масштабу, подгонке по ширине, ширине столбцов, фактическим высотам строк, ручным разрывам страниц по строкам и столбцам, повторяющимся строкам и столбцам заголовков и трёхчастным колонтитулам с полями страницы, общего количества страниц, имени листа, даты и времени, разбивает на страницы широкие и высокие диапазоны по обеим осям, формирует независимый от локали синтаксис чисел PDF и встраивает подходящий шрифт TrueType плюс карту ToUnicode для текста вне WinAnsi
- Расширенные обратные вызовы прогресса XLSX теперь получают надёжные состояния начала, работы и завершения для сохранения, открытия и пересчёта, тогда как устаревший обратный вызов остаётся только для работы, и каждая операция сбрасывает предыдущее состояние отмены
- Сериализация классического XLS теперь распространяет сбои листа, диаграммы, расширения стиля, VBA, потока управления, хранилища и фиксации вывода вместо сообщения об успехе, а сохранение файлов подготавливает полный составной файл до атомарной замены места назначения
- Сохранение файлов XLSX и ODS теперь создаёт полный смежный временный пакет и атомарно заменяет место назначения только после успешного завершения, оставляя существующие файлы без изменений после отмены или сбоя
Версия 2.183.0
Добавлено
TXLSDirectWriterтеперь поддерживает повторно используемые на уровне пакета дескрипторы стилей ячеек и клонирование стилей без буферизации строк листа; один и тот же индекс стиля можно применить к любому количеству ячеек или повторно использовать на разных листах- Прямые стили ячеек предоставляют 30 возможностей форматирования, охватывающих имя шрифта, размер, цвет BGR, полужирный, курсив, зачёркивание, контур, тень, пять режимов подчёркивания, 19 шаблонов заливки с цветами переднего и заднего плана, пять независимо окрашенных краёв границ с 14 стилями линий и диагональными направлениями, встроенные или пользовательские числовые форматы, горизонтальное и вертикальное выравнивание, перенос, сжатие по размеру, отступ, поворот текста, префиксы кавычек и защиту заблокировано/скрыто
- Стилизованные перегрузки доступны для строк, чисел, логических значений, дат, формул, ошибок и каждого типа результата кэшированной формулы, что позволяет экспортёрам с большим объёмом выбирать предварительно подготовленный стиль по целочисленному индексу во время последовательных записей
Изменено
- Прямой писатель дедуплицирует равные компоненты шрифта, заливки, границы и числового формата при построении
styles.xml, сохраняя стабильные индексы стилей ячеек, уже записанные в потоки листов - Сгенерированные таблицы стилей прямого писателя теперь включают стандартные заливки по умолчанию
noneиgray125перед пользовательскими заливками для более строгой совместимости с OOXML
Версия 2.182.0
Добавлено
TXLSDirectWriterтеперь записывает условное форматирование, сохраняя профиль памяти, не зависящий от количества строк, с восемью операторами значений ячеек, правилами выражений, правилами текста «содержит/не содержит/начинается с/заканчивается на», правилами верхних и нижних значений и процентов, правилами выше и ниже среднего, повторяющимися и уникальными значениями, пустыми и непустыми ячейками, ячейками с ошибками и без ошибок, полосами данных, двух- и трёхцветными шкалами и всеми 17 базовыми семействами наборов значков- Прямые правила условного форматирования поддерживают явные приоритеты, оценку stop-if-true, параметры стандартного отклонения и равенства среднего, замену порогов значков, отображение только значков и в обратном порядке, видимость значений полос данных, цвета BGR и дифференциальные стили заливки, цвета шрифта, полужирный и курсив
Изменено
- Прямой писатель дедуплицирует эквивалентные дифференциальные стили между листами и хранит только правила и стили условного форматирования, поэтому использование памяти масштабируется в зависимости от количества правил, а не от количества строк листа
- Автоматические виды порогов минимума и максимума полос данных нормализуются к стандартным токенам
minиmaxв базовом элементе OOXML для широкой совместимости с электронными таблицами
Версия 2.181.0
Добавлено
TXLSDirectWriterтеперь записывает защиту листа и книги без буферизации данных листа, включая 15 детализированных разрешений листа, устаревшие верификаторы паролей, современные метаданные хеша, редактируемые защищённые диапазоны с необязательными паролями или дескрипторами безопасности, блокировки структуры и окна книги, прямое назначение верификатора и очистку защиты
Исправлено
- Неподдерживаемые привязки документа теперь сохраняют каждый закрывающий элемент при реконструкции для вывода обратного преобразования, поэтому документы, содержащие только фигуры, остаются корректными после открытия и сохранения
- Разрешения защиты листа XLSX теперь соответствуют определению флага блокировки OOXML: разрешённым действиям присваивается
0, запрещённым —1, а пропущенные атрибуты открываются со значениями по умолчанию схемы - Устаревшие пароли листа XLSX, защищённого диапазона и книги теперь используют Excel-совместимый алгоритм верификатора с 16-битной длиной с преобразованием ANSI и 15-байтовым лимитом
Версия 2.180.0
Добавлено
- Модель листа XLSX теперь проходит обратное преобразование элементов What-If Scenario Manager (
<scenarios>) и Data Consolidation (<dataConsolidate>). Новые свойства необработанного XMLScenariosXmlиConsolidateXmlвTXLSXWorksheetпереносят внутреннее содержимое дословно — писатель формирует элементы-обёртки, а читатель разбирает дочерние элементы сценариев и консолидации данных обратно. Файлы финансового моделирования, определяющие сценарии или параметры консолидации, больше не теряют их при обратном преобразовании
Версия 2.179.0
Добавлено
- Новая вспомогательная функция
XlsxBuildNumFmtстроит коды числовых форматов OOXML из смысловых свойств —Decimals,Thousands(разделитель),NegativeRed(красные отрицательные),CurrencySymbolиPercent. Вызывающим больше не нужно вручную писать строки формата вроде"$#,##0.00;[Red]-$#,##0.00"— построитель формирует их из простых параметров. Предназначена для использования сCell.NumberFormatилиWorkbook.NumberFormats.Add
Версия 2.178.0
Добавлено
- Модель листа XLSX теперь проходит обратное преобразование кодового имени VBA (
<sheetPr codeName="..."/>), необходимого для взаимодействия с VBA, где проект VBA ссылается на листы по кодовому имени. Новое свойствоCodeNameвTXLSXWorksheet - Комментарии теперь поддерживают переключатель видимости
AlwaysShowвTXLSXComment— если True, всплывающая подсказка комментария всегда отображается (переключатель Excel «Показать/скрыть примечание» для каждого комментария), а не только при наведении - Проверка данных теперь проходит обратное преобразование атрибута режима IME (
imeMode) вTXLSXDataValidation. Перечисление из 11 значений управляет поведением метода ввода CJK при входе в ячейку (noControl / off / on / hiragana / fullKatakana / и т.д.). Необходимо для файлов в японской/корейской/китайской локали - Модель листа получает свойство
PaneStateдля атрибута состояния панели в<pane>помимо существующей обработки замороженного режима — поддерживает состоянияfrozenSplit(замороженное затем прокручиваемое) иsplit
Версия 2.177.0
Добавлено
- Три ранее зарегистрированные, но не реализованные функции листа теперь имеют полную диспетчеризацию:
DOLLAR(текст в формате валюты),FIXED(текст с фиксированным количеством десятичных знаков с возможным подавлением запятой) иAREAS(количество областей в ссылке). Ранее они были зарегистрированы вInitFuncHash, но не имели случая в движке вычисления — вычисление=DOLLAR(...)молча возвращало неверные результаты - Модель листа XLSX теперь проходит обратное преобразование масштабов отображения для каждого типа представления (
zoomScaleNormal/zoomScalePageLayoutView/zoomScaleSheetLayoutView), цвет линий сетки (sheetView color) и флаги отображения представления листа (showFormulas/showZeros). Новые свойства вTXLSXWorksheet:ZoomNormal,ZoomPageLayout,ZoomSheetLayout,GridColor,ShowFormulas,ShowZeros - Направление итогов структуры теперь проходит обратное преобразование. Новые свойства
SummaryBelow,SummaryRightиShowOutlineSymbolsвTXLSXWorksheetуправляют тем, появляются ли итоговые строки/столбцы ниже/справа от деталей и видны ли символы структуры. Писатель формирует<outlinePr>внутри<sheetPr>; читатель разбирает его обратно - calcPr книги теперь несёт атрибуты
forceFullCalcиcalcCompletedнаряду с существующей тройкойcalcId/fullCalcOnLoad/calcMode/iterate
Версия 2.176.0
Добавлено
- Движок формул XLSX теперь разрешает структурированные ссылки таблиц перед компиляцией. Новый метод
ResolveStructuredRefsвTXLSXWorkbookсканирует текст формулы на предмет шаблоновTableName[ColumnSpec]и заменяет их конкретными ссылками на диапазоны A1 с использованием коллекцииTXLSXTableкниги. Поддерживаемые спецификации включают диапазон данных столбца (Sales[Qty]), столбец текущей строки (Sales[@Total]), полные данные (Sales[#Data]/Sales[#All]), заголовки (Sales[#Headers]) и строку итогов (Sales[#Totals]). Разрешение выполняется автоматически внутриGetCompiledFormula— существующие формулы не затрагиваются, поскольку нетабличные идентификаторы остаются без изменений. Ранее структурированные ссылки приводили к сбою компиляции формулы
Версия 2.175.0
Добавлено
- Движок формул теперь поддерживает компиляцию формул в стиле ссылок R1C1. Новый метод
GetCompiledFormulaR1C1вTXLSCalculator(иGetCompiledR1C1вTXLSFormula) принимает формулу, записанную в нотации R1C1 (R2C3для абсолютной,R[-1]C[2]для относительной,RCдля текущей ячейки), и компилирует её, предварительно преобразуя в нотацию A1 с использованием строки/столбца ячейки формулы. Отдельная функцияR1C1ToA1выполняет преобразование — она определяет маркерыR/C, являющиеся самостоятельными (не частью имени функции, такого как ROUND), разбирает необязательные смещения в скобках и формирует эквивалентную ссылку A1. Строковые литералы и идентификаторы пропускаются. Ранее можно было компилировать только формулы в стиле A1
Версия 2.174.0
Добавлено
- Вывод AutoFilter в
TXLSDirectWriterтеперь поддерживает столбцы фильтра листа и таблицы, фильтры значений, фильтры пустых значений, групповые фильтры дат, пользовательские фильтры сравнения, динамические фильтры, фильтры верхних/нижних значений, флаги кнопок фильтра, состояния сортировки, условия сортировки, экранирование XML и подавление дубликатов диапазонов фильтра листа/таблицы при потоковой записи файлов XLSX
Версия 2.173.0
Добавлено
- Вывод таблиц в
TXLSDirectWriterтеперь поддерживает комментарии таблиц, подсчёт строк итогов, метки строк итогов столбцов, функции строк итогов столбцов, формулы вычисляемых столбцов, формулы строк итогов и экранирование XML для метаданных столбцов таблицы при потоковой записи файлов XLSX
Версия 2.172.0
Добавлено
TXLSDirectWriterтеперь записывает части таблиц Excel при потоковой записи файлов XLSX, включая связи таблиц листа, типы содержимого частей таблиц, диапазоны таблиц, имена столбцов, флаги строки заголовка и строки итогов, а также флаги отображения встроенных стилей таблиц без построения полной объектной модели книги
Версия 2.171.0
Добавлено
TXLSDirectWriterтеперь записывает проверки данных листа при потоковой записи файлов XLSX, включая список, целые числа, десятичные числа, дату, время, длину текста, пользовательские формулы, произвольныйsqref, приглашения, сообщения об ошибках, разрешение пустых значений, раскрывающиеся списки и флаги сообщений ввода/ошибки без построения полной объектной модели книги
Версия 2.170.0
Добавлено
TXLSDirectWriterтеперь записывает определённые имена книги и локальные имена листов при потоковой записи файлов XLSX, включая скрытые имена, комментарии, сгенерированные абсолютные диапазоны, области печати, строки заголовков печати, столбцы заголовков печати, объединённые заголовки печати, ссылки с заключёнными в кавычки именами листов, экранирование XML и семантику замены для повторных установщиков print-name без построения полной объектной модели книги
Версия 2.169.0
Добавлено
TXLSDirectWriterтеперь записывает гиперссылки листа при потоковой записи файлов XLSX, включая связи с внешними URL, mailto и файлами, внутренние расположения листов, отображаемый текст, всплывающие подсказки, одноячеечные или многоячеечные диапазоны гиперссылок, нормализацию «голых» URLwww., экранирование XML и процентно-кодированные целевые объекты связей без построения полной объектной модели книги
Версия 2.168.0
Добавлено
TXLSDirectWriterтеперь записывает метаданные печати и представления листа при потоковой записи файлов XLSX, включая переключатели отображения линий сетки и заголовков строк/столбцов, поля страницы, текст нечётного верхнего/нижнего колонтитула, линии сетки и заголовки при печати, центрирование страницы, размер бумаги и альбомную ориентацию, размеры подгонки к странице и ручные разрывы страниц по строкам или столбцам без построения полной объектной модели книги
Версия 2.167.0
Добавлено
TXLSDirectWriterтеперь записывает метаданные макета листа при потоковой записи файлов XLSX, включая размеры столбцов и строк по умолчанию, пользовательские ширины столбцов, скрытые строки и столбцы, объединённые диапазоны, диапазоны автофильтра, закреплённые панели, цвета ярлыков листов и представления листов справа налево без построения полной объектной модели книги
Версия 2.166.0
Добавлено
- Потоковые рабочие процессы XLSX теперь включают перечисление имён листов без сканирования листов, выбор листа курсора строк по имени, потоковую передачу необработанных числовых дат, повторное использование прямого писателя, запись ячеек ошибок и писатели кэшированных результатов формул для чисел, строк, логических значений, дат и значений ошибок
Версия 2.165.0
Исправлено
TXLSDirectReader.ReadStreamтеперь восстанавливает позицию потока вызывающего после прямого сканирования, соответствуя задокументированному контракту потока и позволяя приложениям повторно использовать тот же поток после прохода прямого чтения
Версия 2.164.0
Добавлено
- Экспорт наборов данных через
TDataToXLSтеперь поддерживает списки строкIncludeFieldsиExcludeFields. Приложения могут добавлять экспортируемые поля в белый список, опускать конфиденциальные столбцы и сохранять заголовки, строки данных, ширины столбцов и обратные вызовы экспорта синхронизированными с выбранным набором полей
Версия 2.163.0
Добавлено
- Экспорт CSV получает настраиваемое заключение текста в кавычки в движках XLS и XLSX.
TXLSWorkbookтеперь предоставляетCSVEmitFormulasиCSVQuoteAllStrings, аTXLSXWorkbookдобавляетCSVQuoteAllStrings. При включении экспорт формул записывает текст формулы, а строковые поля заключаются в кавычки, тогда как числовые поля, даты, логические значения, Null и Empty сохраняют обычные правила заключения в кавычки
Версия 2.162.0
Добавлено
- Движок XLSX получает прерываемую систему событий прогресса. Новый обратный вызов
OnProgressExвTXLSXWorkbookсрабатывает наряду с существующимOnProgressс тремя улучшениями: (1) параметрTXLSXProgressState(ppsBegin/ppsWork/ppsEnd), который обрамляет каждую фазу, чтобы интерфейсы знали, когда операция начинается и завершается; (2) параметрAbort: Boolean(var), позволяющий обратному вызову отменить текущую операцию во время потока — циклы чтения/записи/вычисления проверяютWorkbook.Abortedи корректно прерываются; (3) новая фазаxlsxProgressExportingдля операций экспорта (HTML/RTF/CSV/ODS). Вспомогательный методFireProgressцентрализует диспетчеризацию двойного обратного вызова. ФлагFAbortedсбрасывается в начале каждой операции верхнего уровня (Open / SaveAs / Recalculate)
Версия 2.161.0
Добавлено
- Модель диаграмм XLSX теперь поддерживает четыре новых элемента диаграммы для усиления совместимости с Excel. Таблица данных диаграммы (
c:dTable):TXLSXChartполучает переключателиShowDataTable+ShowDataTableKeys— при включении писатель формирует элемент таблицы данных внутри области построения, чтобы Excel отображал исходные данные как сетку под осью диаграммы. Полосы вверх/вниз + линии hid-low (элементы биржевых/OHLC-диаграмм):TXLSXChartполучаетHasUpDownBars+UpDownGapWidthиHasHiLowLines— писатель формируетc:upDownBarsиc:hiLowLinesвнутри элемента диаграммы (линейные/биржевые диаграммы). Элементы управления трёхмерным видом:TXLSXChartполучаетRotation3DX/Rotation3DY/Elevation3D/Perspective3D/RightAngleAxes3D— писатель формируетc:view3Dна уровне диаграммы, когда любое трёхмерное свойство отличается от значения по умолчанию. Ранее ни один из этих элементов не формировался, поэтому диаграммы, созданные с таблицами данных, элементами биржевых диаграмм или трёхмерными видами, теряли их при обратном преобразовании
Версия 2.160.0
Добавлено
- Ссылки в формулах теперь корректируются автоматически при вставке или удалении строк или столбцов в движке XLSX. Метод
ShiftSheetGeometry— вызываемыйInsertRows/DeleteRows/InsertCols/DeleteCols— теперь обходит каждую выжившую ячейку с формулой и переписывает её ссылки A1, чтобы отразить структурное изменение. Новый текстовый сканерXlsxAdjustFormulaRowColRefsобнаруживает одиночные ссылки (A1,$B$2) и ссылки на диапазоны (A1:B3), смещает компоненты их строк/столбцов за точку вставки и преобразует удалённые ссылки в#REF!. Смещаются как относительные, так и абсолютные ссылки (в соответствии с поведением Excel). Ранее формулы молча оставались указывающими на неправильные ячейки после структурного редактирования
Версия 2.159.0
Добавлено
- Состояние сортировки автофильтра теперь проходят обратное преобразование через движок XLSX.
TXLSXWorksheetполучает свойствоSortStateXml, которое несёт необработанный внутренний XML элемента OOXML<sortState>(направление сортировки столбца, учёт регистра, метод сортировки и каждое<sortCondition>с его флагом по убыванию + ссылкой). Писатель формирует элемент после<autoFilter>; читатель разбирает атрибуты и условия сортировки обратно. Ранее состояние сортировки молча отбрасывалось при чтении и никогда не записывалось - Настройки CJK-фонетики/текстового сопровождения теперь проходят обратное преобразование через движок XLSX.
TXLSXWorksheetполучаетPhoneticFontId,PhoneticType(hiragana / katakana / fullWidthKatakana / noConversion) иPhoneticAlignment(left / center / distributed). Писатель формирует<phoneticPr>после<sheetData>; читатель разбирает атрибуты обратно. Ранее фонетический элемент молча отбрасывался при чтении — файлы для японского рынка теряли настройки чтения фуриганы
Версия 2.158.0
Добавлено
- Движок XLSX теперь проходит обратное преобразование именованной таблицы стилей ячеек (
<cellStyles>). Новый классTXLSXNamedStyle+ коллекцияTXLSXNamedStylesвTXLSXWorkbookнесёт полную поверхность:Name,XfId,BuiltInId,CustomBuiltIn,Hidden,BuiltinLevel. Писатель формирует один<cellStyle>на запись, когда коллекция не пуста; читатель разбирает их обратно. Ранее писатель жёстко кодировал одну запись"Normal", а читатель отбрасывал все именованные стили, поэтому файлы со стилями «Good»/«Bad»/«Total»/пользовательскими именами теряли эти имена при обратном преобразовании
Версия 2.157.0
Добавлено
- Движок XLSX теперь проходит обратное преобразование полного элемента
<calcPr>, а не только переключателей итеративного вычисления.TXLSXWorkbookполучаетCalcId(идентификатор движка вычисления, который Excel использует для определения устаревания кэшированных значений),FullCalcOnLoad(заставляет Excel выполнять полный пересчёт при открытии — критично для книг, созданных не Excel-движком) иCalcMode(auto / manual / autoNoTable). Писатель формирует соответствующие атрибуты в<calcPr>; читатель разбирает их обратно. Ранее обрабатывались толькоiterate/iterateCount/iterateDelta, а остальные молча отбрасывались
Версия 2.156.0
Добавлено
- Вычислитель формул теперь реализует 37 функций листа, которые ранее были зарегистрированы (ptg назначен в InitFuncHash), но не имели реализации диспетчеризации — они проваливались в
#NAME?. Новые реализации охватывают пять семейств функций: Регрессия (FORECAST,LINEST,TREND,GROWTH,LOGEST,CORREL,PEARSON,SLOPE,INTERCEPT,RSQ,STEYX), Амортизация (SLN,SYD,DB,DDB,VDB), Описательная статистика (AVEDEV,DEVSQ,KURT,SKEW,GEOMEAN,HARMEAN,TRIMMEAN,FREQUENCY), Попарные массивы (SUMXMY2,SUMX2MY2,SUMX2PY2) и Комбинаторика/математика (COMBIN,PERMUT,FACT,QUOTIENT,ROMAN,DEGREES,RADIANS,STANDARDIZE). Регрессионные функции используют решатель наименьших квадратов; функции амортизации реализуют методы линейной, суммы цифр лет и убывающего баланса; функции описательной статистики вычисляют среднее абсолютное отклонение, эксцесс, асимметрию, геометрическое/гармоническое/усечённое средние; а парные функции вычисляют сумму квадратов разностей между двумя диапазонами одинакового размера. Новый вспомогательный методCollectRangeValuesвTXLSCalculatorизвлекает числовые значения из аргументов диапазона для статистических функций
Версия 2.155.0
Добавлено
- Вычислитель формул теперь поддерживает пять дополнительных имен совместимости статистических и инженерных функций:
ERFC,ERFC.PRECISE,BINOM.INV,CHI.INV.RTиF.TEST.ERFCдополняет существующий ряд функции ошибок,BINOM.INVищет порог CDF биномиального распределения,CHI.INV.RTпсевдонимно ссылается на правосторонний обратный хи-квадрат, аF.TESTвозвращает двустороннее p-значение дисперсии выборки
Версия 2.154.0
Добавлено
- Вычислитель формул теперь разрешает межкнижные ссылки через новый обратный вызов
OnGetExternalValueвTXLSCalculator. Когда трёхмерная ссылка указывает на внешнюю книгу ([1]Sheet1!A1), вычислитель маршрутизирует через обратный вызов вместо возврата#REF!. Движок XLSX подключает этот обратный вызов кGetExternalCellValue, который сопоставляет индекс SupBook + индекс листа с кэшем<sheetDataSet>соответствующегоTXLSXExternalLinkи декодирует кэшированное значение ячейки по его атрибуту типа OOXML (числовое / логическое / строка / ошибка). Ранее межкнижные формулы безусловно возвращали#REF!; инфраструктура обратного вызова теперь позволяет любому движку (BIFF8, XLSX или пользовательскому хосту вычислителя) предоставлять внешние значения - Вычислитель формул теперь выполняет поэлементное широковещательное вещание массивов для бинарных операторов (
+/-/*///^). Когда любой из операндов является одномерным или двумерным массивом вариантов (например, результатом матричной функции, перелившегося диапазона или операнда массива CSE), оператор применяется поэлементно; скалярный операнд транслируется каждому элементу операнда-массива. Новый вспомогательный методApplyArrayBinaryOpобрабатывает проверку формы, широковещательную передачу скаляра и распространение деления на ноль. Устаревшая скалярная арифметика не изменилась — путь массива активируется только тогда, когда хотя бы один операнд является массивом вариантов - Вычислитель формул теперь распознаёт функцию
TABLE(What-If Analysis DataTable). Excel хранит таблицы данных как формулы массива CSE, тело которых —TABLE(rowRef, colRef); ранееTABLEне распознавалась и проваливалась в#NAME?. Функция зарегистрирована с синтетическим ptg (ftabTABLE = 4232), поэтому она проходит обратное преобразование через кодирование формул BIFF8, а во время вычисления возвращает значение-заполнитель (0) — реальные результаты предварительно вычислены Excel и сохранены как кэшированные значения ячеек, поэтому HotXLS не перевычисляет логику подстановки
Версия 2.153.0
Добавлено
- Типизированная модель сводной таблицы теперь несёт типизированные свойства оси страниц (Hier / Caption / Name), область действия автосортировки и хуки обратного преобразования необработанного XML для
<formats>и<extLst>, необходимые для более полной совместимости с Excel.TXLSPivotFieldполучаетPageHier/PageCaption/PageName(F16 — имя иерархии OLAP + подпись оси страниц + отображаемое имя) иAutoSortScope(F20 — ссылка на диапазон A1, закрепляющая ячейки, которые Excel использует для автосортировки элементов поля);TXLSPivotTableполучаетFormatsXml/ExtLstXml(F17 — обратное преобразование необработанного внутреннего XML для блока переопределений CF/числового формата<formats>и блока срез/временная шкала/x14<extLst>, выводимыхого без изменений при установке, поэтому обратное преобразование безопасно даже между версиями движка). Писатель XLSX формирует соответствующие атрибуты<pageField hier=... cap=... name=.../>, дочерний элемент<autoSortScope>элемента<pivotField>и блоки<formats>+<extLst>перед закрывающей меткой - Трассировщик формул теперь записывает моментальные снимки стека операндов на каждом шаге, что создаёт настоящий отладчик формул с пошаговым выполнением «Evaluate Formula».
TXLSFormulaStepполучаетStepKind(push / reduce / function),StackBefore/StackAfter(моментальные снимки стека операндов, разделённые запятыми, на момент начала/завершения каждого шага) иTokenStart/TokenEnd(символьный интервал с нумерацией от 1, привязывающий шаг к исходной формуле).TXLSFormulaTracerполучаетTraceReversed(возвращает те же шаги в обратном порядке вычисления — полезно для интерфейса с обратным проходом, который движется от итогового результата к исходным операндам) и свойствоStepCount. Ранее трассировщик записывал только Depth / Source / Expression / Value без состояния стека - Экспорт в HTML теперь встраивает изображения в каждую ячейку через новый обратный вызов
OnCellImageвTXLSHTMLExportи новую опциюxhImages. Когда опция установлена и обратный вызов подключён, экспортёр запрашивает у разработчика фрагмент<img>для каждой ячейки (обычно data-URI Base64) и добавляет его после текста ячейки. Это отделяет экспортёр от хранилища изображений BIFF8 движка XLS (которое находится в записи MsoDrawing для каждого листа), поэтому экспортёру не нужно анализировать привязки самостоятельно. Экспорт в HTML движка XLSX уже встраивал изображения; это закрывает пробел для движка XLS - Импорт RTF теперь применяет свойства символов (полужирный / курсив / подчёркивание / зачёркивание / размер) управляющих слов RTF к шрифту целевой ячейки.
TXLSRTFImportотслеживает\b/\i/\ul/\strike/\fsпо всему документу и помещает форматирование доминирующей серии в XF ячейки при фиксации. Новое свойствоImportCharFormat(по умолчанию True) переключает поведение; установите False для восстановления устаревшего импорта только текста. Ячейки с несколькими сериями сводятся к одному XF (побеждает последняя активная серия), поскольку API ячеек движка XLS работает на уровне ячейки, а не по фрагментам — но это намного лучше, чем отбрасывание всего форматирования, как делал устаревший импортёр - Новый класс
TXLSHTMLImportанализирует HTML-таблицы в ячейки листа. Он обходит первую<table>в источнике, формируя одну строку листа на каждый<tr>и одну ячейку на каждый<td>/<th>. Учитываетcolspan/rowspan(объединение в стиле Excel), удаляет теги внутри ячейки (сводя вложенное форматирование к простому тексту), декодирует пять стандартных сущностей символов (&/</>/"/'/ ) и числовые формы&#NNN;/&#xNN;, а также преобразует корректные числовые строки в Double, чтобы импортированные таблицы оставались вычислимыми. Предназначен для вывода, который сам HotXLS создаёт (SaveAsHTML), плюс обычные HTML-таблицы качества вставки; не является полным парсером HTML5
Версия 2.152.0
Добавлено
- Таблицы XLSX теперь сохраняют метаданные итогов на уровне столбцов и табличные формулы.
TXLSXTableпредоставляетColumnTotalsRowFunctions[],ColumnTotalsRowLabels[],ColumnCalculatedColumnFormulas[]иColumnTotalsRowFormulas[];SaveAsформирует соответствующий XML табличных столбцовtotalsRowFunction,totalsRowLabel,calculatedColumnFormulaиtotalsRowFormula,Openсчитывает их обратно, а клоны таблиц сохраняют их
Версия 2.151.0
Добавлено
- Типизированная модель сводной таблицы теперь несёт коллекцию фильтров по полю, переключатель множественного выбора, поверхность discretePr + groupItems fieldGroup, а также модель вычисляемых элементов / вычисляемых членов, необходимых для более полной совместимости сводных таблиц.
TXLSPivotFieldполучает типизированную коллекциюTXLSPivotFilters(каждая запись несётFilterTypeпо всему перечислению OOXMLST_FilterTypeиз 80 элементов — семейства count / percent / sum / caption / value / date — плюсValue1/Value2/StrValue1/StrValue2,EvalOrder,DataField,MemberPropertyId,Name,Description), переключательMultipleItemSelectionAllowed(F9) и коллекциюTXLSPivotCalculatedItem(F14).TXLSPivotCacheFieldполучаетDiscreteIndices[]+AddDiscreteIndexиGroupItemLabels[]+AddGroupItemдля блоков fieldGroup discretePr + groupItems (F13).TXLSPivotTableполучает коллекциюTXLSPivotCalculatedMember(F14). Писатель XLSX формирует соответствующие<pivotField multipleItemSelectionAllowed="1">, блок<filters><filter .../>для каждого поля, элемент<fieldGroup><discretePr>...</discretePr><groupItems>...</groupItems></fieldGroup>, блок<calculatedItems>для каждого поля и блок<calculatedMembers>на уровне таблицы — поэтому программно созданные сводные таблицы с фильтрами / множественным выбором / группировкой / вычисляемыми элементами проходят обратное преобразование
Версия 2.150.0
Добавлено
- Определённые имена теперь сохраняют текст формулы корректным, когда лист, на который они ссылаются, удаляется или переименовывается. Удаление листа переписывает каждый квалификатор
SheetN!внутри формулы определённого имени на#REF!(в соответствии с поведением Excel); переименование листа переписывает квалификатор на новое имя. Ранее текст формулы продолжал указывать на несуществующее имя листа, которое Excel затем помечал как повреждённую связь при повторном открытии - Типизированная модель сводной таблицы теперь несёт порядок сортировки на уровне поля и переключатели макета, а также атрибуты макета / отображения на уровне таблицы, необходимые для более полной совместимости макета сводных таблиц.
TXLSPivotFieldполучаетSortType(вручную / по возрастанию / по убыванию),Compact,Outline,SubtotalTop,DragToRow/DragToCol/DragToPage/DragToData,ShowAll,InsertBlankRow,NumFmtId;TXLSPivotTableполучаетCompact/CompactData/Outline/OutlineData/Indent/ShowEmptyRow/ShowEmptyCol/ShowHeaders/ShowDrill/EnableDrill/FieldListSortAscending/GridDropZonesплюсRowHeaderCaption/ColHeaderCaption/ErrorCaption/MissingCaption/ShowError/ShowMissingи пару макета оси страницRowPageCount/ColPageCount. Писатель XLSX формирует соответствующие атрибуты<pivotField sortType=... compact=... outline=...>и<pivotTableDefinition indent=... outline=... showEmptyRow=...>и элемент<location rowPageCount=... colPageCount=.../>, поэтому программно созданные сводные таблицы несут установленный пользователем макет вместо значений по умолчанию Excel - Новый метод
FormulaIsVolatileвTXLSWorkbookсообщает, приведёт ли формула к принудительному пересчёту при каждом проходе вычисления — т.е. вызывает ли она волатильную функцию (NOW / RAND / TODAY / OFFSET / INDIRECT) или содержит неразрешимую ссылку. Проба использует тот же экстрактор зависимостей, что и движок пересчёта, поэтому ответ соответствует тому, чтоRecalculateфактически делает. Вызывающие могут использовать это для пометки ячеек для интерфейса проверки, заполнения набора волатильных элементов цепочки вычисления в совершенно новой книге или для пропуска кэширования результата только что введённой формулы
Версия 2.149.0
Добавлено
- Кэши сводных таблиц теперь можно обновлять программно из их исходного диапазона. Новый метод
RefreshPivotCache(ACacheId)вTXLSXWorkbookповторно сканирует исходный диапазон кэша, перестраивает домен общих элементов по каждому полю (повторно дедуплицируя значения и повторно выводя границы по каждому типу) и переписывает индексы элементов для каждой записи. Ранее HotXLS полагался на жёстко заданный флагrefreshOnLoad="1"и откладывал всю работу по обновлению до Excel при следующем открытии; программные конвейеры теперь могут обновлять в процессе
Версия 2.148.0
Добавлено
InsertColsв движке XLSX теперь наследует ширину столбца от левого соседа, соответствуя поведению Excel по умолчанию для «вставки столбца». Ранее вставляемый столбец получал ширину книги по умолчанию, создавая видимый пробел в точности после повторного открытия- Движок XLSX получает вспомогательные методы сворачивания структуры
ToggleColGrouped/ToggleRowGroupedвTXLSXWorksheet, которые обходят дерево структуры и сворачивают или разворачивают группу на заданном уровне. Сами флаги сворачивания уже проходили обратное преобразование; это добавляет недостающий удобный API обхода дерева
Версия 2.147.0
Добавлено
- Экспорт в HTML теперь формирует привязки
<a name>в ячейках, которые являются целевыми объектами внутренних гиперссылок, поэтому гиперссылки#SubAddressкорректно разрешаются, когда читатель щёлкает по ним. Ранее ссылки формировались, но у целей не было привязок, поэтому внутренние переходы разрешались в пустоту - Экспорт CSV получил свойство
CSVEmitFormulasвTXLSXWorkbook. Если True, ячейки формул экспортируют свой текст формулы (=SUM(A1:A2)) вместо вычисленного значения — полезно для отладки и для конвейеров, которые повторно импортируют в другой движок - URL-адреса внешних гиперссылок теперь процентно кодируются при записи (
XlsxEncodeHyperlinkUrl): пробел, угловые скобки, кавычки, фигурные скобки, вертикальные черты, обратные косые черты, циркумфлексы и обратные апострофы кодируются как%XXв атрибуте<Relationship Target="..."/>, поэтому файл корректно открывается в любом браузере. Существующие процентно-кодированные последовательности (%20) сохраняются как есть - Информация о стиле сводной таблицы теперь несёт полную поверхность
pivotTableStyleInfo:StyleName,ShowRowHeaders,ShowColHeaders,ShowRowStripes,ShowColStripes,ShowLastColumnвTXLSPivotTable. Писатель XLSX формирует соответствующий элемент, поэтому программно созданные сводные таблицы несут выбранный пользователем стиль чередования вместо жёстко заданного значения по умолчанию - Новый метод
CalculateAndVerifyвTXLSXWorkbookповторно вычисляет каждую ячейку с формулой и сравнивает вычисленный результат с кэшированным значением ячейки. Возвращает количество несоответствий (0 = все кэшированные значения соответствуют свежим вычислениям движка; волатильные формулы исключаются). Полезно для контроля качества при переносе книг между движками или проверке того, что писатель не повредил кэшированные значения
Версия 2.146.0
Добавлено
- Движок XLSX теперь поддерживает итеративное вычисление циклических ссылок (итеративный режим вычисления Excel). Новая тройка свойств
Iterate/IterateCount/IterateDeltaвTXLSXWorkbookуправляет поведением: когдаIterate=Trueи во времяRecalculateобнаруживается цикл ссылок, движок повторно вычисляет ячейки-члены цикла доIterateCountраз (по умолчанию 100) или пока изменение каждой ячейки не станет< IterateDelta(по умолчанию 0,001) вместо возврата#REF!. Настройки проходят обратное преобразование через элемент OOXML<calcPr iterate="1" iterateCount="N" iterateDelta="X"/>. Финансовые модели с намеренными циклическими ссылками (проценты на проценты, циклические распределения) теперь сходятся вместо выдачи ошибки - Поля кэша сводной таблицы теперь несут модель группировки для группировки числовых диапазонов и иерархии дат.
TXLSPivotCacheFieldполучаетHasGroup+GroupStartNum/GroupEndNum/GroupInterval(числовой диапазон) иGroupByDate/GroupDays/GroupMonths/GroupQuarters/GroupYears/GroupHours/GroupMinutes/GroupSeconds/GroupStartDate/GroupEndDate(дата). Писатель XLSX формирует элемент<fieldGroup><rangePr groupBy="range|days|months|..."/>, поэтому программно созданные сводные таблицы сгруппированными полями соответствуют выводу Excel - Экспорт в HTML теперь формирует концевые сноски комментариев. Когда
xhCommentsнаходится в опциях экспорта, каждая ячейка с комментарием получает ссылку[n]с надстрочным индексом, а полный текст комментария (автор + тело) указывается как раздел концевых сносок после таблицы с обратной привязкой к ячейке. Ранее комментарии были доступны только через атрибутtitle=ячейки, который невидим при печати или копировании
Версия 2.145.0
Добавлено
- Литералы ошибок формул BIFF8 (токен
tErr) теперь декодируются в типизированный элемент синтаксисаSA_ERRORвместо сбоя разбора формулы. Ячейка, хранящая=#N/A(или любая из семи констант ошибок Excel), ранее приводила к тому, что вся формула отбрасывалась при чтении; байт ошибки теперь проходит цикл чтение → вычисление → запись и восстанавливается в текстовую форму (#NULL!,#DIV/0!,#VALUE!,#REF!,#NAME?,#NUM!,#N/A) через новый вспомогательный методXlsErrorToString - Токен BIFF8
tIsect $0F(оператор неявного пересечения) теперь декодируется в трансляторе бинарных формул, строя тот же узелSA_ISECT, который текстовый парсер формирует для@. Ранее бинарная формула, содержащаяtIsect, не могла быть разобрана - Условное форматирование полос данных теперь формирует блок расширения
x14для Excel 2010+ вextLstлиста, когда модель несёт любое поле x14, отличное от значения по умолчанию (цвет отрицательной заливки, отключение градиента, цвет оси, направление, граница). НовыйBuildDataBarExtXmlстроит элементext<x14:conditionalFormattings>с соответствующим приоритетом, парой cfvo, цветами заливки + отрицания + оси и атрибутами gradient/border/direction/negativeBarColorSameAsPositive
Версия 2.144.0
Добавлено
- Движок XLSX теперь может записывать книги с Agile-шифрованием (
TXLSXWorkbook.SaveAsEncryptedAgile), закрывая пробел совместимости чтения/записи высокой ценности. Agile — то, что Excel 2010+ записывает по умолчанию для файлов .xlsx, защищённых паролем; HotXLS ранее мог читать Agile, но записывать только Standard Encryption (AES-128). Новый конвейер записи отражает существующий путь расшифровки: хеширование пароля SHA-512 со счётчиком циклов 100000, по сегментное шифрование пакета AES-256-CBC, случайно сгенерированный промежуточный ключ, обёрнутый для каждого из трёх закреплённых в спецификации блочных ключей, и полный дескриптор XML<encryption>, несущий зашифрованные блобы верификатора + ключа. Вывод побайтово соответствует тому, что производит Excel, и корректно проходит обратное преобразование черезXlsLoadAgileEncryptedFile(проверено тестом: корректный пароль расшифровывается, неверный отклоняется) - Новые криптографические примитивы лежат в основе пути записи Agile:
XlsHMACSHA512(RFC 2104, необходим для элементаdataIntegrity),XlsBase64Encode(кодировщик RFC 4648, отражающий существующий декодер) иAESEncryptCBC(AES-CBC шифрование для любого размера ключа 128/192/256, обратный к существующемуAESDecryptCBC). Модуль AES теперь импортируетaes_encrypt_key192/aes_encrypt_key256из Gladman obj (ранее было доступно только 128-битное шифрование)
Версия 2.143.0
Добавлено
- Вычислитель формул теперь анализирует и вычисляет оператор явного пересечения
@(синтаксис динамических массивов Excel 365, например,=A2:A4 @ B2:B4). Лексер формирует новый токенLT_ISECTдля символа@, синтаксический анализатор приоритета строит узелSA_ISECT(связывающий теснее, чем^, свободнее, чем%), а новый вычислительIntersectRangesразрешает оба операнда как диапазоны и возвращает значение единственной пересекающейся ячейки — правило неявного пересечения Excel. Сериализатор BIFF-токенов формируетtIsect $0F, поэтому оператор проходит обратное преобразование через XLS, а путь реконструкции текста формулы формирует неявно-пробельную форму. Ранее такие формулы не удавалось разобрать - Стандартный кодировщик Base64 (
XlsBase64Encode) теперь доступен, отражая существующийXlsBase64Decode. Это предварительное условие для пути записи Agile-шифрования, который выводит saltValue / encryptedVerifierHashInput / encryptedKeyValue / encryptedHmacValue как значения атрибутов Base64 - Событие книги
OnProgressтеперь также срабатывает во время полного пересчёта (Recalculate), с новой фазойxlsxProgressCalculating. Ранее событие срабатывало только во время чтения и записи, поэтому длительные полные пересчёты не давали интерфейсу сигнала жизнедеятельности. Событие срабатывает примерно каждые 4% ячеек, чтобы избежать переполнения - Расширенные свойства документа (
docProps/app.xml) теперь проходят обратное преобразование ещё трёх полей, которые Excel записывает для защищённых паролем / основанных на шаблонах документов:Manager,TemplateиDocSecurity(битовое поле: 1=защищено паролем, 2=рекомендуется только чтение, 4=принудительно только чтение, 8=заблокировано для аннотирования)
Версия 2.142.0
Добавлено
- Типизированная модель сводной таблицы теперь несёт поверхность метаданных, источника, вычисляемых полей, «показать значения как» и границ общих элементов, которую предыдущий раунд анализа пометил как пробелы.
TXLSPivotCacheполучаетRefreshOnLoad/RefreshedBy/RefreshedDate/MissingItemsLimit/CreatedVersion/RefreshedVersion/MinRefreshableVersion/EnableRefresh/BackgroundQuery/SaveDataплюс типизированную форму источника листа (SourceName/SourceRelId/SourceIsNamedRange);TXLSPivotCacheFieldполучаетFormula/DatabaseField/MemberPropertyField(вычисляемые поля) и границы общих элементов (ContainsBlank/ContainsInteger/ContainsString/ContainsNumber/ContainsDate/MinValue/MaxValue/MinDate/MaxDate/HasBounds);TXLSPivotDataFieldполучаетShowDataAs/BaseField/BaseItemдля преобразований «показать значения как» (процент от / разница / нарастающий итог / индекс). Писатель XLSX (BuildPivotCacheDefinitionXml/BuildPivotTableXml) учитывает все это, поэтому программно созданная сводная таблица (AddPivotTable) формирует более богатыеpivotCacheDefinition+pivotTableDefinition— refreshOnLoad / тройка версий / refreshedBy / источник именованного диапазона / формула вычисляемого cacheField / границы sharedItems / промежуточный итог dataField + showDataAs. Сводные таблицы, прочитанные из файла, продолжают проходить обратное преобразование своего необработанного XML без изменений - Поведение привязки изображения теперь проходит обратное преобразование через новое свойство
AnchorTypeвTXLSXImage(xaTwoCell= перемещать и изменять размер с ячейками,xaOneCell= перемещать, но не изменять размер,xaAbsolute= не перемещать и не изменять размер). Писатель выбирает элемент привязки (xdr:oneCellAnchor/xdr:twoCellAnchor editAs=.../xdr:absoluteAnchor) соответственно; читатель разбирает имя элемента + атрибутeditAsобратно. Сопоставляется с диалогом Excel правый щелчок → Размер и свойства → Свойства - Колонтитулы теперь проходят обратное преобразование дифференциации чётных/первых страниц.
TXLSXWorksheetполучаетEvenHeaderText/EvenFooterText/FirstHeaderText/FirstFooterTextплюс четыре переключателя<headerFooter>(DifferentOddEven,DifferentFirst,ScaleWithDoc,AlignWithMargins). Файлы, в которых пользователь включил «Разные колонтитулы для чётных и нечётных страниц» или «Особый колонтитул для первой страницы», больше не теряют разделы чётных/первых страниц при обратном преобразовании - Параметры страницы теперь проходят обратное преобразование расширенных атрибутов
<pageSetup>, которые Excel записывает для настроек печати, отличных от значений по умолчанию:Copies,FirstPageNumber+UseFirstPageNumber,HorizontalDpi,VerticalDpi,PrintErrors(displayed/blank/dash/NA),UsePrinterDefaults <sheetFormatPr>теперь проходит обратное преобразованиеcustomHeight,zeroHeight,outlineLevelRowиoutlineLevelCol, поэтому файлы, в которых пользователь установил пользовательскую высоту строк по умолчанию, скрытые строки по умолчанию или уровень структуры по умолчанию, больше не теряют это поведение- Условное форматирование полос данных проходит обратное преобразование стандартного атрибута
gradient(градиент или сплошная заливка), аTXLSDataBarSpecполучает поля расширенияx14для Excel 2010+ (NegativeBarColor,NegativeBarColorSameAsPositive,GradientFill,AxisColorс темой/оттенком,Direction,Border) в модели, поэтому потребители API могут устанавливать их - Всплывающие окна комментариев проходят обратное преобразование VML-документа без изменений. Читатель захватывает
xl/drawings/vmlDrawingN.vmlкак есть, а писатель воспроизводит его при сохранении (вместо встроенного шаблона жёлтого окна), поэтому положение / размер / цвет заливки / видимость каждого окна, заданные пользователем, сохраняются - Тела комментариев проходят обратное преобразование форматирования по сериям.
TXLSXCommentполучает ленивую полезную нагрузкуRichText: TXLSXRichText(повторно использующую модель серий общих строк); писатель формирует один<r><rPr>...</rPr><t>...</t></r>на серию, когда RichText несёт форматирование, а читатель разбирает<b/>,<i/>,<sz val=N/>,<color rgb=.../>обратно, поэтому полужирный / курсив / размер / цвет сохраняются - Вычислитель формул теперь реализует
SUBTOTAL(все одиннадцать агрегаторов: AVERAGE / COUNT / COUNTA / MAX / MIN / PRODUCT / STDEV / STDEVP / SUM / VAR / VARP, плюс варианты игнорирования скрытых 101–111) иAGGREGATE(девятнадцать агрегаторов с флагами кодов опций 0–7, выбирающими пропуск ошибок/скрытых, включая семейство LARGE / SMALL / MEDIAN / PERCENTILE / QUARTILE с их аргументомk). Обе ранее проваливались в путь неподдерживаемой функции;SUBTOTALбыла зарегистрирована, но не имела реализации,AGGREGATEне была зарегистрирована вообще - Функции листа
CELLиINFOтеперь вычисляются:CELLподдерживаетaddress,col,row,type,contents,filename,format, аinfo_typeсостояния графического интерфейса (color,parentheses,prefix,protect,width) возвращают нейтральные значения по умолчанию;INFOподдерживаетosversion,system,recalc,memavail,numfile,release,origin. Обе были зарегистрированы, но проваливались в#NAME? - Условное форматирование теперь проходит обратное преобразование атрибутов
cfRulestopIfTrue,stdDev,equalAverageиtimePeriod, плюс полное семействоtimePeriodиз десяти элементов (yesterday / today / tomorrow / last7Days / lastWeek / thisWeek / nextWeek / lastMonth / thisMonth / nextMonth). Они молча отбрасывались при чтении; Excel обычно записывает их в правилах выше среднего и диапазонов дат, и их отбрасывание меняло то, как правило повторно вычислялось при повторном открытии - Экспорт CSV получил свойство
TXLSCsvEncodingвTXLSCSVSaverс тремя режимами:ceSystemAnsi(устаревшее значение по умолчанию),ceUtf16(исторический режим Unicode) иceUtf8, который записывает файл UTF-8 с меткой порядка байтов EF BB BF — современное значение по умолчанию, удобное для Excel, которое открывается без мастера импорта текста в любой локали - Импорт CSV получил свойство
LocaleTolerantNumbersвTXLSCSVLoader. При включении числовое поле, которому не удаётся разобрать с.в качестве десятичного разделителя, повторно пытается с,(и наоборот), поэтому европейское3,14импортируется как число 3,14 на американской машине. Строгий режим (значение по умолчанию) не изменился, поэтому текст с ведущим нулём, почтовые индексы и другие токены, содержащие запятую, остаются текстом
Исправлено
- Логический вывод чисел движка XLSX в строгом режиме больше не преобразует текстовые поля, содержащие запятую (например,
3,14), в числа черезTryStrToFloatDelphi, который допускает запятую в качестве разделителя тысяч, даже когдаThousandSeparatorустановлен в#0. Такие поля теперь остаются текстом, если не включена новая опцияLocaleTolerantNumbers
Версия 2.140.0
Изменено
- Движок XLSX теперь уплотняет свои шесть пулов стилей по атрибутам (Fonts / Fills / Borders / NumberFormats / Alignments / Protections) перед каждым сохранением: новый проход
CompactStylePoolsсканирует индексы стилей каждой ячейки и отбрасывает записи пула, на которые больше не ссылается ни одна ячейка — записи, которые накапливаются, когда ячейки очищаются, удаляются или переоформляются после того, как запись пула была впервые добавлена. Уплотнённые пулы производят меньшую таблицу<cellXfs>в выходном файле (обычно на 30–70% меньше для документов, прошедших несколько циклов редактирования), что соответствует уплотнению, которое движок XLS уже выполняет черезCreateAllReferredList
Версия 2.139.0
Добавлено
- Фигуры слоя рисования, соединители, групповые фигуры и графические фреймы, не являющиеся диаграммами, теперь проходят обратное преобразование без изменений: когда читатель XLSX встречает привязку
<xdr:sp>,<xdr:cxnSp>,<xdr:grpSp>или некего-диаграммного<xdr:graphicFrame>, которую не покрывает типизированная модель (изображения / диаграммы / текстовые поля), он захватывает полный XML привязки и воспроизводит его без изменений при сохранении — поэтому рисунки, созданные в Excel (стрелки, выноски, сгруппированные фигуры, фреймы smart art), проходят цикл чтение→запись без потерь. Каждый лист предоставляетRawDrawingAnchorCount/RawDrawingAnchor(i)для проверки
Версия 2.138.0
Добавлено
- Кэшированные значения ячеек внешних ссылок теперь проходят обратное преобразование в движке XLSX: новая модель
TXLSXExternalCell/TXLSXExternalRow/TXLSXExternalSheetDataвисит на каждойTXLSXExternalLinkчерезAddSheetData/AddRow/AddCell, писатель формирует соответствующий блок<sheetDataSet>внутриexternalLinkN.xml, а повторное открытие восстанавливает каждое кэшированное значение.FindCachedCell(sheetIdx, row, col)ищет последнее известное значение ячейки с внешней ссылкой — данные, которые сам Excel показывает, когда удалённая книга находится в автономном режиме
Версия 2.137.0
Добавлено
- Флаг
quotePrefixcellXf OOXML — механизм Excel для пометки сохранённого текста как литерала, чтобы он переживал числовое преобразование (коды, импортированные из CSV, такие как00123, длинные номера счетов, всё, к чему пользователь добавил апостроф в начале) — теперь проходит обратное преобразование в движке XLSX:TXLSXAlignmentполучает свойствоQuotePrefix, дедупликация пула выравнивания учитывает его, писатель формируетquotePrefix="1"в соответствующем<xf>, а повторное открытие восстанавливает его, независимо от того, нёс ли cellXf дочерний<alignment/>или был «голым» самозакрывающимся<xf quotePrefix="1"/>
Версия 2.136.0
Добавлено
- Оси диаграмм теперь полностью программируемы: новая модель
TXLSXChartAxisна каждойCategoryAxisиValueAxisдиаграммы предоставляетLogBase(логарифмическая шкала, напр. 10 для логарифма по основанию 10),Orientation(обычная / перевёрнутая),MajorGridlines/MinorGridlines,MinValue/MaxValue(NaN = авто),MajorUnit/MinorUnit,CrossesAt,TickLblPosиDispUnits(единицы отображения: сотни / тысячи / миллионы / миллиарды / триллионы). Все по умолчанию используют автоматическое поведение Excel, поэтому существующие диаграммы генерируют тот же XML, что и раньше; модуль записи добавляет<c:logBase>,<c:orientation>,<c:majorGridlines>,<c:majorUnit>,<c:crossesAt>,<c:tickLblPos>и<c:dispUnits>только когда вызывающая сторона задаёт значение, отличное от умолчания, а повторное открытие такой диаграммы восстанавливает все настройки
Версия 2.135.0
Добавлено
- Пределы погрешностей диаграмм теперь программируемы и проходят цикл сохранения/открытия в движке XLSX: каждый
TXLSXChartSeriesполучаетAddErrorBar(dir), возвращающийTXLSXChartErrBarсо свойствамиValueType(фиксированное / процентное / stdDev / stdErr / пользовательское),Value,PlusValue/MinusValue(пользовательское) иNoEndCap; хранится один слот предела погрешностей на направление (X / Y), модуль записи генерирует соответствующий блок<c:errBars>, а повторное открытие восстанавливает направление, тип и величину, чтобы научные / инженерные диаграммы сохраняли свои индикаторы неопределённости
Версия 2.134.0
Добавлено
- Подписи данных диаграмм теперь программируемы и проходят цикл сохранения/открытия в движке XLSX: каждый
TXLSXChartSeriesполучает свойстваShowValue,ShowCategoryName,ShowSeriesName,ShowLegendKey,ShowPercent,ShowBubbleSizeиSeparator, которые генерируют соответствующий блок<c:dLbls>вместе с его дочерними элементами<c:show*/>; повторное открытие такой диаграммы восстанавливает переключатели, так что настройки «показывать значение» / «показывать процент» переживают цикл сохранить-изменить-сохранить
Версия 2.133.0
Добавлено
- Векторные форматы изображений EMF и WMF теперь являются основными типами изображений в движке XLSX:
TXLSXImageFormatполучаетxlsxImageEmf/xlsxImageWmf, модуль записи (writer) выводит соответствующие типы содержимогоimage/x-emf/image/x-wmfи расширения.emf/.wmf, а распознаватель формата (sniffer) распознает заголовки EMF (01 00 00 73), позиционируемый WMF (D7 CD C6 9A) и стандартный WMF — благодаря чему изображения, вставленные из Word или PowerPoint, которые Excel внедряет как векторные данные, теперь сохраняются при повторном сохранении (round-trip) вместо того, чтобы быть отброшенными
Исправлено
- Подпотоки диаграмм BIFF8, у которых запись GELFRAME (
$1066) пересекает границу продолжения в 8224 байта, больше не теряют геометрию заливки и линий: модуль чтения (reader) теперь принимает самопродолжение GELFRAME (Excel записывает еще одну$1066вместо стандартного$003CCONTINUE), а также позволяет стандартным записям CONTINUE объединяться внутри контекста диаграммы, соответствуя существующей многосегментной отправке модуля записи - Фоновые изображения колонтитулов BIFF8 (
$0866), полезная нагрузка которых выходит за пределы записей продолжения, больше не повреждаются: каждый сегмент продолжения дублирует 14-байтовый заголовок MSO, который модуль чтения теперь удаляет перед объединением, так что встроенные данные изображения больше не смещаются на 14 байт на сегмент
Версия 2.132.19
Исправлено
- Очистка хранилищ устаревшего XLS и зашифрованного XLSX теперь детерминированно освобождает потоки составных файлов, предотвращая блокировку временных файлов после операций сохранения, загрузки, VBA или работы с зашифрованными пакетами
- Форматированное отображение расширенных целочисленных значений variant теперь последовательно применяет запрошенный числовой формат, соответствуя существующему поведению для стандартных целочисленных значений
- Общие строки, валидация данных, листы диаграмм, ZIP-архивы, рисование PNG и формулы с повторяющимся текстом теперь более надежно очищают временные буферы при возникновении ошибок и операциях с длинным текстом
Версия 2.132.18
Исправлено
- Присвоение значений внутреннему построителю строк теперь очищает предыдущий текст при присвоении пустой строки, предотвращая сохранение устаревшего содержимого в повторно используемых буферах XML и текста
Версия 2.132.17
Исправлено
- Создание листов диаграмм XLS теперь принимает имена исходных листов в кавычках, содержащие восклицательный знак, отклоняет слишком большие ссылки на строки до того, как они смогут перерасти в допустимую строку BIFF, и ограничивает имена легенд линий тренда лимитом короткого текста BIFF, чтобы создаваемые записи диаграмм оставались корректными
Версия 2.132.16
Исправлено
- Внутренние списки строковых ключей и ключей объектов теперь удаляют устаревшие ключи поиска при перезаписи существующего слота, предотвращая разрешение старых ключей в замещающие записи
- Внутренние замены списков объектов и кэши преобразованных уникальных ключей теперь освобождают собственные записи при перезаписи, очистке и уничтожении, предотвращая утечки памяти при повторяющихся операциях с книгами и стилями
Версия 2.132.15
Исправлено
- Прямое потоковое чтение XLSX теперь декодирует логические ячейки, которые хранят литеральные значения OOXML, такие как true и false
- Обновления индексов внутренних списков строк теперь удаляют устаревшие ключи при перезаписи существующего слота, предотвращая разрешение старых имен в новое значение
Версия 2.132.14
Исправлено
- Сообщения подсказок и ошибок валидации данных BIFF8, первый символ которых равен NUL, теперь сохраняют границы записей вместо записи несоответствующей длины DV
Версия 2.132.13
Исправлено
- Анализ XML-текста теперь отклоняет вложенные начала сущностей, такие как &&, вместо того чтобы молча отбрасывать незавершенную сущность
- Декомпилированные формулы теперь записывают числовые константы с инвариантным десятичным разделителем-точкой, чтобы текст формулы оставался переносимым между региональными настройками
Версия 2.132.12
Исправлено
- Прозрачность палитры PNG теперь игнорирует прозрачные цвета, которые отсутствуют в палитре изображения, вместо того чтобы помечать произвольный индекс палитры как прозрачный
- Формулы SUMPRODUCT теперь прекращают сканирование оставшихся строк после первой строки вне используемого диапазона в аргументах длинного диапазона, избегая ненужного чтения ячеек и сохраняя вычисленный результат
Версия 2.132.11
Исправлено
- Формулы TEXT теперь возвращают #VALUE!, если не удается применить недопустимый или слишком большой числовой формат, вместо того чтобы обрабатывать это как пустой успешный результат
- Усечение таблицы общих строк теперь освобождает правильные хвостовые блоки и сохраняет таблицу пригодной для повторного использования после больших циклов удаления
Версия 2.132.10
Исправлено
- Точные поиски MATCH теперь поддерживают подстановочные знаки Excel, а метаданные смещения строк классического XLS теперь игнорируют строки вне блока вместо повреждения структуры сохраненной книги
- Метаданные сжатого текста PNG теперь безопасно освобождают временные буферы, если обработка чанка вызывает исключение
Версия 2.132.9
Исправлено
- Метаданные сжатого текста PNG, вставка в список чанков и обработка порядка байтов CRC теперь остаются стабильными на всех поддерживаемых платформах Windows
Версия 2.132.8
Исправлено
- Формулы LEFT и RIGHT теперь возвращают #VALUE!, если num_chars не удается преобразовать в допустимое целое число
Версия 2.132.7
Исправлено
- Формулы SEARCH теперь поддерживают подстановочные знаки ?, * и ~ в стиле Excel
- Валидация имени листа теперь отклоняет недопустимые символы имени листа Excel при переименовании листов
- Удаление ручных разрывов страниц теперь работает после вставки разрыва перед существующими разрывами
Версия 2.132.6
Исправлено
- Формулы DATE теперь соответствуют поведению циклического переноса месяцев и дней, совместимому с Excel, включая такие вызовы, как DATE(2008,14,2)
- Чтение свойства Hidden для диапазонов столбцов теперь сообщает видимость каждого столбца вместо смешивания с состоянием видимости строк
- Метаданные строк BIFF на пределе строк Excel 97-2003 теперь загружаются корректно, сохраняя настройки для строки 65536
Версия 2.132.5
Исправлено
- Загрузка книг BIFF теперь допускает некорректные цвета вкладок листов, усеченные метки сводных таблиц и недействительные фрагменты дат кэша сводных таблиц без вызова исключений
- Загрузка пакетов книг и потоков теперь более последовательно очищает неудачные пути настройки архива и хранилища, избегая утечки ресурсов при неверных входных данных или неудачном открытии хранилищ на основе потоков
Версия 2.132.4
Исправлено
- Обработка ZIP-архивов теперь завершает текущий пакет перед повторным использованием того же объекта архива для другого пакета, а открытие архивов на основе файлов теперь допускает одновременное чтение несколькими пользователями
Версия 2.132.3
Исправлено
- Запись пакетов книг теперь сохраняет имена записей ZIP, отличные от ASCII, с использованием метаданных UTF-8, предотвращая появление кракозябр при наличии текста Unicode в именах частей пакета
- Вывод XML теперь записывает необработанный текст и значения атрибутов в виде байтов UTF-8, когда экранирование отключено, соответствуя объявленной кодировке документа
- Вычисление формул теперь очищает состояние выполнения после исключений в обратных вызовах и корректно обрабатывает отмену вычислений с большими числами в сборках Delphi с поддержкой Unicode
- Извлечение матрицы формул массивов теперь учитывает ненулевые нижние границы массивов Variant вместо вызова ошибки для корректных массивов с базой от единицы
Версия 2.132.2
Изменено
- Сортировка диапазонов теперь использует стабильный проход упорядочивания O(n log n) для больших отсортированных диапазонов, сохраняя существующее поведение повторного сохранения (round-trip) содержимого строк
- Анализ и форматирование чисел в ODS и XLSX теперь повторно используют инвариантное состояние форматирования вместо его постоянного создания на часто используемых путях выполнения
Исправлено
- Анализ XML теперь принимает корректные блоки CDATA и инструкции обработки UTF-8 без повреждения текста или сбоев на корректной разметке
- Анализ формул теперь принимает экспоненциальное представление со знаком и корректно отклоняет поврежденные или усеченные байты формул
- Классические пути открытия и сохранения книг теперь надежно освобождают потоки и хранилища после ошибок, предотвращая блокировку временных файлов
- Обработка двоичных буферов теперь проверяет границы копирования и чтения, увеличивает целевые буферы перед копированием и корректно отклоняет некорректные обратные ссылки сжатия VBA
Версия 2.132.1
Исправлено
- Исправлено сообщение об ошибке, возникающее, когда зашифрованная книга использует неподдерживаемую схему шифрования: ранее в нем утверждалось, что шифрование ECMA-376 Agile Encryption не может быть прочитано, хотя дешифрование Agile (AES-128/192/256) поддерживается начиная с версии 2.119.0. Теперь в сообщении перечислены действительно поддерживаемые схемы
- Open теперь перенаправляет вызывающих абонентов на TXLSXWorkbook.OpenEncrypted, когда он отклоняет зашифрованный пакет OOXML, вместо сообщения о том, что зашифрованные книги не поддерживаются
Версия 2.132.0
Изменено
- Загрузка XLSX стала значительно быстрее: модуль чтения XML теперь интернирует повторяющиеся имена элементов и преобразует значения текста и атрибутов непосредственно из своего буфера сканирования, сокращая выделение памяти на ячейку более чем наполовину. Многопоточное открытие (2.128.0) получило наибольшую выгоду — удаленные выделения памяти были именно теми, которые сериализовали рабочие потоки — теперь на многоядерных машинах книги с несколькими листами открываются почти в два раза быстрее по сравнению с однопоточным путем; однопоточное открытие также выигрывает несколько процентов
Версия 2.131.0
Добавлено
- Блоки расширения листов, которые HotXLS не моделирует — записи
<ext>в<extLst>листа, отличные от спарклайнов, записываемые Excel для таких функций, как условное форматирование x14 или срезы — теперь сохраняются дословно при открытии книги и записываются обратно при сохранении, поэтому повторное открытие и сохранение файла больше не удаляет эти расширения. Перехваченные блоки доступны только для чтения черезWorksheet.RawWorksheetExtsи переносятся вместе с листом при его копировании в другую книгу
Версия 2.130.0
Добавлено
- Сохраненные книги, содержащие формулы, теперь несут в себе часть цепочки вычислений
xl/calcChain.xml, позволяя Excel инициализировать свой механизм зависимостей на основе записанного порядка вместо его перестройки при загрузке. После вызоваRecalculateцепочка следует за топологическим порядком графа зависимостей; в противном случае ячейки с формулами перечисляются в порядке документа (верная подсказка, которую Excel уточняет на лету). Данная часть, ее тип содержимого и связь с книгой выводятся вместе и сохраняются при повторном сохранении (round-trip)
Версия 2.129.0
Добавлено
- Новое свойство
Workbook.ParallelParseThreadsнастраивает количество рабочих потоков для многопоточного пути Open, представленного в версии 2.128.0 (0 = автоматически, один рабочий поток на ядро процессора). Анализ листов требует много ресурсов, а выделение памяти сериализуется между потоками, поэтому на некоторых рабочих нагрузках небольшое явное ограничение работает так же хорошо — или даже лучше — чем полное количество ядер; свойство позволяет интеграторам выбирать оптимальное значение для своих файлов
Версия 2.128.0
Добавлено
- Многопоточная загрузка XLSX: открытие книги теперь выполняет анализ XML каждого листа — это основные затраты для больших файлов — в рабочих потоках, благодаря чему многолистовые книги открываются быстрее на многоядерных машинах. Части листов извлекаются из пакета заранее, и каждый рабочий поток работает только со своим листом, поэтому загруженная книга идентична результату последовательной загрузки
- Новое свойство
Workbook.ParallelParse(по умолчаниюTrue) возвращает к однопоточному анализу при значенииFalseперед вызовомOpen— это отключение одной строкой кода для ограниченных сред
Изменено
- Обратный вызов чтения
OnProgressпо-прежнему срабатывает один раз для каждого листа в вызывающем потоке, но теперь при отправке каждого листа на анализ, а не строго между листами
Версия 2.127.0
Добавлено
- Инкрементный пересчет на движке XLSX: новый метод
Workbook.Recalculateстроит граф зависимостей формул, вычисляет каждую ячейку с формулой один раз в порядке зависимости и сохраняет каждый результат в кэшированном значении ячейки. Последующие вызовы пересчитывают только те ячейки, на которые повлияли изменения значений со времени последнего прохода — в связанных моделях (финансовые таблицы, каскады отчетов) редактирование одного входного значения пересчитывает только зависимые от него формулы вместо пересчета всей книги - Летучие функции (
NOW,TODAY,RAND,OFFSET,INDIRECT) пересчитываются при каждом проходе, так же как и формулы, ссылки которых не могут быть разрешены статически (имена нескольких областей, внешние книги) — движок выполняет избыточный пересчет вместо риска получить устаревший результат - Вместо зацикливания обнаруживаются циклические ссылки:
Recalculateвозвращает код ошибки, когда формулы образуют круговую цепочку, пропускает участников цикла и при этом вычисляет каждую формулу за его пределами. Ссылки между листами, именованные диапазоны и CSE-формулы массивов (результаты распределяются по закрепленному диапазону) полностью участвуют в графе зависимостей
Изменено
- Существующий путь
Calculateпо запросу остался без изменений;Recalculate— это отдельный выбираемый API, и книги, которые никогда его не вызывают, ведут себя точно так же, как раньше
Версия 2.126.0
Добавлено
- Спарклайны в движке XLSX: теперь листы содержат группы спарклайнов — встроенные в ячейки мини-диаграммы, которые Excel отображает на основе диапазона данных — с тремя типами Excel (график, гистограмма, выигрыш/проигрыш). Создайте одну с помощью
Worksheet.AddSparklineGroupили создайте группы вручную через новую коллекциюWorksheet.SparklineGroups, добавляя любое количество спарклайнов в группу с указанием исходного диапазона и ячейки отображения для каждого - Группы спарклайнов предоставляют полный набор параметров, предлагаемых Excel: толщину линий, маркеры точек данных, переключатели выделения максимальных/минимальных/отрицательных/первых/последних точек, восемь слотов цветов ARGB (ряд, отрицательные, ось, маркеры, первый, последний, максимальный, минимальный), масштабирование вертикальной оси для всей группы или для отдельного спарклайна, а также обработку пропусков/нулей/интервалов для пустых исходных ячеек
- Спарклайны сохраняются при полном цикле сохранения и открытия: сохранение выводит блок расширения листа
extLst([MS-XLSX] §2.3.6) со спарклайнами, чтобы Excel 2010 и более поздние версии отображали их, а открытие такой книги — будь она записана HotXLS или Excel — перестраивает каждую группу, параметр и диапазон, обеспечивая их сохранение после циклов редактирования. Копирование листа в другую книгу также клонирует его группы спарклайнов
Версия 2.125.0
Добавлено
- Семь функций работы с текстом с подсчетом байтов DBCS из анализа пробелов XLSSuit теперь вычисляются на обоих движках:
LEFTB,RIGHTB,MIDB,LENB,FINDB,SEARCHBиREPLACEB. Каждая функция обрабатывает входные данные как байтовую строку в соответствии с системной кодовой страницей ANSI, поэтому символы CJK (китайский/японский/корейский) занимают 2 байта, в то время как ASCII занимает 1; операции, которые разделили бы пару начального и конечного байтов DBCS, возвращаются к ближайшей границе символа, соответствуя поведению Excel
Версия 2.124.0
Добавлено
- Пять функций проверки гипотез и функций распределения из анализа пробелов XLSSuit теперь вычисляются на обоих движках:
Z.TEST(односторонняя правосторонняя вероятность того, что среднее значение выборки составляет не менееxпри нулевой гипотезе),T.TEST(p-значение парного двухвыборочного t-теста; несвязанные типы с равной/неравной дисперсией отложены),CHISQ.TEST(p-значение критерия согласия через правостороннюю функцию распределения хи-квадрат CDF),HYPGEOM.DIST(гипергеометрический PMF/CDF с кумулятивным флагом) иNEGBINOM.DIST(отрицательный биномиальный PMF/CDF). Вычисление p-значения повторно использует существующие вспомогательные функции CDF нормального распределения/Стьюдента/хи-квадрат через независимые вложенные процедуры, поэтому ни один из существующих методов Calc не меняется
Версия 2.123.0
Добавлено
- Четырнадцать функций формул, которые при сравнении с XLSSuit были определены как недостающие, теперь вычисляются на обоих движках:
AVERAGEIF(среднее по одному критерию, аналог SUMIF/COUNTIF, которого не хватало движку),WORKDAY.INTLиNETWORKDAYS.INTL(пользовательские маски выходных дней с помощью числовых кодов 1-17 или 7-символьной строки Mon-Sun),XIRRиXNPV(внутренняя ставка доходности и чистая приведенная стоимость для денежных потоков с нерегулярными датами, решаемые методом дихотомии),CEILING.PRECISE/FLOOR.PRECISE/ISO.CEILING(округление без учета знака),PERCENTRANK.INC/PERCENTRANK.EXC(процентный ранг с соответствующей включающей/исключающей интерполяцией),MODE.MULT(выводит все значения с одинаковой максимальной частотой),ERF.PRECISE(функция ошибок Гаусса через ее знакочередующийся ряд),ACCRINT(накопленные проценты) иISPMT(проценты за период при амортизации с постоянной основной суммой)
Версия 2.122.0
Добавлено
- Вложенные комментарии (Excel 365) теперь сохраняются при повторном сохранении (round-trip) в движке XLSX: методы
AddThreadedCommentиAddThreadedReplyна листе строят родительско-дочернее дерево ответов с привязкой к ячейке, автоматически регистрируют каждого автора в новом спискеPersonsна уровне книги и выводят выделенную частьxl/threadedComments/threadedCommentN.xmlдля каждого листа плюсxl/person/person.xmlна уровне книги; повторное открытие такого пакета восстанавливает дерево диалогов и список участников из этих частей, поэтому цепочки ответов, идентификаторы и отображаемые имена сохраняются при полном цикле чтения и записи
Версия 2.121.0
Добавлено
- Вычислитель формул теперь рассчитывает функции динамических массивов Excel 365:
XMATCH,SORT,UNIQUEиSEQUENCE, присоединяясь к уже поддерживаемымXLOOKUPиFILTER; результаты распределяются как двумерные массивы, поэтомуSEQUENCE(3;2;1;1)возвращает сетку 3×2,SORTпереупорядочивает строки по любому ключевому столбцу по возрастанию или убыванию,UNIQUEсворачивает повторяющиеся строки, сохраняя первое вхождение, аXMATCHсообщает позицию искомого значения (начиная с 1) с теми же режимами точного совпадения, использования подстановочных знаков, следующего меньшего или следующего большего, что иXLOOKUP
Версия 2.120.0
Добавлено
- Новый метод
PasteFromClipboardна листах обоих движков считывает текст с разделителями-табуляциями из буфера обмена Windows — полезную нагрузку, которую Excel помещает туда при копировании диапазона, или просто выделение из любого другого приложения — и записывает его в ячейки, начиная с заданных строки и столбца, с тем же приведением числовых, календарных и логических типов данных, которое уже использует загрузчик CSV; текст с ведущим знаком=становится действующей формулой, аналогично тому, как выполняет вставку сам Excel
Версия 2.119.0
Добавлено
- Чтение шифрования ECMA-376 Agile Encryption — защиты паролем, которую Excel 2010 и более поздние версии применяют по умолчанию:
OpenEncryptedтеперь анализирует дескриптор шифрования XML, извлекает ключи с помощью хеширования SHA-512 с числом итераций, проверяет пароль и расшифровывает сегментированный пакет AES-CBC (AES-128/192/256), благодаря чему книги, защищенные паролем непосредственно в Excel, открываются без установленного Excel OpenEncryptedобрабатывает все три случая через единую точку входа: обычный незашифрованный.xlsx, Standard Encryption (наш циклSaveAsEncrypted) и Agile Encryption; неверный пароль вызывает одну и ту же понятную ошибку в любой схеме
Исправлено
- Сохранение книги
.xlsx, размер XML-файла листа которой превышал примерно 116 KB — около 3000 строк обычных строковых данных — приводило к сбою с переполнением стека; контрольная сумма CRC-32 модуля записи ZIP теперь обрабатывает данные частями по 64 KB, что уводит бэкенд сжатия с его пути кода больших входных данных, который выделяет избыточный рабочий буфер в стеке. Результат вычисления контрольной суммы не изменился
Изменено
- Дедупликация общих строк теперь выполняется через хэш-таблицу вместо сканирования списка строк, а часть
sharedStrings.xmlсобирается с помощью предварительно увеличенного построителя строк вместо многократного объединения — вместе с константным временем обращения к индексу ячеек это сокращает время сохранения 120 000 ячеек со строками с десятков секунд примерно до трети секунды
Версия 2.117.0
Изменено
- XLSX ячейка access является now constant-time: лист ячейка коллекция carries hash индекс over (строка, столбец), replacing previous linear scan — so populating, reading back, или loading large лист scales linearly с ячейка count instead из quadratically; filling 100,000 ячейки now takes well under second where it previously took minutes
- speedup applies across engine:
Cells[r, c],HasCell, книга loading, saving, cross-книга copies, auto-fit, и каждый helper который touches ячейки через position all benefit; строка и столбец insertion или deletion rebuilds индекс в single pass
Версия 2.116.0
Добавлено
- PDF export в классический XLS engine: new
SaveAsPDFметоды on лист и книга render используемый диапазон (или caller-supplied диапазон черезTXLSPDFExport) as paginated grid — ячейка display текст через number формат, gridlines, столбец widths derived из Excel widths и scaled к fit страница, и automatic multi-страница pagination - Output является self-contained PDF 1.4 файл с no external dependencies, с помощью built-в Helvetica шрифт с WinAnsi текст encoding; portrait или landscape A4 orientation, страница margin, и шрифт size являются configurable on exporter
- этот является data-presentation export alongside HTML и RTF: it reproduces tabular content и layout для reports и document handoff rather than full per-ячейка styling
Версия 2.115.0
Добавлено
- один-call chart creation из data диапазон в XLSX engine: new
AddChartFromRangebuilds complete chart и derives its series automatically из rectangular data block — equivalent из Excel's "insert chart из selection" — с series-в-столбцы или transposed series-в-строки layout - Named shortcuts
AddColumnChart,AddBarChart,AddLineChart,AddPieChart, иAddAreaChartpick chart type через имя over same один-call flow, reading series names из header строка и category labels из first столбец - Series references являются qualified с source лист's quoted имя, so generated chart keeps working когда placed on any лист и survives save и reload
Версия 2.114.0
Добавлено
- RTF import в классический XLS engine, inverse для существующий
SaveAsRTFexport: newOpenRTFметоды on лист и книга read RTF document's table в лист ячейки —\celladvances столбец,\rowadvances строка — starting at A1 - Recovers tabular data из файлы produced через
SaveAsRTF, Word, или WordPad: numeric текст является stored as номера so формулы keep working, hex (\'hh) и Unicode (\uN) escapes decode correctly, и header groups (шрифт table, цвет table, stylesheet, info) являются skipped - Documents с no table fall back к paragraph mode, importing each
\paras next строка в столбец
Версия 2.113.0
Добавлено
- Reading из encrypted
.xlsxкниги:OpenEncryptednow decrypts ECMA-376 Standard Encryption (AES-128) packages, completing round trip с существующийSaveAsEncrypted— it reads compound-файл container, derives key из пароль, verifies it, и loads recovered книга - wrong пароль raises clear "пароль является incorrect" error, и
OpenEncryptedon plain unencrypted.xlsxcontinues к load it directly, so callers может route каждый файл через один запись point
Изменено
- unsupported-encryption message now names ECMA-376 Agile Encryption specifically as remaining unsupported scheme, since Standard Encryption reading и writing являются both доступен
Версия 2.112.0
Добавлено
- New
TaggedTextсвойство on XLSX ячейки converts between rich текст и lightweight markup:<b>,<i>,<u>,<s>,<sub>,<sup>,<color=#RRGGBB>,<font=Name>, и<size=N>, с</>/&escapes — so multi-формат ячейка content может be produced из template String instead из assembling run объекты через hand - Writing markup builds run list и keeps
Valueas concatenated plain текст; markup без tags stores plain String с no rich payload; reading serializes each run's attributes as complete tag задает; unknown tags pass через as literal текст
Исправлено
- rich-текст run consisting entirely из whitespace (для example single styled space between words) now survives save и reload; previously space was dropped когда файл was reopened
Версия 2.111.0
Добавлено
- New
OnProgressсобытие on XLSX книга reports load и save progress: it fires once per лист as it является parsed duringOpenили emitted duringSaveAs, carrying phase (reading или writing), current 1-основанный лист number, и total — so applications может drive progress bar over long multi-лист operations at negligible callback cost
Версия 2.110.0
Добавлено
- New
TXLSRowCursordataset-стиль строка cursor для.xlsx/.xlsmфайлы:Open,SelectSheet, thenFindFirst/FindNextwalk лист один строка at time с только current строка's ячейки в memory — pull-driven alternative кTXLSDirectReader's callbacks для sequentially processing multi-million-строка листы - Each строка exposes its 1-основанный лист строка number, populated ячейки в document order (типизированный значение, формула текст, стиль индекс), и
ValueByCollookup который возвращаетNullдля столбцы not populated on который строка; строки с no populated ячейки являются skipped - лист names и count являются доступен after
Open(файл и stream overloads), с shared strings и date-формат detection handled same way as streaming reader
Версия 2.109.0
Добавлено
- New
TXLSXCellFormat"формат brush" для XLSX engine: describe шрифт, fill, граница, alignment, number формат, и protection once, then stamp any number из targets сApply(single ячейка),ApplyRange,ApplyRows,ApplyCols, илиApplySheet - только aspects actually touched являются applied — brush который задает just
Font.Boldleaves targets' fills, границы, и number форматы untouched — so brushes compose с существующий formatting like Excel's формат painter - Each apply resolves touched aspects в книга стиль pools once и then writes только pool indices per ячейка, so formatting large диапазоны costs один pool lookup per aspect rather than per ячейка;
ApplyRangematerializes missing ячейки пока строка/столбец/лист forms stamp существующий ячейки только
Версия 2.108.0
Добавлено
- Localizable Boolean display текст: new
XLSBooleanTrueText/XLSBooleanFalseTextvariables control how Boolean ячейка значения render wherever display текст является produced —FormattedText, HTML export, и auto-fit measurement — so localized applications может show для example WAHR/FALSCH или VRAI/FAUX
Изменено
- Boolean ячейки now display as
TRUE/FALSEчерез default, matching Excel's grid, instead для runtime'sTrue/Falsecapitalization
Версия 2.107.0
Добавлено
- New
OnPasswordсобытие on классический XLS книга: когдаOpenmeets encrypted книга и supplied пароль является missing или wrong, событие asks application для пароль и retries open (up к three attempts) — so interactive tools может prompt user instead из pre-loading passwords или inspecting error codes - событие receives current пароль через справочник и
Retryflag; leavingRetryatFalsegives up и возвращает original пароль error
Версия 2.106.0
Добавлено
- New
TXLSFileMonitorкласс watches книга файл on disk и firesOnFileChangedкогда another process — typically Excel — saves over it, so applications может reload и refresh their view automatically - Polling-основанный (last-write time plus size,
IntervalMsconfigurable, 1 s default), so it works on local disks и network shares alike без message loop;SynchronizeEventchooses between main-thread delivery для UI handlers (default) и direct watcher-thread delivery для console или service code - файл который briefly disappears during save cycle does not fire false событие; change является reported once new content является в place
Версия 2.105.0
Добавлено
- Bounded auto-fit в классический XLS engine, matching limits XLSX engine already offers: new
AutoFit(Columns, AMin, AMax),ColumnsAutoFit(AMinWidth, AMaxWidth), иRowsAutoFit(AMinHeight, AMaxHeight)overloads clamp каждый fitted столбец ширина (Excel ширина units) или строка высота (points) к given диапазон — 0 leaves side unbounded, и all-empty столбец или строка still receives requested minimum
Версия 2.104.0
Добавлено
- New Только чтение
FormattedTextсвойство Возвращает ячейка's display текст — stored значение rendered через its number формат, way Excel shows it в grid — covering thousands separators, decimals, percentages, date и time masks, multi-section positive/negative/zero masks, и Boolean форматы - доступен в both engines: on
IXLSRangeв классический XLS engine (multi-ячейка диапазоны render their anchor ячейка) и onTXLSXCellв XLSX engine (rich-текст ячейки вернуть their concatenated run текст)
Версия 2.103.0
Добавлено
- New
DetectExcelContentFormatфункция (файл имя и stream overloads) identifies книга's container из its leading bytes rather than файл extension — reporting BIFF/OLE compound файл, OOXML.xlsxpackage, OpenDocument.odspackage, или plain delimited текст — so applications может route renamed или extension-less файлы к right loader
Изменено
TXLSWorkbook.Opennow sniffs content signature и rejects ZIP-основанный packages (.xlsxили.odsrenamed к.xls) с clear message naming right loader, instead из failing с opaque error codeTXLSXWorkbook.Opennow recognizes OLE compound-файл content (legacy.xlsrenamed к.xlsx, или encrypted package) и reports what файл actually является, instead из surfacing ZIP parser error
Версия 2.102.0
Добавлено
- Cross-книга лист copy в классический XLS (BIFF8) engine now brings книга-level defined names формула uses over к destination — same thing Excel does когда лист moves between книги: имя destination already has является bound as-является (no duplicate является created), missing имя является registered с its original definition и visibility so формула recompiles against it, и имя whose definition cannot resolve в destination (для example, it points at лист который does not exist there) leaves формула on its computed значение as before
Версия 2.101.0
Добавлено
- Cross-книга лист copy в классический XLS (BIFF8) engine now re-points формулы at source книга as external link когда destination has no лист для referenced имя и source has been saved к файл: copied ячейка stays live формула (its references switch к [SourceBook]лист form), source's computed значение является kept as cached result so reads keep working until link является refreshed, и external книга справочник round-trips через save и reload; формулы carrying defined-имя references, и copies из unsaved source книги, keep computed значение as before
Версия 2.100.0
Добавлено
- Array формулы now survive лист copies в классический XLS (BIFF8) engine: each array диапазон является rebuilt as whole в copy — within same книга и across книги alike — с root формула recompiled against destination's лист names; array destination cannot recompile keeps its computed значения instead
Исправлено
- Copying диапазон который содержит array-формула ячейки between классический XLS листы no longer risks crash on spill ячейки (which carry no формула tree из their own); such ячейки now transfer their computed значение
Версия 2.99.0
Добавлено
- Chart листы может now be copied between классический XLS (BIFF8) книги: chart record stream является cloned в destination, series category / значение / имя references являются recompiled against destination's лист names (series whose лист has no same-имя counterpart falls back к empty справочник so файл still opens), chart шрифт references migrate через значение в destination шрифт table, и страница setup, tab цвет, zoom, и visibility для chart лист come along; этот removes last documented limitation для cross-книга лист copy
Версия 2.98.0
Добавлено
- Cross-книга лист copy в классический XLS (BIFF8) engine now preserves rich-текст formatting inside ячейки: each formatting run's шрифт является migrated через значение в destination книга's шрифт table и run является rewritten к point at it, so mixed-шрифт strings keep their appearance instead из falling back к plain текст; phonetic (Far-East) auxiliary data travels с String as well
Исправлено
- шрифты referenced только через rich-текст runs (и not через any ячейка формат) являются no longer dropped из шрифт table когда saving классический XLS книга, и runs now follow same шрифт reordering as ячейка форматы on save, so rich-текст strings keep correct шрифты after save/reload cycle
Версия 2.97.0
Добавлено
- Cross-книга лист copy в классический XLS (BIFF8) engine now also clones embedded pictures: image bytes migrate в destination книга's picture store (identical images являются shared rather than duplicated), и each picture frame keeps its ячейка anchor, size, visibility, и transparent цвет; new CrossWorkbookCopyXls sample project demonstrates классический-engine copy end к end
Изменено
- классический XLS cross-книга copy limitations являются now documented: chart листы являются not copied (AddCopy возвращает nil для them), и формула whose лист справочник has no same-имя лист в destination keeps source's computed значение instead из becoming external справочник
Версия 2.96.0
Добавлено
- Cross-книга лист copy в классический XLS (BIFF8) engine now also clones conditional форматы (ячейка-является и expression rules, data bars, цвет scales, icon задает, и their differential styles), data validations (list, numeric, date, текст-length, и custom rules с prompt и error boxes), AutoFilter definition с its per-столбец criteria (dropdown buttons являются rebuilt в copy), и таблицы (ids и names являются re-issued so they stay unique в destination книга); rule формулы являются recompiled against destination's лист names, matching behavior из ячейка формулы
Версия 2.95.0
Добавлено
- классический XLS (BIFF8) листы может now be copied из один книга в another: TXLSWorksheets.AddCopy добавляет new лист к destination книга и copies source лист's ячейка значения, формулы (re-encoded as текст so destination recompiles them against its own лист names, keeping same-имя 3D references live), merged ячейки, комментарии, гиперссылки, строка heights, столбец widths, outline levels, frozen panes, лист protection, страница setup, manual страница breaks, tab цвет, и view settings; ячейка, строка, и столбец форматы являются migrated через значение в destination книга's формат table, so styled source produces independently styled copy
- Cross-книга формат migration в классический XLS engine now carries full-precision RGB и тема цвета alongside each формат запись, so fills, шрифты, и границы keep their exact цвета instead из falling back к palette approximations; этот also applies к диапазон-level paste between книги
Версия 2.94.0
Добавлено
- Cross-книга лист copy now clones conditional форматы (с their differential styles и dataBar / colorScale / iconSet visual payloads), таблицы, data validations, и charts (с каждый series); each sub-объект deep-copies its own state в destination лист
- Cross-книга формула references являются rewritten: справочник whose лист имя exists в destination resolves as-является, otherwise it becomes external справочник back к source книга (which является registered as external link) или #REF! когда source has no файл identity; rewrite applies к ячейка формулы, conditional-формат rules, data-validation формулы, и chart series диапазоны alike
Версия 2.93.0
Добавлено
- лист может now be copied из один книга в another: TXLSXSheets.AddCopy добавляет new лист к destination книга и copies source лист's ячейки, формулы, merged диапазоны, столбец/строка sizing, hidden/collapsed/outline flags, freeze panes, view state, protection, страница setup, AutoFilter диапазон, и tab colour onto it; six per-ячейка стиль indices являются remapped в destination книга's own шрифт/Fill/граница/NumberFormat/Alignment/Protection pools via значение-equality lookup, so styled source produces independently-styled copy rather than indices pointing at wrong pool
- six per-attribute стиль pools (шрифты, Fills, границы, NumberFormats, Alignments, Protections) each expose 1-основанный LookupOrAdd который deduplicates через значение; new CrossWorkbookCopy sample project demonstrates cross-книга copy с стиль сохранение
Версия 2.92.0
Добавлено
- XLSX книги now поддержка сводные таблицы: TXLSXWorksheet.AddPivotTable scans flat source диапазон, auto-builds pivot cache, и Возвращает типизированный сводная таблица для строка / столбец / страница / data-axis wiring, mirroring long-standing BIFF8 (XLS) engine API so same code targets either формат; PivotSetDataFieldFormat assigns number формат к each aggregated значение field
- Excel-created сводные таблицы круговой обмен без loss через Open then Save: XLSX engine preserves each pivot cache definition, cache records, и сводная таблица part verbatim и replays original bytes on save, so re-saving книга never drops или alters its pivots even когда they use возможности типизированный модель does not expose
Версия 2.91.0
Добавлено
- Автофильтр рабочего листа теперь можно применять к данным, так что сохраненная книга открывается с уже скрытыми несовпадающими строками, аналогично поведению Excel при выборе значения из выпадающего списка фильтра
- Встроенные изображения предоставляют свою геометрию в реальных единицах (сантиметрах, дюймах, пунктах) наряду со значениями EMU, и их размер можно изменять с помощью коэффициента масштабирования с возможностью сохранения пропорций
- Поля параметров страницы теперь можно задавать напрямую в сантиметрах в качестве удобной метрической альтернативы полям в дюймах
- Защищенные рабочие листы XLSX теперь предоставляют пятнадцать детальных переключателей разрешений (форматирование ячеек, вставка/удаление строк и столбцов, сортировка, AutoFilter, выделение заблокированных/разблокированных ячеек и другие) через новое свойство AllowOption, что соответствует списку флажков в Excel «Рецензирование» > «Защитить лист»; настройки для каждого действия сохраняются при записи и чтении файла
- Рабочие листы XLSX теперь можно дублировать (TXLSXSheets.Duplicate): добавляется новый лист, на который копируются ячейки исходного листа, объединенные диапазоны, размеры столбцов/строк, закрепленные области, состояние просмотра, защита, параметры страницы и цвет вкладки, аналогично команде Excel: щелчок правой кнопкой мыши > «Переместить или скопировать» > «Создать копию»
- Двадцать два новых примера проектов демонстрируют возможности библиотеки: шифрование книги, комментарии к ячейкам, гиперссылки, определенные имена, вычисление AutoFilter, встроенные изображения, шаблон счета-фактуры, расширенное условное форматирование XLSX, объединенные ячейки, группировка строк/столбцов, закрепленные области, многолистовая структура, формулы массива, копирование/перемещение диапазонов, поиск/замена, системы дат, rich text, расширенные параметры CSV, параметры экспорта HTML, пользовательские числовые форматы, скрытые строки/столбцы и защита рабочего листа
Версия 2.90.29
Изменено
- Потоковый прямой читатель теперь подсчитывает каждую заполненную ячейку, даже если обработчик для отдельных ячеек не прикреплен, поэтому обычный вызов ReadFile можно использовать для быстрого определения размера листа; возвращаемое количество и свойство CellCount сообщают о числе отсканированных заполненных ячеек
Версия 2.90.28
Добавлено
- Формулы теперь можно вычислять пошагово, что эквивалентно команде Excel «Вычислить формулу»: новый трассировщик сокращает выражение по одному подшагу за раз, начиная с самого внутреннего, и сообщает о каждом сокращении вместе с его исходным подвыражением, тем же подвыражением после замены операндов их значениями и результирующим значением, чтобы приложения могли показать, как формируется результат; он соблюдает приоритет операторов, сохраняет ссылки на диапазоны нетронутыми для таких функций, как SUM, и повторно использует механизм вычислений листа, так что каждый шаг совпадает с полным перерасчетом
Версия 2.90.27
Добавлено
- Книги XLSX теперь можно создавать ячейка за ячейкой с помощью нового потокового прямого писателя, который выводит каждый лист прямо в пакет по мере поступления строк, не создавая полное дерево ячеек в памяти, поэтому очень большие файлы можно генерировать с почти постоянным потреблением памяти; писатель обрабатывает встроенные строки, числа, логические значения, даты и формулы на нескольких листах и взаимодействует с потоковым прямым читателем
Версия 2.90.26
Добавлено
- Книги XLSX теперь можно сканировать ячейка за ячейкой с помощью нового потокового прямого читателя, который вызывает события для каждой ячейки и каждого листа без создания полного дерева ячеек в памяти, поддерживая почти постоянное потребление памяти для очень больших файлов; каждая сообщаемая ячейка несет свое значение, тип (число, строка, логическое значение, дата или ошибка), текст формулы и индекс стиля, с дополнительным распознаванием дат и поддержкой раннего прерывания
Версия 2.90.25
Добавлено
- Классические листы XLS теперь могут добавлять гиперссылки из ссылок на ячейки в стиле A1 с сохранением нормализации URL-адресов, целевых подадресов книг, отображаемого текста и всплывающих подсказок
Версия 2.90.24
Добавлено
- Разрывы страниц Classic XLS теперь можно добавлять из позиций строк или столбцов с индексацией от 1 и ссылок на ячейки в стиле A1 с помощью перегрузок коллекции разрывов страниц и вспомогательных функций рабочего листа
Версия 2.90.23
Добавлено
- Рабочие листы и коллекции фигур Classic XLS теперь могут создавать объекты рисования прямоугольников, овалов, линий и типизированных автофигур из строк диапазонов в стиле A1
Версия 2.90.22
Добавлено
- Коллекции фигур Classic XLS теперь могут создавать текстовые поля из строк диапазонов в стиле A1 с помощью перегрузки AddTextBox
Версия 2.90.21
Добавлено
- Текстовые поля Classic XLS теперь можно перепозиционировать из строк диапазонов в стиле A1 с помощью новой перегрузки SetArea
Версия 2.90.20
Добавлено
- Текстовые поля рабочего листа Classic XLS теперь можно создавать из строк диапазонов в стиле A1 с помощью перегрузки AddTextBox
Версия 2.90.19
Добавлено
- Рабочие листы Classic XLS теперь могут создавать текстовые поля для рисования непосредственно из привязок к строкам и столбцам с помощью нового метода AddTextBox
Версия 2.90.18
Добавлено
- Рабочие листы Classic XLS теперь могут создавать комментарии к ячейкам непосредственно из координат строк и столбцов с помощью новых перегрузок AddComment