2011-12-23 2 views
0

Я использую следующий код для доступа к файлу excel в php.Использование COM-класса в PHP

 $excel = new COM("Excel.application",,) or die ("ERROR: Unable to instantaniate COM!\r\n"); 

// DATA RETRIEVAL 
$Workbook = $excel->Workbooks->Open($file) or die("ERROR: Unable to open " . $file . "!\r\n"); 
$Worksheet = $Workbook->Worksheets($sheet); 
$Worksheet->Activate; 

Приведенный выше код работает на локальной машине, но когда я пытаюсь выполнить этот код на любом веб-сервере, тогда он не работает. Может кто-то мне помочь Где проблема в этом коде.

+6

COM - это Windows. Поддерживаются ли ваши веб-серверы под управлением Windows? –

+0

И если ваш веб-сервер - это Windows, на нем установлен Excel? –

+0

процесс веб-сервера может не иметь разрешения на загрузку двоичного файла excel. –

ответ

4

Я советую вам использовать PHPExcel вместо COM.

COM очень медленный и работает только на окнах, плюс вам нужно установить офис на сервере, который является пустой тратой лицензии.

+1

Я не думаю, что Microsoft будет называть это пустой тратой лицензии;) – hakre

+0

Как использовать PHPExcel, я хочу хранить данные Excel в массиве php. –

+0

MS не может называть это пустой тратой лицензии, но это отходы для вашего бизнеса, если вы покупаете лицензию на свой сервер * nix. –

0

Вам нужно, чтобы на ваших серверах был установлен Excel, для выполнения доступа к приложению COM php-процесс должен иметь правильные разрешения.

У нас было много проблем с Office Interop в прошлом, и я советую против этого. Если что-то происходит с вашим процессом, экземпляры Excel остаются открытыми на сервере, и эти экземпляры занимают много оперативной памяти.

Вы лучше использовать библиотеки, которые используют спецификации OpenXML, такие как Spreadsheetlight:

http://spreadsheetlight.com/

Вы можете использовать его из PHP, есть пример здесь:

http://www.drupalonwindows.com/en/blog/importing-excel-data-php-openxml-and-spreadsheetlight-drupal-example

Смежные вопросы