Excelize — это библиотека, написанная на чистом Go, предоставляющая набор функций, позволяющих записывать и читать файлы XLSX/XLSM/XLTM. Поддерживает чтение и запись электронных таблиц, созданных Microsoft Excel 2007 и более поздних версий. Поддерживает сложные компоненты за счет высокой совместимости и предоставляет потоковый API для создания или чтения данных с рабочего листа с огромными объемами данных.

GitHub: github.com/xuri/excelize

Мы рады сообщить о выпуске версии 2.5.0. Представлены несколько новых областей функциональности и многочисленные исправления ошибок.

Сводка изменений доступна в Release Notes. Полный список изменений доступен в changelog.

Примечания к выпуску

Наиболее заметные изменения в этом релизе:

Совместимость

  • Требуется закрыть электронную таблицу и итератор строки, пользователь должен закрыть поток после использования итератора строки и закрыть электронную таблицу после открытия существующей электронной таблицы.
  • Измените ReadZipReader как реализацию File, извлеките электронную таблицу с заданными параметрами и поддержите извлечение в память или обращение к файловой системе.
  • Удалите ненужную экспортируемую переменную XMLHeader, мы можем использовать вместо нее xml.Header пакета encoding/xml
  • Удалить неиспользуемую экспортированную переменную ошибки ErrToExcelTime

Примечательные особенности

  • Новый API: SetRowStyle поддержка заданного стиля для строк, связанная проблема №990.
  • Новый API: GetCellType поддержка получения типа данных ячейки, связанная проблема № 417 и № 520.
  • Новый API: поддержка SetAppProps и GetAppProps для установки и получения свойств приложения документа, связанная проблема № 1095.
  • GetCellValue, GetRows, GetCols, Rows и Cols поддерживают указание прочитанной ячейки с необработанным значением, связанная проблема № 621
  • Новая поддержка 95 формул: ACCRINT, ACCRINTM, ADDRESS, AMORDEGRC, AMORLINC, AVEDEV, AVERAGEIF, CHIDIST, CONFIDENCE, CONFIDENCE.NORM, COUNTIF, COUNTIFS, COUPDAYBS, COUPDAYS, COUPDAYSNC, COUPNCD, COUPNUM, COUPPCD, DATEVALUE, DAY, DAYS, DELTA, DEVSQ, DISC, DURATION, ERF, ERF.PRECISE, ERFC, ERFC.PRECISE, GEOMEAN, GESTEP, IFNA, IFS, INDEX, INTRATE, ISFORMULA, ISLOGICAL, ISREF, ISOWEEKNUM, MATCH, MAXA, MAXIFS, MDURATION, MINIFS, МИНУТА, МЕСЯЦ, ОПЦИОНАЛЬНАЯ ЦЕНА, ПРОЦЕНТИЛЬ.ИСКЛ, ПРОЦЕНТРАНГ.ИСКЛ, ПРОЦЕНТРАНГ.ВКЛ, ПРОЦЕНТРАНГ, ЦЕНА, ЦЕНАДИСКА, ЦЕНАМАТ, PV, КВАРТИЛЬ.ИСКЛ, РАНГ, РАНГ.EQ, СТАВКА, ПОЛУЧЕНО, RRI, ЛИСТЫ, SLN, СТАНДАРТИЗАЦИЯ, STDEV.P, STDEVP, SWITCH, SYD, TBILLEQ, TBILLPRICE, TBILLYIELD, TEXTJOIN, TIME, TRANSPOSE, TRIMEEAN, VALUE, VAR, VAR.S, VARA, VARPA, VDB, WEEKDAY, WEIBULL, WEIBULL.DIST, XIRR, XLOOKUP, XNPV, XOR, YEAR, YEARFRAC, YIELD, YIELDDISC, YIELDMAT, Z.TEST, ZTEST, связанная проблема № 1002
  • Механизм вычисления формулы поддерживает вложенный калькулятор для формулы IF, связанная проблема № 987.
  • Поддержка механизма расчета формулы получить общую формулу, связанная проблема № 844
  • Механизм вычисления формулы поддерживает сравнение текста, связанная проблема № 998
  • Поддержка указания формулы в диапазоне проверки данных, связанная проблема № 1012.
  • Поддержка заданного ограничения размера разархивированного файла для параметров открытого файла, предотвращение атаки уязвимости zip-бомбы
  • SetCellFormula теперь поддерживает установку общей формулы
  • UpdateLinkedValue пропустит лист макросов, связанный с проблемой № 1014.
  • Исправление AddPicture в некоторых случаях создавало повторяющееся изображение, вызванное неправильным расчетом идентификатора внутренних отношений, связанная проблема № 1017.
  • AddShape поддержка установки ширины линии для добавления формы, связанная проблема №262
  • Добавлены новые параметры UnzipXMLSizeLimit, поддержка указания ограничения памяти при распаковке рабочего листа и таблицы общих строк в байтах.
  • Будет возвращена ошибка, если при создании нового стиля указан недопустимый пользовательский формат числа, связанная проблема № 1028.
  • Теперь поддерживается установка стиля строки в потоковом писателе.
  • Stream Writer создаст формат числа времени для ячеек типа времени, связанная проблема № 1107.
  • Теперь поддерживается указание компактности и структуры для сводной таблицы, связанная проблема № 1029.
  • Поддержка получения текущих строк/столбцов и общего количества строк/столбцов в средстве чтения потока, связанный с PR #1054.
  • Теперь поддержка местоположения часового пояса при установке значения ячейки, связанная проблема № 1069.
  • Экспортируйте 7 ошибок, чтобы пользователи могли по-разному реагировать на разные типы ошибок.

Улучшить совместимость

  • Улучшить совместимость с элементом строки с атрибутом r="0"
  • Сохранить управляющий символ XML
  • Улучшение совместимости настроек стиля с Apple Numbers, связанная проблема № 1059.
  • Поддержка многобайтового языка в нижнем колонтитуле набора, связанная проблема № 1061.
  • Сохранение символа горизонтальной табуляции при установке значения ячейки, связанная проблема № 1108

Исправление ошибок

  • Исправьте ошибку удаления проверки данных, устраните проблему № 979.
  • Исправить сбой раскрывающегося списка проверки данных в некоторых случаях, решить проблему № 986.
  • Исправить механизм расчета формулы LOOKUP неправильно обрабатывает форму массива, решить проблему № 994
  • Исправить механизм расчета формулы LOOKUP, который может найти только точное совпадение, решить проблему № 997.
  • Исправьте проценты формулы, рассчитанные неправильно, устраните проблему № 993.
  • Исправить панику, вызванную неправильным чтением ячейки в некоторых случаях
  • Исправить условный формат снизу N, который не работает
  • Исправить проблему с точностью анализа времени, решить проблему № 1026 и № 1030.
  • Не удалось исправить встроенный формат научного числа, решить проблему № 1027.
  • В некоторых случаях исправить небольшую ошибку синтаксического анализа с плавающей запятой, решить проблему № 1031.
  • Исправить удаление рабочего листа не удалось в некоторых случаях
  • Исправлена ​​ошибка синтаксического анализа встроенного формата числа времени, решена проблема № 1060.
  • Исправлена ​​ошибка, из-за которой NewStyle в некоторых случаях возвращал неверный идентификатор стиля.
  • Исправить ошибку объединенного диапазона ячеек после вставки/удаления строки/столбца в некоторых угловых случаях

Производительность

  • Ускорение затрат времени на слияние ячеек, снижение затрат времени более чем на 90%
  • Повышение производительности потокового чтения, распаковка таблицы общих строк во временный системный файл при большом внутреннем XML, использование памяти уменьшилось примерно на 60%, связанная проблема № 1096
  • Ускорение чтения списка рабочих листов
  • Объедините стили столбцов, чтобы уменьшить размер электронной таблицы, решить проблему № 1057.

Разнообразный

  • Обновлен модуль зависимостей.
  • Обновлены модульные тесты и годок
  • Веб-сайт документации с многоязычным: арабским, немецким, испанским, английским, французским, русским, китайским, японским и корейским, который был обновлен