Я только что обновил свое веб-приложение с PHP 5.XXX до PHP 7.4.28.
Я решил большинство проблем до сих пор, но я застрял в функции VBA (DCOM), которая, по-видимому, больше не распознается:
$myTable->Range->InsertBreak(8);
Где «8» означает wdColumnBreak.
Не могли бы вы сообщить мне, есть ли какой-либо альтернативный синтаксис, чтобы этот разрыв столбца работал правильно?
Любые предложения действительно ценятся, Большое тебе спасибо
Привет, спасибо за ваш ответ. Ошибка следующая: "Фатальная ошибка: Uncaught com_exception: Источник: Неизвестно Описание: Неизвестно" Если я прокомментирую эту строку, Word будет сгенерирован правильно (но без разрыва столбца форматирование испорчено). Спасибо
В статье Рекомендации по автоматизации офиса на стороне сервера говорится следующее:
Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.
If you are building a solution that runs in a server-side context, you should try to use components that have been made safe for unattended execution. Or, you should try to find alternatives that allow at least part of the code to run client-side. If you use an Office application from a server-side solution, the application will lack many of the necessary capabilities to run successfully. Additionally, you will be taking risks with the stability of your overall solution.
Вместо этого я бы предложил выбрать компоненты, предназначенные для выполнения на стороне сервера. Также вы можете взглянуть на Пакет SDK для открытого XML, если вы имеете дело только с открытыми XML-документами.
Здравствуйте, Евгений, спасибо за ответ. Я понимаю, что Microsoft не рекомендует это решение, к сожалению, мое приложение полностью основано на документах Word, созданных с помощью DCOM через PHP. Я не могу приложить усилия, чтобы столкнуться с такими большими изменениями прямо сейчас, все, что мне нужно, это просто быстрый обходной путь, чтобы заставить разрыв столбца работать правильно, это не должно быть идеальным или элегантным решением... Большое спасибо
Попробовав некоторое время, я смог найти следующее решение:
$myNumber= new VARIANT(8, VT_I4);
$MyTable->Range->InsertBreak($myNumber);
В основном параметр функции InsertBreak следует рассматривать как вариант, а не как числовой. С этим синтаксисом все работает отлично.
Я очень хотел поделиться этим решением, потому что мне не нравится подход "эта технология больше не рекомендуется, просто выберите последнюю версию"... Не всегда так просто перейти на новые технологии (даже не имея гарантии их надежности).
Ваше здоровье
так в чем ошибка?