Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

**Настройка листа Excel для соответствия ширине страницы при экспорте в PDF на Delphi**

Delphi , Технологии , OLE

Настройка листа Excel для соответствия ширине страницы при экспорте в PDF на Delphi

При работе с Excel через Delphi и при экспорте его листов в PDF часто возникает необходимость настроить лист таким образом, чтобы он корректно отображался на странице. Одним из способов достижения этого является использование свойства FitToPagesWide. Однако, при попытке использования этого свойства в некоторых версиях Excel и через интерфейс Delphi, пользователи сталкиваются с ошибками.

Проблема

Пользователь пытается экспортировать лист Excel в PDF и желает, чтобы лист соответствовал ширине страницы. В ходе исследования выясняется, что для этого нужно использовать свойство FitToPagesWide. Однако, найти примеры кода на Delphi, демонстрирующие использование этого свойства, не удаётся. В коде, представленном пользователем, возникает ошибка, указывающая на то, что свойство не поддерживается объектом автоматизации.

Пример кода

Вот пример кода, который пользователь пытается использовать для экспорта листа Excel в PDF:

procedure TForm1.ExcelToPDF(const AFilename: string);
const
  XlTypePDF = 0;
  xlQualityStandard = 0;
  IncludeDocProperties = true;
  IgnorePrintAreas = false;
  LandscapeMode = 2;
var
  P: OleVariant;
begin
  P:= CreateOleObject('Excel.Application');
  try
    P.WorkBooks.Open(AFilename, 3);
    P.ActiveSheet.PageSetup.Orientation := LandscapeMode;
    P.ActiveSheet.PageSetup.FitToPagesWide := 1; // <-- не поддерживается объектом автоматизации
    P.ActiveWorkbook.ExportAsFixedFormat(
      xlTypePDF,
      AFilename,
      xlQualityStandard,
      IncludeDocProperties,
      IgnorePrintAreas
    );
  finally
    P.Quit;
  end;
end;

Решение проблемы

После некоторых экспериментов и обсуждения с сообществом, было обнаружено, что для корректной работы свойства FitToPagesWide необходимо выполнить несколько дополнительных действий:

  1. Установить свойство Zoom в false.
  2. Установить свойство FitToPagesTall в 1.

Только после этих действий можно установить свойство FitToPagesWide в 1. Пример модифицированного кода:

procedure TForm1.ExcelToPDF(const AFilename: string);
...
begin
  P:= CreateOleObject('Excel.Application');
  try
    // ... (предыдущий код)
    P.ActiveSheet.PageSetup.Zoom := false;
    P.ActiveSheet.PageSetup.FitToPagesTall := 1;
    P.ActiveSheet.PageSetup.FitToPagesWide := 1;
    // ... (продолжение кода)
  finally
    P.Quit;
  end;
end;

Важные замечания

  • Свойство FitToPagesWide доступно начиная с Excel 2010.
  • Необходимо убедиться, что версия Excel, используемая в проекте, поддерживает данное свойство.
  • Важно помнить, что настройка листа Excel для печати – это процесс, который может потребовать дополнительной настройки в зависимости от конкретных требований и контента листа.

Следуя этим шагам, разработчики на Delphi смогут успешно экспортировать листы Excel в PDF, настроив их для соответствия ширине страницы.

Создано по материалам из источника по ссылке.

Описание контекста: Пользователь сталкивается с проблемой настройки листа Excel для соответствия ширине страницы при экспорте в PDF через Delphi и пытается использовать свойство `FitToPagesWide`, которое не поддерживается объектом автоматизации.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: OLE ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 15:54:15/0.0033960342407227/0