Как я могу извлечь данные в документе Word, используя Perl? - PullRequest
2 голосов
/ 14 июля 2009

Как извлечь данные из документа Word с помощью Perl?

Ответы [ 5 ]

2 голосов
/ 14 июля 2009

Если вы не пользуетесь Windows, я думаю, что лучшим способом будет сначала преобразовать его.

Если вы не используете Windows и не имеете доступа к Win32 :: OLE , вы можете использовать OpenOffice для преобразования документов .

Вы можете заключить скрипт по ссылке в вашу Perl-программу. Хотя ссылка начинается с PDF, если вы читаете на нем, можно преобразовать его в текст. Также см. этот пост о стековом потоке о преобразовании doc и docx файлов .

1 голос
/ 14 июля 2009
use Win32::OLE;
use Win32::OLE::Enum;

$document = Win32::OLE -> GetObject($ARGV[1]);
open (FH,">$ARGV[0]");

print "Extracting Text ...\n";

$paragraphs = $document->Paragraphs();
$enumerate = new Win32::OLE::Enum($paragraphs);
while(defined($paragraph = $enumerate->Next()))
{
    $style = $paragraph->{Style}->{NameLocal};
    print FH "+$style\n";
    $text = $paragraph->{Range}->{Text};
    $text =~ s/[\n\r]//g;
    $text =~ s/\x0b/\n/g;
    print FH "=$text\n";
}

украдено у здесь

1 голос
/ 14 июля 2009

Вы можете использовать Win32 :: OLE, если скрипт должен работать на Windows-компьютере с установленным Word.

Какую платформу вы используете? Возможно, антислово может быть вызвано?

0 голосов
/ 14 июля 2009

Документы Word больше не являются плоскими файлами. Найдите .docx, переименуйте его с расширением .zip, и вы можете открыть его и покопаться внутри, чтобы почувствовать, как все устроено. Я бы в целом согласился с тем, что Microsoft уже предоставила способы сделать это.

0 голосов
/ 14 июля 2009

В Windows вам лучше использовать интерфейсы COM для доступа к функциям Word.

Если вы хотите сделать это кроссплатформенным, подумайте о выполнении "catdoc" или libwv.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...