PHP 5.5 Excel-Object через COM / OLE не может загрузить файл

Ситуация: В настоящее время я выполняю миграцию внутреннего отраслевого веб-приложения с Windows Server 2003 / Apache 2.2 / Php 5.3 / Oracle 10 на Windows Server 2012 / Apache 2.4 / PHP 5.5 / Oracle 12c.

Приложение использует расширение com_dotnet для использования установленной на стороне сервера Excel для специальных отчетов. Я знаю, что использование Excel на стороне сервера не является предпочтительным способом работы с листами, но когда-то было решено сделать это, потому что

  • PHPExcel не был доступен или, по крайней мере, недостаточно мощный
  • Отчеты никогда не используются более чем одним человеком одновременно

Проблема в деталях: PHP создает объект Excel ОК:

 try {
$excel = new COM("Excel.application");
$excel->DisplayAlerts = 0;
$excel->Visible = 0;
} catch (Exception $e) {
...
}

Но когда я пытаюсь открыть файл, я получаю сообщение об ошибке:

 try {
$excel->Workbooks->Open($fn);
} catch (Exception $e) {
$excel->Quit();
$excel = null;
// ... Errormessage ...;
return;
}

Сообщение об ошибке (в $ e) гласит, что Excel не смог найти или открыть запрошенный файл. Во время отладки с Netbeans я вижу, как экземпляр Excel появляется в диспетчере задач Windows.

Что я пробовал:

  • Убедитесь, что файл в $ fn можно открыть. Изменено разрешение файла «всем» безрезультатно.
  • Использовал / и \ в пути и пытался окружить путь с помощью «.

К сожалению, установка на немецком языке, так что сообщение об ошибке:

Источник: Microsoft Excel

Описание: Microsoft Excel может быть датирован. \ Apps \ webroot \ vebill \ share \ reports \ Test.xls ‘nicht zugreifen. Умирает Канн Мехрере Грюнде Хабен:

  • Der Name des Dokuments oder der Pfad ist nicht vorhanden.
  • Das Dokument wird von einem andderen Programme verwendet.
  • Der Name der Arbeitsmappe, die gespeichert werden soll, ist identifisch zu dem Namen eines and anderen Dokuments, welches schreibgeschützt ist.

Ни одно из этих условий не соответствует действительности.

Помощь очень appeciated! Спасибо!

Что я забыл упомянуть является то, что старая установка использовала Excel 2010, новая использует Excel 2016.

Что я узнал с Procmon: Как и предполагалось, я использовал procmon и фильтровал для событий EXCEL.EXE. EXEL создает файл и открывает запрос информации, и все следующие операции над файлом имеют РЕЗУЛЬТАТ УСПЕХА! Только одна строка может указывать на ошибку:

18: 43: 22,9966615
EXCEL.EXE
5916
CreateFileMapping
D: \ приложения \ Webroot \ vebill \ доля \ сообщает \ test.xls
ФАЙЛ ЗАБЛОКИРОВАН ТОЛЬКО С ЧИТАТЕЛЯМИ
SyncType: SyncTypeCreateSection, PageProtection:

Но позже в журнале файл снова обращается к Excel несколько раз без каких-либо ошибок.

Обновление 1: Я изменил регистрационные данные службы Apache на пользователя с правами администратора, с которым я работаю — ошибка остается той же: Led Zeppelin alredy знал 😉

Обновление 2: Обнаружена эта проблема, моя дубликат, к сожалению, это также не решено. Попробую перейти на PHPExcel сейчас …

PHP не может открыть книгу Excel через COM

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]