いわゆるワード文書やスプレッドシートを、ソフトウェアから自動生成するにはどんな方法があるかの調査メモです。 Javaから生成するのを念頭に置いてます。 そんなに突っ込んで調べてるわけではなくて、適当にググった結果の上位3-5くらいのURLを漁っただけの、浅い内容です。 * Office Open XML フォーマット(MS-Officeの ".docx", ".xlsx") - Standard ECMA-376 Office Open XML File Formats -- http://www.ecma-international.org/publications/standards/Ecma-376.htm - http://ja.wikipedia.org/wiki/Office_Open_XML Microsoft社提供のSDK: - Open XML SDK 2.0 for Microsoft Office -- http://www.microsoft.com/ja-jp/download/details.aspx?id=5124 --- ぐぐったら見つかったレベルなので、これが最新版かは不明。ライセンスとか使用方法も含めて全くの未調査。 - 新しいファイル名拡張子および Open XML 形式入門 - Word -- http://office.microsoft.com/ja-jp/word-help/HA010006935.aspx JavaからOffice文書を生成するので有名なApachePOI関連: - Apache POI - the Java API for Microsoft Documents -- http://poi.apache.org/ -- もともと OpenXML4J として開発されていたのが、2008年にPOIに寄贈され、利用できるようになった。 - 最新POIでOffice Open XML形式のExcelファイルを操作:CodeZine(コードジン) -- http://codezine.jp/article/corner/352 * OpenDocumentフォーマット(OpenOffice.org, LibreOffice) - http://www.opendocumentformat.org/ - http://ja.wikipedia.org/wiki/OpenDocument - OpenDocument Format for developers -- http://www.opendocumentformat.org/developers/ --- 言語ごとに、ODFを生成するライブラリが紹介されている。 --- ただし、サイトが消失している(lpod-project.org)ものがあり、最新情報とはいえない。 OpenOffice.org と LibreOffice の両方で、マクロとして、あるいは外部プログラムからドキュメントを操作するためのAPIが公開されており、最近だとこちらを使ったほうが良いかもしれない。 どちらも、OpenOffice.org で開発されている "UNO" (Universal Netowrk Objects) という、RPCを複数言語でBINDしたようなアーキテクチャの上でAPIを公開しているため、JavaやPython、.NETなどから利用できるようになっている。 OpenOffice.orgでのAPIとUNO関連資料: - The Apache OpenOffice API Project -- http://www.openoffice.org/api/ - Uno Development Kit Project -- http://www.openoffice.org/udk/ - Introduction - Apache OpenOffice Wiki -- https://wiki.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Introduction - OpenOffice.org API について - Apache OpenOffice Wiki -- https://wiki.openoffice.org/wiki/JA/Documentation/BASIC_Guide/API_Intro - JavaからOpenOfficeを制御する -- http://www.opengion.org/article/calcrep/ LibreOfficeでのAPIとUNO関連資料: - LibreOffice 4.2 API Documentation -- http://api.libreoffice.org/ - LibreOffice(5)PythonでLibreOfficeが動く仕組み:UNO -- http://p--q.blogspot.jp/2014/01/libreoffice5pythonlibreoffice.html OpenOffice.orgはApacheライセンスですが、LibreOfficeはGPLv3という点に注意が必要かもしれません。 ちなみに、Webアプリなどから非同期でマルチスレッドで呼び出すような用途だとどうなるんだろう・・・と、"uno multithread"でぐぐったらこんなのが見つかりました。対応してるのか、してないのか、ちょっとまだ調べきれてないです。 - Uno/Article/Multi-Thread Programming - Apache OpenOffice Wiki -- https://wiki.openoffice.org/wiki/Uno/Article/Multi-Thread_Programming - Analysis/Multi-Threading - Apache OpenOffice Wiki -- https://wiki.openoffice.org/wiki/Analysis/Multi-Threading