Как я могу читать и редактировать файлы pptx / docx / xlsx, используя PHP? - PullRequest
5 голосов
/ 06 апреля 2011

Есть ли расширение библиотеки для эффективной обработки файлов pptx / docx / xlsx с использованием PHP?На данный момент меня больше интересуют файлы PPTX.Спасибо

Ответы [ 5 ]

12 голосов
/ 06 апреля 2011

Насколько я знаю, эти форматы файлов docx, xlsx, pptx - это просто zip-файлы. они принадлежат стандарту Office Open XML (OOXML).

В PHP у нас есть библиотека для манипулирования такими типами zip-документов: http://php.net/manual/en/book.zip.php

Вы можете найти всю документацию по этому стандарту ooxml здесь: http://www.ecma -international.org / публикации / стандарты / ECMA-376.htm

Лучший способ проверить структуру этих файлов ooxml - это изменить файл расширение .zip и распакуйте его, чтобы узнать, что внутри.

Если вы не хотите создавать свою собственную библиотеку для обработки файлов ooxml, Вы можете обратиться к связанному вопросу здесь для получения дополнительной информации: PHP OOXML Библиотеки?

Как я прочитал из вышеупомянутого вопроса о стековом потоке, Вы можете использовать phpdocx или другой, называемый PHPWord.

Надеюсь, что это может прояснить некоторые шаги, чтобы помочь выполнить ваши желания

3 голосов
/ 03 апреля 2013

вот рабочий пример, который может читать только файл docx.

<?php
    $filename = "file.docx"; // or /var/www/html/file.docx 

    $content = read_file_docx($filename); 
    if($content !== false) {
        echo nl2br($content); 
    }  
    else {
        echo 'Couldn\'t the file. Please check that file.'; 
    }

    function read_file_docx($filename){ 

        $striped_content = ''; 
        $content = ''; 

        if(!$filename || !file_exists($filename)) return false;  

        $zip = zip_open($filename);

        if (!$zip || is_numeric($zip)) return false; 

        while ($zip_entry = zip_read($zip)) { 

            if (zip_entry_open($zip, $zip_entry) == FALSE) continue; 

            if (zip_entry_name($zip_entry) != "word/document.xml") continue; 

            $content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); 

            zip_entry_close($zip_entry); 
        }// end while 

        zip_close($zip); 

        //echo $content; 

        //file_put_contents('1.xml', $content);  

        $content = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $content); 
        $content = str_replace('</w:r></w:p>', "\r\n", $content); 
        $striped_content = strip_tags($content); 

        return $striped_content; 
    }
?> 
3 голосов
/ 06 апреля 2011

Не существует одной библиотеки, которая может обрабатывать все три формата, но есть отдельные библиотеки, которые могут читать и / или записывать отдельные форматы.

  • PHPPowerpoint может писать,но не для чтения, файлы pptx
  • PHPWord могут записывать, но не читать файлы docx
  • PHPLiveDocx могут записывать (и я считаю, что также читает)docx файлы
  • PHPExcel могут читать и записывать файлы xlsx
2 голосов
/ 05 мая 2011

Вы можете создавать документы docx / xlsx / pptx из шаблонов, используя PHP-инструмент OpenTBS .

В разрабатываемой в настоящее время версии улучшится поддержка XLSX.

0 голосов
/ 06 апреля 2011

Я никогда не использовал их, и их документация отсутствует, но вы можете попробовать использовать библиотеки .net и COM , если ваш сервер работает на платформе Windows.

...