campus フォレストキャンパス

© 2019 System Forest inc.

sitemap サイトマップ

Salesforce 凝ったエクセルの出力方法

Salesforce 凝ったエクセルの出力方法

皆さんはSalesforceでエクセルを出力することはありますか?通常はVisualforceにてPageタグにContentTypeを設定して出力されていると思います。
例)<apex:page standardController=”Account” contentType=”application/vnd.ms-excel”>
ここで、エクセルの背景や、文字サイズは変更できますが、「出力後に値を変更して再計算をしたい」、「フォントを変えたい等」いろいろできないこともあると思います。
今回は、エクセルを出力するもう一つの方法を紹介してみます。使うのはいつもと同じ、Visualforceです。

今回の方法では、「XML スプレッドシート2003」形式でXMLファイルを出力します。(エクセル2003の機能を使用していますので、Microsoft様でのサポートがいつまで続くかは不明ですので、ご注意ください)
Salesforceの標準の方法でもXMLファイルなのですが、今回の指定では数式等の埋め込みが出来ます。XML スプレッドシート2003についてはこちらを参照して下さい。

では、作成手順です。今回は、下記の様なエクセルを出力しようと思います。

作成エクセル

①テキストエディタで作成することもできますが、大変面倒なので、最初に出力結果と同じレイアウトのエクセルを作成します。
※ 計算式、数値表示等は最終的に出力したい条件に合わせてください。②にて出力する際に、設定済みの数式等は操作する必要がありません。

②名前を付けて保存で、「XML スプレッドシート2003」を選択して、名前を付けて保存をします。

③②で作成したファイルを、テキストエディタで開き、SalesforceのVisualforceへ貼り付けます。

④ファイルの先頭をApexタグに記述します。

<変更前>

<変更後> 変更前の1,2行めを削除して、下記のようにApexタグを追加

  • 1行めにapex:pageタグ追加(最終行で閉じてください)
  • 2~3行目は、Salesforceでは”<?”で始まるタグが表示できない為、Apexから変数にて出力するようにして対応します。必ず「escape=”true”」をつけてください。

「Apexソース」:変更前の1~2行目と同じ文字列を出力しています。

⑤あとは、出力部をApexの変数で埋めていけば、リッチなエクセルシートの出力が可能となります。

今回は、紙面の制限もありざっくりとした説明になってしまいましたが、使いこなすと「複数シートの作成」「シート間をまたぐ計算」等、今までにはなかったエクセルの出力が可能となります。
また、意外ですが、標準の方法では罫線は細線、普通線、太線の実線しか作成できませんが、この方法ですと点線、一点鎖線、二点鎖線とエクセルで引ける罫線はほとんど可能となります。
ファイル内容は、上部にスタイル、その後各シートのデータとなり、HTMLとCSSの関係に似ています。一度気が向いたら、気楽にチャレンジしてはいかがでしょうか?

Inquiry

こちらからお気軽にご相談ください。

Recruit

私たちは共に働く仲間を集めています。