<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Everything is wrong &#187; Excel</title>
	<atom:link href="http://everythingiswrong.free.fr/index.php/tag/excel/feed/" rel="self" type="application/rss+xml" />
	<link>http://everythingiswrong.free.fr</link>
	<description>Un blog dédié à l&#039;informatique en général</description>
	<lastBuildDate>Wed, 06 Oct 2021 21:20:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>JSF : générer un fichier à partir d&#8217;un managed bean</title>
		<link>http://everythingiswrong.free.fr/index.php/2011/05/18/jsf-generer-un-fichier-a-partir-dun-managed-bean/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2011/05/18/jsf-generer-un-fichier-a-partir-dun-managed-bean/#comments</comments>
		<pubDate>Wed, 18 May 2011 20:51:56 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Java J2EE]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[POI]]></category>

		<guid isPermaLink="false">http://yan.langlois.free.fr/wordpress/?p=1314</guid>
		<description><![CDATA[JSF : Générer un fichier à partir d'un managed bean grâce un bouton download ou télécharger.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Dans cet exemple, je vais générer un fichier Excel à partir d&#8217;un managed bean.</p>
<p style="text-align: justify;">L&#8217;idée de base est de récupérer le context de la servlet pour créer une réponse et rediriger l&#8217;utilisateur vers cette dernière. Voici à quoi ressemble mon bean :</p>
<pre class="brush: java; toolbar: true;">@Model
public class MonBean {

	public String execute() throws IOException {
		// Création du fichier excel :
		String fileName = "azerty.xls";
		HSSFWorkbook wb = new HSSFWorkbook();
		HSSFSheet sheet = wb.createSheet(fileName);
		HSSFHeader header = sheet.getHeader();
		header.setCenter(fileName);

		// Récupération de la réponse HTTP
		ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
		HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
		response.setContentType("application/vnd.ms-excel");
		response.setHeader("Content-disposition", "attachment; filename="+ fileName);

		// Ecriture de la réponse
		ServletOutputStream out = response.getOutputStream();
		wb.write(out);
		out.close();

		FacesContext.getCurrentInstance().responseComplete();

		return null;
	}
}</pre>
<p style="text-align: justify;">Ensuite, il suffit de demander la méthode <em>execute()</em> du bean.</p>
<pre class="brush: xml; toolbar: true;">﻿﻿﻿&lt;h:form&gt;
        &lt;h:commandButton action="#{monBean.execute}" value="download" /&gt;
&lt;/h:form&gt;
</pre>
<p style="text-align: justify;">Vous pouvez trouver le code source de cet exemple <a href="https://subversion.assembla.com/svn/everythingiswrong/jsf-download-file-button" target="_blank">ici</a>. Pour exécuter l&#8217;exemple il faut lancer la commande <em>mvn compile tomcat:run</em> et se diriger vers l&#8217;adresse <a href="http://localhost:9090/home.jsf" target="_blank">http://localhost:9090/home.jsf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2011/05/18/jsf-generer-un-fichier-a-partir-dun-managed-bean/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seam : Exporter une dataTable à l&#8217;interieure d&#8217;une subview</title>
		<link>http://everythingiswrong.free.fr/index.php/2010/09/30/seam-exporter-une-datatable-a-linterieure-dune-subview/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2010/09/30/seam-exporter-une-datatable-a-linterieure-dune-subview/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 20:49:52 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Seam]]></category>

		<guid isPermaLink="false">http://yan.langlois.free.fr/wordpress/?p=339</guid>
		<description><![CDATA[Seam dataTableExporter n'arrive pas à trouver la datTable à exporter.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Lorsqu&#8217;un développeur utilise Seam, il a à sa disposition tout un panel de composant pour l&#8217;aider à développer. Par exemple le composant <a href="http://docs.jboss.org/seam/2.2.1.CR1/reference/en-US/html_single/#excel.datatableexporter" target="_blank">dataTable Exporter</a> permet d&#8217;exporter un tableau JSF (h:dataTable, rih:dataTable, etc.) sous la forme d&#8217;un fichier Excel. Voici la syntaxe directement récupérée de la <a href="http://docs.jboss.org/seam/latest/en-US/html/" target="_blank">documentation de référence de Seam</a> :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;h:form id=&quot;theForm&quot;&gt;
    &lt;h:dataTable id=&quot;theDataTable&quot; value=&quot;#{personList.personList}&quot;
        var=&quot;person&quot;&gt;
         ...
    &lt;/h:dataTable&gt;
&lt;/h:form&gt;
...
&lt;h:commandLink
    value=&quot;Export&quot;
    action=&quot;#{excelExporter.export('theForm:theDataTable')}&quot; /&gt;
</pre>
<p style="text-align: justify;">Lorsque la table se trouve dans une sous vue (&lt;f:subview/&gt;) ou tout autre composant qui joue un rôle de conteneur de nom (<a href="http://download.oracle.com/docs/cd/E17802_01/j2ee/javaee/javaserverfaces/2.0/docs/api/javax/faces/component/NamingContainer.html" target="_blank">NamingContainer</a>), il faut que le paramètre de la méthode d&#8217;export soit sous la forme <em>idNamingContainer1:</em><em>idNamingContainer2:&#8230;</em><em>:&#8230;:idDataTable</em>. De cette manière, la table est identifiée de façon unique dans la RootView.<em><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2010/09/30/seam-exporter-une-datatable-a-linterieure-dune-subview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
