0

データベースのエントリ仕様を持つ.docファイルがたくさんあります。これらすべてのドキュメントを解析し、ドキュメント内の情報を使用してエントリを作成する必要があります。私はCOMアプローチを使おうとしています。ファイルの上部と下部にプレーンテキストがあります...ただし、仕様はページ中央の表にあります。新しい.txtファイルのリンクを解除しないと、コンテンツが新しいドキュメントに転送されていることがわかりますが、[]の形式で無効な文字が大量に実行されています。file_get_contents()を使用すると、テーブルのすべてのテキストが完全に無視されます。

プログラムでこれを処理する方法はありますか?word.applicationCOMオブジェクトのAPIに関する情報が実際には見つかりません。理想的には、フォーマットを削除してから、ファイルを.txtファイルなどとして保存する必要があると考えています。

どんな助けでも大歓迎です。

これが私のコードです:

    $dir   = $PATH."/scripts/specsheets/doc";
    $files = scandir($dir);
    foreach( $files as $file ) {
        if( strtolower(substr($file, -3)) == "doc" ) {

            $word = new COM("word.application") or die("Unable to instantiate Word");
            $word->Documents->Open($dir."/".$file);
            $new_file = substr($dir."/txt/".$file, 0, -4).".txt";

            $word->Documents[1]->SaveAs($new_file, 2);
            $word->Documents[1]->Close(false);
            $word->Quit();
            $word = NULL;
            unset($word);

            $output = file_get_contents($new_file);
            rename($dir."/".$file, $dir."/archive/".$file);

            echo utf8_encode($output);
        }
    }
4

1 に答える 1

0

COMアプローチを使用して解決策を見つけることができません...しかし、phpでこのコマンドを使用すると、Windows用のアンチワードプログラムを使用して出力を取得できます

$content = shell_exec("C:/antiword/antiword.exe ".$filename);

Windowsバージョンのリンクは次のとおりです。

http://www-stud.rbi.informatik.uni-frankfurt.de/~markus/antiword/

それは非常にうまく機能し、テーブル内のデータも抽出します。間違いなく私の問題を解決しました。

于 2012-10-16T23:55:42.867 に答える