質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

2122閲覧

wordのドキュメント内の文字をPHPで取得したい

FKM

総合スコア3635

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/05/15 08:48

ある業務をこなすために、PHPでファイルを取り込み、それをExcelファイルの表にして保存するという方法が必要となっています。

ExcelファイルはPhpspreadsheetを使って問題なくデータを取得できるのですが、問題はwordのdocファイルで、どうやってもデータを取得できません。何かいい方法はないでしょうか、ご教示ください。なお、使用環境はPHP5.6です。PHP7以降になると、csvから文字列データ取込みにおけるデリミタを認識しないという致命的なバグを解消できないので、敢えてアップデートしていません。

やってみたこと

PHPWordのインストールと実行

PHPSpreadSheetのword版ともいえるPHPWordというのがあるみたいなので使ってみようと思いましたが、文字列をdocxファイルに代入するもののようで、docxから取得した文字を別システム上に出力するというものではなさそうです(実際にインストールして操作してみましたが、テキストの取得はできませんでした)

また、根本的な問題としてdocファイルに対応していないようで、開発者も放置しているようです。

###zip-archiveを使ったテキスト取得
今更ながらphpでword(docx)を読み込んでplain textを得る
という技術系ブログのページを参考に取得してみようとしたのですが、どうもPHP5.6においてzip-arhiveの挙動が他と異なっているのか、データ取得はできませんでした。

現状、どうしているのか?

Wordを開いて、txt形式で保存したものをインポートし、それをfile_get_contents関数で取り込んでおり、その後のExcelファイルへの保存はうまくいっています。しかし、手動で操作するのが煩わしく、物量が多いのでここも自動化したいところです。

プログラムを使ってdocファイルをtxtファイルに転換さえできれば、別にPHPにはこだわらないのですが、html上のシステムで動かしたいと考えています。どうか、解決法をご存知の方、ご教授お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Apache POIでWord扱えるので、本文読込は可能かと思います。
https://poi.apache.org/index.html

■Apache POI (WORD文書) 逆引きリファレンス
https://qiita.com/mine820/items/e1022ac51466bb34186d

PHPへの導入の仕方は、Apache POI PHPとかで検索すればわかると思います。

投稿2019/05/17 11:44

Akashic

総合スコア298

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FKM

2019/05/17 12:01

ありがとうございます、POIというものもあるんですね、時間があるときにテストしてみようと思います。
guest

0

Wordを開いて、txt形式で保存したものを

これは、CentOSじゃなくてWindows上の操作ですよね?であれば、COMクラスを使えば自動化できます。VBAが書ける人なら書けるはず。

投稿2019/05/15 16:28

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FKM

2019/05/16 02:28 編集

返答ありがとうございます。wordのtxt化はWindows上の操作です。 そして、COMについて調べてオブジェクトを呼び出してみたのですが、 Fatal error: Class 'COM' not found in … となって、 https://stackoverflow.com/questions/18240521/php-fatal-error-class-com-not-found にしたがって設定してみたのですが、同じエラーが出たままで解決しません。 また、PHP5.6は対応していないのか https://stackoverflow.com/questions/44507854/fatal-error-class-com-not-found-in-php-5-6 という、未解決気味の返答もあります。 現在引き続き調べているところですが、何かアドバイスいただけるとありがたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問