実際に作成したVisualforceページはこんな具合になりました。

<apex:page controller="[コントローラー名]" action="{!メソッド名}" contentType="application/vnd.ms-excel;charset=Shift_JIS;#CSV-{!MID(TEXT(TODAY()),0,4)}{!MID(TEXT(TODAY()),6,2)}{!MID(TEXT(TODAY()),9,2)}{!MID(TEXT(NOW()+9/24),12,2)}{!MID(TEXT(NOW()+9/24),15,2)}{!MID(TEXT(NOW()+9/24),18,2)}.csv">
<apex:outputText escape="true" value="カラム01,カラム02,カラム03,カラム04" />
{!''}
<apex:repeat value="{!データリスト変数}" var="r">
	<apex:outputText value="1" />,
	<apex:outputText value="{!"""}1{!"""}" />,
	<apex:outputText value="{!"""}{!SUBSTITUTE(r.日付型の項目, '-', '/')}{!"""}" />,
	<apex:outputText value="1" rendered="{!IF(r.ある項目='AAA',true,false)}" /><apex:outputText value="0" rendered="{!IF(r.ある項目='AAA',false,true)}" />
{!''}
</apex:repeat>
</apex:page>
  • 文字コードはShift JISで出力されます。
  • ファイル名はCSV-[日付時間].csvで出力されます。
  • 2番目と3番目のデータはダブルクォーテーションでくくられます。
  • 4番目のデータは1 or 0で出力します。