9 окт. 2019 г.

Работа с файлами формата MS Excel в программе под Linux

    Продолжая тему обработки файлов формата MS Excel в программах на Delphi, поговорим об их обработке в программе под Linux. Такую возможность программистам на Delphi предоставляет библиотека TMS FlexCel. Она позволяет работать с файлами формата MS Excel под всеми операционными системами, под которые Delphi умеет создавать исполняемый файл: Windows, Linux, Android и iOS.

    Для использования TMS FlexCel под Linux необходимо сделать три подготовительные действия:
  1. установить на машине с Linux, если они не установлены, библиотеки "build-essential" и "zlib1g-dev". Для Ubuntu это делается так:
    sudo apt-get install build-essential
    sudo apt-get install zlib1g-dev
  2. В Delphi установить Linux SDK. Если он установлен раньше без build-essential и zlib1g-dev, то его нужно обновить. Для обновления Linux SDK в SDK Manager нужно нажать кнопку "Update Local File Cache".
  3. В Delphi установить TMS FlexCel с включённым параметром "Linux 64".
    Теперь создаём новое консольное приложение, в USES которого добавляем "{$IFDEF MSWINDOWS}VCL.FlexCel.Core{$ELSE}FlexCel.Core{$ENDIF}" и наслаждаемся работой с файлами в формате MS Excel под Windows и под Linux...

    Но в этой бочке мёда есть своя ложка дёгтя. Функционал этой программы под Linux ограничен. Мы можем читать/записывать файлы xls/xlsx и проводить над ними только те операции, которые не требуют поддержки графики. Например, под Linux в нашей программе перестанут работать все функции, которым нужно измерить длину или высоту текста. Таким образом, вызов метода AutofitCol для расчёта ширины колонок приведет к ошибке:
FlexCel has not been initialized for the current platform. Make sure you add "uses VCL.FlexCel.Core", "uses FMX.FlexCel.Core" or "uses SKIA.FlexCel.Core" to your uses list
Для полноценной работы TMS FlexCel под Linux требуется графическая библиотека Skia. Skia - это open-source библиотека для работы с 2D-графикой. Она является графическим движком для Google Chrome, Chrome OS, Android, Mozilla Firefox, Firefox OS и многих других программных продуктов.

    Если вы решили использовать Skia, то:
  1. в USES программы замените "{$IFDEF MSWINDOWS}VCL.FlexCel.Core{$ELSE}FlexCel.Core{$ENDIF}" на "{$IFDEF MSWINDOWS}VCL.FlexCel.Core{$ELSE}SKIA.FlexCel.Core{$ENDIF}".
  2. в каталог с вашей программой на машине с Linux скопируйте файл с движком Skia - "FlexCel\ThirdParty\Skia\Linux64\libflexskia.so.3".
  3. установите на машине с Linux библиотеки, которые Skia требует для своей работы. Например, zlib и fontconfig.
    В результате под Linux мы можем использовать почти весь функционал TMS FlexCel для Windows. Исключением являеюся лишь: поддержка зашифрованных файлов, функция предварительного просмотра и функция печати.

Комментариев нет: