RubyアプリケーションでWordドキュメント(.docx)を作成する簡単な方法はありますか?実際、私の場合は、Linuxサーバーから提供されるRailsアプリケーションです。 。
Prawn に似ていますが、 [〜#〜] docx [〜#〜] の代わりにPDFの代わりに最適です!
前述のように、RubyでOpen XMLドキュメントを操作するためのライブラリは存在しないようですが、 OpenXML Developer にはOpen XMLドキュメントの形式に関する完全なドキュメントがあります。
ユーザーごとにカスタマイズされた標準文書(定型書簡など)のコピーを送信する場合は、DOCXがディレクトリ階層のさまざまな部分を含むZipファイルであるため、非常に簡単です。 all
ユーザー(実際のコンテンツなし)に送信するすべてのパーツとツリー構造を含むDOCX "テンプレート"を用意し、ユーザー固有を含む新しい部分を作成(または既存の変更)します。必要なコンテンツをZip(DOCXファイル)に挿入してから、ユーザーに送信します。
例:を含むdocument-template.xml
を使用できます[USER-PLACEHOLDER]:。ユーザーがドキュメントを要求したら、[USER-PLACEHOLDER]
をユーザーの名前に置き換え、document.xml
をyour-template.docx
Zipファイルに追加します(これには、必要なすべての画像と他の部分が含まれます) Word文書)を作成し、その結果の文書をユーザーに送信します。
.docx
ファイルの名前を.Zip
に変更する場合、内部のパーツの構造と形式を調べるのは簡単です。 Zip操作ツールを使用して、またはプログラムでコードを使用して、画像やその他のパーツを簡単に削除または置換できます。
生のXMLから完全にカスタムコンテンツを含むまったく新しいWord文書を生成することは、APIにアクセスせずに作業を簡単にすることが非常に困難です。本当にそれが必要な場合は、 Mono をインストールすることを検討してから、VB.NET、C#または IronRuby を使用して Open XML Format SDK 1. 。 Microsoft.Office.DocumentFormat.OpenXml.Packaging Namespace を使用してOpen XMLドキュメントを操作するだけなので、SDKが必要とするすべてをサポートしていると思われるMonoでも問題なく動作するはずです。
Apache POI を使用できます。 Javaで記述されていますが、 Ruby拡張として)と統合
これは古い質問ですが、新しい答えがあります。 HTMLドキュメントをWord(docx)ドキュメントに変換する場合は、「htmltoword」gemを使用します。
https://github.com/nickfrandsen/htmltoword
なぜ答えがクリープし、誰もがテンプレートソリューションを投稿し始めた理由はわかりませんが、これはOPの質問に答えます。 PDFの代わりにWordを除いて、Prawnと同じです。
UPDATE:
pandoc および docverter というpandocのAPIラッパーもあります。 pandocはhaskellライブラリであるため、どちらもインストールが少し複雑です。
HTMLドキュメントを拡張子が.docのWordドキュメントとして提供する場合、Wordで正常に開きます。派手なことは何もしないでください。
Edit:以下は、クラシックASPを使用した例です。 http://www.aspdev.org/asp/asp-export-Word/
これは、Doccy( doccyapp.com )が使用可能なAPIのみを実行する方法です。 docx、odt、およびページをサポートし、必要に応じてPDFも変換します
開示:私はdocxtemplaterプロジェクトのリーダーです。
Rubyソリューションを探していることは知っていますが、他のすべてのソリューションは、あなたが望むことを正確に行うライブラリを提供せずに、グローバルにそれを行う方法しか教えてくれないため、 JSまたはNodeJS(両方で動作)
コマンドラインでも使用できます。
npm install docxtemplater -g
docxtemplater <configFile>
----config.docxFile: The input file in docx format
----config.outputFile: The outputfile of the document
Grant Wagnerが提案した手法と非常によく似た手法を使用して、Ruby htmlをWord gemに作成しました。これにより、Ruby = app。 http://github.com/nickfrandsen/htmltoword で確認できます-単にHTML文字列を渡すだけで、対応するWord docxファイルが作成されます。
def show
respond_to do |format|
format.docx do
file = Htmltoword::Document.create params[:docx_html_source], "file_name.docx"
send_file file.path, :disposition => "attachment"
end
end
end
それがあなたの役に立つことを願っています。問題がある場合は、githubの問題を開いてください。
Grantの答えに加えて、Wordに「フラットOPC」ファイルを送信することもできます。このファイルは、基本的にdocxを解凍して連結し、単一のxmlファイルを作成します。この方法で、1つのファイルの[USER-PLACEHOLDER]を置き換えて、それで完了できます(つまり、zip圧縮またはunzip圧縮しない)。
まだこれを見ている人は、この投稿でXMLデータソースの使用方法を説明しています。これは私にとってうまく機能します。
http://seroter.wordpress.com/2009/12/23/populating-Word-2007-templates-through-open-xml/
もちろん、Windowsで実行している場合は、WIN32OLEの問題であり、Word COMオブジェクトに多少の苦労があります。
ただし、* nix環境から提供する可能性があります。 Word 2007は、「 Microsoft Office Open XML 」形式(* .docx)を使用します。この形式は、適切な Microsoftの互換性パック を使用して開くことができます。
最近のOfficeアプリの一部(少なくとも2002/XPおよび2003)には 独自のXML形式 があり、これも使用可能です。
残念ながら、プロセスを簡単にするためのツールはありませんRuby.
受け入れられるようになれば、renamed-htmlファイルルートをたどりたいと思います。 WordXPから文書をHTMLとして保存し、.docに名前を変更して問題なく開きました。
このgithubリポジトリを確認してください: https://github.com/jawspeak/Ruby-docx-templater
Wordテンプレートからドキュメントを作成できます。
同じ問題が発生しました。残念ながら、クライアントはテンプレートを入力する必要があるため、xmlを操作できませんでした。また、これを行うことは常に可能とは限りません(たとえば、Macのオフィスではこれが許可されていません)。
この問題の解決策として、組み込みのRubyでrtfドキュメントテンプレートとして使用できる単純なgemを作成しました: https://github.com/eicca/rtf-templater
私はそれをテストしましたが、レポートやドキュメントを埋めるのに大丈夫です。ただし、複雑なループと条件の場合、書式設定が正しく表示されません。