VisualforceからCSV出力
VisualforceページからCSVを出力する場合、apex:pageのcontentType属性に記述する。
<apex:page contentType="text/csv;charset=Shift_JIS;#fileName.csv" standardController="Contact" recordSetVar="contacts">Id,Name <apex:repeat value="{!contacts}" var="con"> {!con.Id},{!con.Name} </apex:repeat> </apex:page>
apex:page
charset
Excelで開くためにシフトJISを指定する。
Salesforceはデフォルトの文字コードがUTF-8であるため。
ヘッダ、データ
Id,Name
ヘッダ部。
これがないと先頭行が空行となる。
apex:pageの直後でないと空行が入る。仕様?
{!con.Id},{!con.Name}
これがデータ部。
インデントを入れるとインデントも含め出力される。
途中に改行入れると改行されて出力される。
apex:outputField、apex:outputLabelはHTMLタグが出力される。
apex:outputTextであれば、テキストのみ出力される。
こんな感じ。
データ部は1行に記述する必要があるため、かなり見づらいコードになりそう。