SalesForceのレポートは簡単かつ強力なのですが、お客様によってはExcelでの出力を求められる機会は少なくないと思います。そこでWord,Excel,PDFの各形式でのファイル出力を試してみました。
まず、もとになる表をVisualForceで作成してみます。
今回はコントローラを使用せず、単純にTableタグで作成された表を使用します。(素材は
こちらのサイトを使用させていただきました。)
このページのapex:pageタグはこのようになっています。なにもありません。
1.Microsoft Word
apex:pageタグを以下のように編集すると、Microsoft Word形式で出力できます。
captionタグ、thタグで囲まれた部分は、改ページ時に次ページ以降にも列見出しとして継承されていることがわかります。また、わかりずらいのですが表の中のリスト項目に注目してください。このリストの要素はcodeタグで囲まれているのですが、この部分は自動的に等幅フォント(MSゴシック)が使用されています。
なお、ファイル名の拡張子をdocxとするとエラーになります。
2.Microsoft Excel
apex:pageタグを以下のように編集すると、Microsoft Excel形式で出力できます。
セルの結合もきちんと反映されています。codeタグで囲まれた部分も等幅フォントになっています。ただし、印刷時にWordのような見出し行の固定は設定されませんでした。
当然、計算式を埋め込んだりもできません。
3.PDF
PDFの場合は、MSOffice系とは方法が異なります。VisualforceからPDF出力をする場合、pageタグのrenderAs要素に"PDF"を設定するのですが、そのままではブラウザに表示されてしまいファイルに名前を付けて保存することができません。そのためPDFで書き出すページをインクルードさせてファイル出力を行います。従って、VisuarForceページは、2つ必要になるわけです。
まず、ファイルを出力するページは、こんな感じです。出力対象ページをインクルードしているだけの簡単なものです。
次にインクルードされるページです。PDF出力する場合は、ヘッダーに書式を書かなければなりません。
書式の書き方は
こちらのサイトを参考にさせていただきました。
どうもPDFの書式設定はあまり自由度がないみたいなので(特にフォントまわり)、Office環境があるなら、WordかExcelで出力したほうが見栄えは良くできそうです。