Для начала разберемся с проблемой, которая стоит перед разработчиками, использующими Excel 2003 для работы с файлами нового формата, начиная с Office 2007. Эти форматы файлов включают .xlsx, .xlsm и .xlsb. Excel 2007 и более новые версии могут работать с этими расширениями без дополнительных утилит, но для Excel 2003 необходимо установить дополнительный пакет совместимости.
Проверка версии Excel и установленного пакета совместимости
Для решения этой задачи необходимо сначала определить версию установленного Excel, и если это Excel 2003, проверить, установлен ли пакет совместимости. В примере кода ниже показано, как это можно сделать, используя Object Pascal в среде Delphi.
uses
SysUtils;
function IsOffice2007CompatibilityPackInstalled: Boolean;
var
WSHShell: OLEVariant;
RegKey, rKeyWord: string;
begin
WSHShell := CreateOleObject('WScript.Shell');
RegKey := 'HKEY_CLASSES_ROOT\Installer\Products\00002109020090400000000000F01FEC\';
try
rKeyWord := WSHShell.RegRead(RegKey & 'ProductName');
except
// Игнорирование ошибки, если ключ не найден
end;
Result := (rKeyWord = 'Compatibility Pack for the 2007 Office system');
end;
procedure LoadExcelFile(const sFileNameVorlage: string);
var
oVersionscheck: TOleObject;
begin
if (ExtractFileExt(sFileNameVorlage) = '.xlsx') or
(ExtractFileExt(sFileNameVorlage) = '.xlsm') or
(ExtractFileExt(sFileNameVorlage) = '.xlsb') then
begin
// Определение версии Excel
oVersionscheck := CreateOleObject('Excel.Application');
try
if StrToIntDef(Copy(oVersionscheck.version, 1, 2), 0) <= 11 then
begin
// Если версия Excel 2003, проверяем установлен ли пакет совместимости
if not IsOffice2007CompatibilityPackInstalled then
begin
ShowMessage('Предупреждение: Excel не может открыть этот файл.');
Exit;
end;
end;
finally
oVersionscheck.Quit;
oVersionscheck := nil;
end;
end;
// Дальнейший код по работе с файлом
end;
Инструкция по использованию
Чтобы добавить поддержку форматов Office 2007 в Excel 2003, необходимо выполнить следующие шаги:
Интегрировать функцию IsOffice2007CompatibilityPackInstalled в ваш код для проверки наличия пакета совместимости перед открытием файлов в форматах .xlsx, .xlsm и .xlsb.
Этот код можно использовать в проектах, написанных на Delphi, для проверки наличия пакета совместимости Office 2007 перед попыткой открытия файлов, созданных в более новых версиях Office.
Установка пакета совместимости для работы Excel 2003 с файлами Office 2007.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.