SeamFramework.orgCommunity Documentation
Seam support aussi la génération de feuilles de calculs the Microsoft® Excel® spreadsheet application au travers de l'excelente bibliothèqe JExcelAPI . Le document généré est compatible avec the Microsoft® Excel® spreadsheet application versions 95, 97, 2000, XP et 2003. Actuellement un sous-groupe limité de fonctionnalité de la bibliothèque sont exploité mais le but ultime est d'être capable de proposer tout ce que la bibliothèque est capable de faire. Merci de vous référer à la documentation JExcelAPI pour plus d'informations sur les possibilités et les limitations.
The Microsoft® Excel® spreadsheet application jboss-seam-excel.jar
. Ce JAR contient les controles JSF pour the Microsoft® Excel® spreadsheet application qui sont utilisé pour construire les vues qui peuvent rendre le document et le composant DocumentStore, qui donne le document rendu à l'utilisateur. Pour inclure le support d'the Microsoft® Excel® spreadsheet application dans votre application, includez jboss-seam-excel.jar
dans votre dossier WEB-INF/lib
avec le fichier JAR jxl.jar
.Cependant, vous allez devoir configurer le servlet DocumentStore dans votre web.xml
Le module de Seam The Microsoft® Excel® spreadsheet application nécéssite l'utilisation des Facelets comme technologie des vues. De plus, il nécessite l'utilisation du package seam-ui.
Le projet examples/excel
contient un exemple opérationnel du support d'the Microsoft® Excel® spreadsheet application. Il démontre un empaquetage de déploiement propre, et il montre les fonctionnalités disponibles.
La personnalisation du module pour le support d'autres type d'API pour les feuilles de calcul d'the Microsoft® Excel® spreadsheet application ont été fabriquée de manière simple. Implémentez l'interface ExcelWorkbook
et enregistrez le dans components.xml.
<excel:excelFactory>
<property name="implementations">
<key
>myExcelExporter</key>
<value
>my.excel.exporter.ExcelExport</value>
</property>
</excel:excelFactory
>
et enregistrez l'espace de nom d'excel avec la balise du composant.
xmlns:excel="http://jboss.com/products/seam/excel"
Ensuite, définisez le type UIWorkbook à myExcelExporter
et votre propre exportateur sera utilisé. par défaut c'est "jxl", mais le support de CSV a été aussi ajouté, en utilisant le type "csv".
Voir Section 18.6, « La configuration de iText » pour l'information de comment configurer le servlet de document pour distribuer le document avec une extension .xls.
Si vous avez des problèmes pour accéder au fichier généré sous IE (particulièrement avec https), soyez sur de ne pas avoir de restricutions trop strictes dans le navigateur (voir http://www.nwnetworks.com/iezones.htm/), les contraintes de sécurité trop stricte dans web.xml ou une combinaisons des deux.
Lu'ilisation classique du support de feuille de calcul, utilise un classique <h:dataTable>
et vous pouvez le lier avec un List
, un Set
, un Map
, un Array
ou un DataModel
.
<e:workbook xmlns:e="http://jboss.com/products/seam/excel">
<e:worksheet>
<e:cell column="0" row="0" value="Hello world!"/>
</e:worksheet>
</e:workbook>
Ce n'est pas très difficile, allons voir les clas les plus courants:
<e:workbook xmlns:e="http://jboss.com/products/seam/excel">
<e:worksheet value="#{data}" var="item">
<e:column>
<e:cell value="#{item.value}"/>
</e:column>
</e:worksheet>
</e:workbook>
En premier, nous allons avoir un élément de haut-niveau workbook qui sert de containeur et qui n'a pas d'attributs. L'élément fil worksheet a deux attributs; value="#{data}" c'est la liaison EL avec la donnée et var="item" est le nom de l'élément courant. Englobé dans le worksheet, il y a une seule colonne et à l'intérieur vous pouvez voir une cellule qui à la liaison finale avec la données avec l'élément itirré courrant
Cela vous permet de commencer à remplir de données vos feuilles de calculs!
Les workboocks sont les parents de haut-niveaux des worksheets et des liens des feuilles de styles.
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet>
<e:cell value="Hello World" row="0" column="0"/>
</e:worksheet>
<e:workbook>
définie un classeur avec une feuille de calcul et format A1
Les feuilles de calculs sont les enfant des classeurs et les parents des colonnes et des commandes des feuilles de calculs. Ils contiennents aussi les cellules placé explicitement, les formules, les images et les liens hypertextes. Ils sont les pages qui font le classeurs.
|
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet name="foo" startColumn="1" startRow="1">
<e:column value="#{personList}" var="person">
<f:facet name="header">
<e:cell value="Last name"/>
</f:facet>
<e:cell value="#{person.lastName}"/>
</e:column>
</e:worksheet>
<e:workbook>
défini un classeur de calcul avec le nom "foo", commençant en B2.
Les colonnes sont les enfants des feuilles de calculs et les parents des cellules, des images, formules et hyperliens. Ils sont la structure qui controle l'itération dans les données de la feuille de calcul. Voir Section 19.14.5, « Les réglages de la colonne » pour le formattage.
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet value="#{personList}" var="person">
<e:column>
<f:facet name="header">
<e:cell value="Last name"/>
</f:facet>
<e:cell value="#{person.lastName}"/>
</e:column>
</e:worksheet>
<e:workbook>
définie une colonne avec un entétête et une sortie itérable
Les cellules sont regroupé dans des colonnes (pour l'itération) ou dans des classeurs (pour un positionnement directe en utilisant les attributs column
et row
) et sont responsable pour l'affichage de valeurs (habituellement au travers d'expressions EL en liaison avec l'attribut var
-de la base de données. Voir ???
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet
>
<e:column value="#{personList}" var="person">
<f:facet name="header">
<e:cell value="Last name"/>
</f:facet>
<e:cell value="#{person.lastName}"/>
</e:column>
</e:worksheet>
</e:workbook
>
définie une colonne avec un entétête et une sortie itérable
Les validations sont incluses dans les cellules ou les formules. Elles ajoutent des contraintes pour les données des cellules.
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet>
<e:column value="#{personList}" var="person"
>
<e:cell value="#{person.age">
<e:numericValidation condition="between" value="4"
value2="18"/>
</e:cell>
</e:column>
</e:worksheet>
</e:workbook
>
ajoute une validation numérique à une cellule en spécifiant que la valeur doit être entre 4 et 18.
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet>
<e:column value="#{personList}" var="person"
>
<e:cell value="#{person.position">
<e:rangeValidation startColumn="0" startRow="0"
endColumn="0" endRow="10"/>
</e:cell>
</e:column>
</e:worksheet>
</e:workbook
>
ajoute la validation à une cellule spécifiant que la valeur doit être comprise dans les valeurs spécifiées dans la zone A1:A10.
|
Les attributes
Les élements enfants
Les Facets
|
e:listValidation est juste un containeur pour conserver les multiples balises e:listValidationItem.
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet>
<e:column value="#{personList}" var="person"
>
<e:cell value="#{person.position">
<e:listValidation>
<e:listValidationItem value="manager"/>
<e:listValidationItem value="employee"/>
</e:listValidation>
</e:cell>
</e:column>
</e:worksheet>
</e:workbook
>
ajoute une validation à la cellule spécifiant que la valeur doit être "manager" ou "employee".
Les masques de formatage sont spécifiés dans l'attribut masque des cellules ou des formules. Il ya deux types de masques de formatage, un pour les nombres, l'autree pour les dates
Quand on rencontre un masque de format, en premier il est vérifié s'il est de la forme interrne, par exemple "format1", "accounting_float" et ensuite s'il (voir jxl.write.NumberFormats ).
Si le masque n'est pas dans la liste, il est traité comme un masque personnalisé (voir java.text.DecimalFormat ). par exemple "0.00" et automatiquement converti dans le correspondant le plus proche.
Quand il trouve un masque de formatage, en premier il est vérifié s'il est de la forme interne, par exemple "format1", "format2" et ainsi de suite (voir jxl.write.DecimalFormats ).
si le masque n'est pas dans la liste, il estr traité comme un masque personnalisé (voir java.text.DateFormat )., e.g "dd.MM.yyyy" et automatiquement converti dans le correspondant le plus proche.
Les formules sont regroupé dans les colonnes (pour l'itération) ou dans les feuilles de calcul (pour le placement direct en utilisant les attributs column
et row
) et ajoute les opérations de calcul ou les fonctions à un groupe de cellules. Ils sont surtout des cellules, voir Section 19.6, « Les cellules » pour les attributs disponibles, Notez qu'ils peuvent appliquer des modèles et ont leur propre définition depolices comme des cellules classiques.
La formule de la cellule est placé dans l'attribut value
comme une notation the Microsoft® Excel® spreadsheet application classique. Notez que quand on fait des formules croisant des feuilles, le classeur doit exister avant de lui référencer une formule. La valeur est une chaine de caractères.
<e:workbook>
<e:worksheet name="fooSheet">
<e:cell column="0" row="0" value="1"/>
</e:worksheet>
<e:worksheet name="barSheet">
<e:cell column="0" row="0" value="2"/>
<e:formula column="0" row="1"
value="fooSheet!A1+barSheet1!A1">
<e:font fontSize="12"/>
</e:formula>
</e:worksheet>
</e:workbook
>
définie une formule dans B2 sommant les cellules A1 dans les feuilles de calculs FooSheet et BarSheet
Les images sont regroupées dans les colonnes (pour l'itération) ou dans les feuilles de calculs (pour un placement direct en utilisant les attributs startColumn/startRow
et rowSpan/columnSpan
). L'étendue est optionnelet si il omit, l'image sera insérée sans être retaillée.
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet>
<e:image startRow="0" startColumn="0" rowSpan="4"
columnSpan="4" URI="http://foo.org/logo.jpg"/>
</e:worksheet>
</e:workbook
>
définie une image dans A1:E5 basée sur les données transmisses
Les hyperliens sont regroupé dans les colonnes (pour l'itération) ou dans les classeurs (pour un placement direct en utilisant les attributs startColumn/startRow
et endColumn/endRow
). Ils ajoutent des liens de navigations aux URIs
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet>
<e:hyperLink startRow="0" startColumn="0" endRow="4"
endColumn="4" URL="http://seamframework.org"
description="The Seam Framework"/>
</e:worksheet>
</e:workbook
>
défini un hyperlien et sa description qui point vers SFWK dans la zone A1:E5
Les entêtes et les pieds-de-pages sont des enfants des classeurs et contients les facets qui à leur tour contiennent les commandes qui sont analysées.
|
Les attributes
Les élements enfants
Les Facets
|
|
Les attributes
Les élements enfants
Les Facets
|
Le contenu de la facets est dans une chaine de caractères qui peut contenir plusieurs commandes délimitées par # comme ci-dessous:
#date# |
Insère la date courante |
#page_number# |
Insère le numéro de la page courante |
#time# |
Insère l'heure actuelle |
#total_pages# |
Insère le nombre total de page |
#worksheet_name# |
Insère le nom de la feuille de calcul |
#workbook_name# |
Insère le nom du classeur |
#bold# |
Activer la police en gras, ustilisez un autre #bold# pour le désactiver. |
#italics# |
Activer la police en italique, ustilisez un autre #italic# pour le désactiver. |
#underline# |
Basculer le soulignement, utilisez un autre #underline# pour désactiver |
#double_underline# |
Basculez le double soulignement, utilisez un autre #double_underline# pour désactiver |
#outline# |
Basculez la police surlignée, utilisez un autre #outline# pour désactiver |
#shadow# |
Basculez la police ombrée, utilisez un autre #shadow# pour désactiver |
#strikethrough# |
Basculez la police barrée, utilisez un autre #strikethrough# pour désactiver |
#subscript# |
Basculez la police en indice, utilisez un autre #subscript# pour désactiver |
#superscript# |
Basculez la police en exposant, utilisez un autre #superscript# pour désactiver |
#font_name# |
Définir le nom de la police, utilisez quelquechose comme #font_name=Verdana" |
#font_size# |
Défini une taille de police, utilisez quelquechose comme #font_size=12# |
<e:workbook>
<e:worksheet
>
<e:header>
<f:facet name="left">
This document was made on #date# and has #total_pages# pages
</f:facet>
<f:facet name="right">
#time#
</f:facet>
</e:header>
<e:worksheet>
</e:workbook>
Les zones d'impression et les titres sont les enfants des feuilles de calculs et des modèles de classeur et fournissent... zones d'impressions et titres.
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet
>
<e:printTitles firstRow="0" firstColumn="0"
lastRow="0" lastColumn="9"/>
<e:printArea firstRow="1" firstColumn="0"
lastRow="9" lastColumn="9"/>
</e:worksheet>
</e:workbook>
définie un titre d'impression entre A1:A10 et une zone d'impression entre B2:J10.
Les commandes de la feuille de calculs sont les enfant des classeurs et habituellement exécuté seulement une fois.
Fournir le regroupement de colonnes et de lignes.
|
Les attributes
Les élements enfants
Les Facets
|
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet
>
<e:groupRows startRow="4" endRow="9" collapse="true"/>
<e:groupColumns startColumn="0" endColumn="9" collapse="false"/>
</e:worksheet>
</e:workbook>
les lignes groupées de 5 à 10 et les colonnes de 5 à 10 ainsi les lignes sont initiallement repliées (mais pas les colonnes).
Fournir des sauts de page
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet
>
<e:rowPageBreak row="4"/>
</e:worksheet>
</e:workbook
>
saut de page à la ligne 5.
Fournir le regroupement de cellule
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:worksheet>
<e:mergeCells startRow="0" startColumn="0" endRow="9" endColumn="9"/>
</e:worksheet>
</e:workbook
>
fusions des cellules dans la zone A1:J10
Si vou préférez exporter une table de données JSF existante au lieu d'écrire un document XHTML dédié, ce qui peut aussi être réalisé facilement en exécutant le composant org.jboss.seam.excel.excelExporter.export
, en passant l'identifiant de la table de données comme un paramètre EL de Seam. Considerant que vous avez une table de données
<h:form id="theForm">
<h:dataTable id="theDataTable" value="#{personList.personList}"
var="person">
...
</h:dataTable>
</h:form>
que vous voulez voir coomme un classeur Excel® Microsoft® . Placez un
<h:commandLink
value="Export"
action="#{excelExporter.export('theForm:theDataTable')}"
/>
dans le formulaire et c'est fait. VOus pouvez bien sûr exécuter l'exportateur avec un bouton s:link ou toute méthode préférée. Il y a aussi des plans pour un tag d'exportation qui peut être placé dans la balise table de données ainsi vous n'avez pas à indiquer la table de données par son ID.
Voir Section 19.14, « Les polices et les calques » pour le formatage.
Le control de comment l'affichage est fait est une combinaison d'attributs de style CSS et d'attributs de tag. Les plus communs (polices, bordures, arrières plan, etc) sont CSS et quelques réglages généraux sont des attributs de tag.
Les attributs CSS en cascade depuis les parents vers les enfants et avec un tag surcharge les classes CSS référencés dans l'attribut styleClass
et finallement surcharge les attributs CSS définis dans l'attribut style
. Vous pouvez les placer dans presque partout mais en indiquant une largeur de colonne défini une cellule incluse dans la colonne est assez évident.
Si vous avez un masque de formatage ou des polices qui utiliser des caractères spéciaux, comme des espaces ou des points virgules, vous pouvez déspécialiser des caractères css avec le caractère '' comme xls-format-mask:'$;$'
Les feuilles de styles externes sont référencés dans la balise e:link. Ils sont placé comme enfant du classeur.
|
Les attributes
Les élements enfants
Les Facets
|
<e:workbook>
<e:link URL="/css/excel.css"/>
</e:workbook
>
Référence une feuille de style qui peut ête trouvé dans /css/excel.css
Ce groupe d'attributs XLS-CSS définit une police et ces attributs
xls-font-family |
Le nom de la police. Soyez sur qu'elle est supportée par votre système. |
xls-font-size |
La taille de la font. Utilisez un nombre entier. |
xls-font-color |
La couleur de la police (voir jxl.format.Colour ). |
xls-font-bold |
Doit-elle être en gras? Les valeurs valides sont "true" et "false" |
xls-font-italic |
Doit-elle être en italique? Les valeurs valides sont "true" et "false" |
xls-font-script-style |
Le style de script de la police (voir jxl.format.ScriptStyle ). |
xls-font-underline-style |
Le style de soulignement de la police (voir jxl.format.UnderlineStyle ). |
xls-font-struck-out |
Doit-elle être soulignée? Les valeurs valides sont "true" et "false" |
xls-font |
Un notation plus courte pour définir toutes ces valeurs. Indiquez le nom de la police à la fin et utilisez les graduations de la polices avec des espaces entre eux, par exemple 'Times New Roman'. Utilisez "italic", "bold" et "struckout". Example style="xls-font: red bold italic 22 Verdana" |
Ce groupe d'attributs XLS-CSS déinissent les bordures de la cellule
xls-border-left-color |
La couleur de la bordure pour la bordure gauche de la cellule (voir jxl.format.Colour ). |
xls-border-left-line-style |
Le style de la ligne de bordure de la bordure gauche de la cellule (voir jxl.format.LineStyle ). |
xls-border-left |
Un raccourci pour définir le style de la ligne et la couleur de la bordure gauche de la cellule, par exemple style="xls-border-left: thick red" |
xls-border-top-color |
La couleur de la bordure pour la bordure suppérieure de la cellule (voir jxl.format.Colour ). |
xls-border-top-line-style |
Le style de la ligne de la bordure du bord suppérieur de la cellule (voir jxl.format.LineStyle ). |
xls-border-top |
Un raccourci pour définir le style de la ligne et de la couleur de la bordure suppérieure de la cellule, par exemple style="xls-border-top: red thick" |
xls-border-right-color |
La couleur de la bordure de la bordure droite de la cellule (voir jxl.format.Colour ). |
xls-border-right-line-style |
Le style de la ligne de bordure de la bordure de droit de la cellule (voir jxl.format.LineStyle ). |
xls-border-right |
Un raccourci pour définir le style de la ligne et la couleur pour la bordure droit de la cellule , par exemple style="xls-border-right: thick red" |
xls-border-bottom-color |
La couleur de la bordure de la bordure inférieure de la cellule (voir jxl.format.Colour ). |
xls-border-bottom-line-style |
Le style de ligne de bordure dans le bord inférieur de la cellule (voir jxl.format.LineStyle ). |
xls-border-bottom |
Un raccourci pour définir les réglages du style de la ligne pour la bordure inférieure de la cellule , par exemple style="xls-border-bottom: thick red" |
xls-border |
Une version courte pour définir un style de ligne et de couleur pour toutes les bordures de la cellule, par exemple style="xls-border: thick red" |
Ce groupe d'attributs XLS-CSS définissent l'arrière plan de la cellule
xls-background-color |
La couleur de l'arrière plan (voir jxl.format.LineStyle ). |
xls-background-pattern |
Le patron de l'arrière plan (voir jxl.format.Pattern ). |
xls-background |
Un raccourci pour définir la couleur d'arrière plan et le patron. Voir plus loiin les règles. |
Ce group d'attributs XLS-CSS définissent les largeurs de la colonne etc.
xls-column-width |
La largeur de la colonne. Utilisez une valeur importante (~5000) pour commencer. Utiliser par e:column dans le mode xhtml. |
xls-column-widths |
La largeur de la colonne? Utilisez les valeurs importante (~5000) pour commencer. Utiliser par l'exportateur d'excel, à indiquer dans l'attribut de style de la table de données. Utilisez des valeurs numériques ou * pour laisser libre une colonne. Exemple style="xls-column-widths: 5000, 5000, *, 10000" |
xls-column-autosize |
Faut il avoir une taille automatique pour la colonne? Les valeurs valides sont "true" et "false". |
xls-column-hidden |
La colonne doit elle être cachée? Les valeurs valides sont "true" et "false". |
xls-column-export |
La colonne doit elle être montrée dans l'exportation? Les valeurs valides sont "true" et "false".Par défaut c'est "true". |
Ce groupe d'attributs XLS-CSS dé"finissent les propriétés de cellule
xls-alignment |
L'allignement de la valeur de la cellule (voir jxl.format.Alignment ). |
xls-force-type |
Le type forcé de la donnée de la cellule. La valeur est une chaine de caractères qui peut être une de celle-ci "general", "number", "text", "date", "formula" or "bool". Le type est automatiquement détecté donc c'est rare de devoir utiliser cet attribut. |
xls-format-mask |
Le masque de format de la cellule, voir Section 19.6.2, « Masque de formatage » |
xls-indentation |
L'indentation de la valeur de la cellule. La valeur est un nombre. |
xls-locked |
Faut-il que la cellule soit vérouillée. A utiliser avec le niveau de vérouillage du classeur. Les valeurs valides sont "true" et "false". |
xls-orientation |
L'orientation de la valeur de la cellule (voir jxl.format.Orientation ). |
xls-vertical-alignment |
L'alignement verticale de la valeur de cellule (voir jxl.format.VerticalAlignment ). |
xls-shrink-to-fit |
Les valeurs de la cellules doivent être réduite pour correspondre? Les valeurs valides sont "true" et "false". |
xls-wrap |
La cellule doit elle s'étendre avec des nouvelles lignes ? Les valeurs valides sont "true" et "false". |
L'exportateur de la table de données utilise les même attributs xls-css comme document xhtml avec l'exception suivante que les largeurs de colonnes sont définies avec l'attributxls-column-widths
de la table de données (car UIColumn ne permet pas d'avoir les attributs style ou styleClass).
Dans la version actuelle, il y a quelques limitations connues par rapport au support de CSS
Avec l'utilisation de documents .xhtml, les feuilles de styles doivent être référencés au travers d'une balise <e:link>
Avec l'utilisation de l'exportateur de table de donné, le CSS doit être entré en mode d'attributs, les feuilles de styles externes ne sont pas supportées
Il ya seulement deux clefs livrées utilisées, les deux pour des formatage de données invalides et les deux prennent une paramètree (la valeur invalide)
org.jboss.seam.excel.not_a_number
— Quand une valeur doit être un nombre et ne peut être traité en temps que tel
org.jboss.seam.excel.not_a_date
— Quand une valeur doit être une date ne peux être traité en tant que telle
Le coeur des fonctionnalitées de the Microsoft® Excel® spreadsheet application est basé sur l'excelente bibliothèque JExcelAPI qui peut être trouvé sur http://jexcelapi.sourceforge.net/ et la plus part des fonctionnalités et les limitations possibles ont été héritées.
Si vous utiliser le forum ou les listes de diffusions, merci de vous rappelez qu'ils ne connaissent rien à propos de Seam et de l'utilisation de ses bibliothèques, tout problèmes doivent être indiqués dans le JBoss Seam JIRA dans le module "excel".