Newer Version Available

This content describes an older version of this product. View Latest

Using a Custom ContentType

You can specify a different format for a Visualforce page by using the ContentType attribute on the <apex:page> tag. This sets the Content-Type HTTP header for the response to the value of the page’s ContentType attribute.
The ContentType attribute takes a Multipurpose Internet Mail Extension (MIME) media type as a value, such as application/vnd.ms-excel, text/csv, or image/gif.

Browsers can behave unpredictably if you set an invalid ContentType. For more information about valid MIME media types, see http://www.iana.org/assignments/media-types/.

Note

Microsoft Excel ContentType Example

To display Visualforce page data in a Microsoft Excel spreadsheet, use the contentType attribute on the <apex:page> tag, and specify a value of application/vnd.ms-excel.

For example, the following page builds a simple list of contacts. It’s a simplified version of the example shown in Building a Table of Data in a Page.

1swfobject.registerObject("clippy.codeblock-0", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<apex:page standardController="Account">
18
19  <!-- This page must be accessed with an Account Id in the URL. For example: 
20       https://<salesforceInstance>/apex/myPage?id=001D000000JRBet -->
21
22    <apex:pageBlock title="Contacts">
23        <apex:pageBlockTable value="{!account.Contacts}" var="contact">
24            <apex:column value="{!contact.Name}"/>
25            <apex:column value="{!contact.MailingCity}"/>
26            <apex:column value="{!contact.Phone}"/>
27        </apex:pageBlockTable>
28    </apex:pageBlock>
29</apex:page>

To display this page in Excel, add the contentType attribute to the <apex:page> tag, as follows:

1swfobject.registerObject("clippy.codeblock-1", "9");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<apex:page standardController="Account" contentType="application/vnd.ms-excel">
18    <apex:pageBlock title="Contacts">
19        <apex:pageBlockTable value="{!account.Contacts}" var="contact">
20            <apex:column value="{!contact.Name}"/>
21            <apex:column value="{!contact.MailingCity}"/>
22            <apex:column value="{!contact.Phone}"/>
23        </apex:pageBlockTable>
24    </apex:pageBlock>
25</apex:page>

If the page doesn’t display properly in Excel, try a different MIME type, such as text/csv.