Microsoft Office 2007ファイル(.docx、.xlsx、.pptx)の解析と生成
-
05-07-2019 - |
質問
ユーザーが提供するドキュメントからテキストと画像をインポートする必要があるWebプロジェクトがあり、可能な形式の1つはMicrosoft Office 2007です。この形式のドキュメントを生成する必要もあります。
サーバーはCentOS 5.2を実行し、PHP / Perl / Pythonがインストールされています。必要に応じて、ローカルバイナリとシェルスクリプトを実行できます。 Apache 2.2を使用しますが、Nginxがライブになったら切り替えます。
私のオプションは何ですか?誰でもこれを経験しましたか?
解決
Office 2007ファイル形式は公開されており、よく文書化されています。大まかに言うと、「x」で終わる新しいファイル形式はすべて、 zip圧縮されたXMLドキュメントです。例:
Word 2007 XMLファイルを開くには を格納する一時フォルダ ファイルとそのパーツ。
次を含むWord 2007文書を保存します テキスト、写真、その他の要素 .docxファイル。
.zip拡張子を末尾に追加します ファイル名。
ファイルをダブルクリックします。で開きます ZIPアプリケーション。あなたが見ることができます ファイルを構成するパーツ。
そのフォルダにパーツを抽出します 以前に作成しました。
他のファイル形式はほぼ同じです。私はまだそれらと対話するためのオープンソースライブラリを知りませんが、あなたの正確な要件に応じて、簡単なドキュメントを読み書きすることはそれほど難しくありません。確かに、古い形式よりもはるかに簡単なはずです。
古い形式を読む必要がある場合、OpenOfficeにはAPIがあり、Office 2003および古いドキュメントを読み書きできますが、多少成功します。
他のヒント
python docxモジュールは、フォーマットされたMicrosoft Office docxファイルを純粋なPythonから生成できます。そのままで、ヘッダー、段落、表、および箇条書きを行いますが、makeelement()モジュールを拡張して、画像などの任意の要素を実行できます。
from docx import *
document = newdocument()
# This location is where most document content lives
docbody = document.xpath('/w:document/w:body',namespaces=wordnamespaces)[0]
# Append two headings
docbody.append(heading('Heading',1) )
docbody.append(heading('Subheading',2))
docbody.append(paragraph('Some text')
プロジェクトで OpenXML Format SDK を正常に使用しましたコードを介してExcelスプレッドシートを変更します。これには.NETが必要であり、Monoでどの程度うまく機能するかはわかりません。
Sphider のコードを確認できます。彼らはドキュメントとpdfファイルを持っているので、彼らはそれらを読むことができると確信しています。また、他のOffice形式の正しい方向に導く可能性があります。