Pull to refresh

разбираем файлы MS-office

Reading time2 min
Views4.6K
Недавно передо мной была поставлена задача: вытащить некую информацию из файлов MS-office (.xls, .doc) для ее последующей обработки. По факту, нужно было вытащить текст, содержащийся в документе.



Для .xls быстро нашелся проект PhpExcelReader, и тут больше нечего сказать — смотрите код, гуглите, а я разве только могу дать несколько строк кода — в помощь:

$reader = new Spreadsheet_Excel_Reader();
$reader->setUTFEncoder('iconv');
$reader->setOutputEncoding('UTF-8');
$reader->read($this->filename);

$text = "";

if ($reader->sheets && count($reader->sheets))
{
  $sheet = $reader->sheets[0];
  
  if (isset($sheet['cells']))
  {
    foreach ($sheet['cells'] as $row)
    {
      $text .= implode(' ', $row) . "\n";
    }
  }
}
echo $text;


* This source code was highlighted with Source Code Highlighter.


Несколько сложнее поначалу оказалось с .doc'ами: мне просто не удалось найти бесплатного парсера на PHP, который бы не использовал COM (платных тоже как-то не попалось, но я все же искал именно бесплатный; кстати, если хабралюди знают о существовании такого проекта — милости прошу откомментировать).

Я уже совсем было отчаялся, когда вдруг решил посмотреть на .doc-файл с помощью консольной утилиты less. less пожаловалась на то, что "catdoc is not installed", я воспрял духом, набрал sudo apt-get install catdoc — и вуаля — в моих руках консольный просмотрщик вордовских документов. После этого осталось только написать:
/**
* @note catdoc program should be installed and reside within $PATH!
*/
echo shell_exec('catdoc ' . escapeshellarg($this->filename));


* This source code was highlighted with Source Code Highlighter.
Tags:
Hubs:
+32
Comments28

Articles