第19章. 微软的Excel 电子表格应用程序支持
Seam也支持微软的Excel ?电子表格应用程序的电子表格生成,通过卓越的JExcelAPI库。生成的文档是与微软的Excel ?电子表格应用程序95, 97, 2000, XP and 2003版兼容的。 目前库功能的一个有限子集被暴露,但是最终目标是能做库允许的任何事情。有关其能力和局限性更多的信息请参考JExcelAPI文档
19.1. 微软的Excel ?电子表格应用程序支持
微软的Excel ?电子表格应用程序jboss-seam-excel.jar。这个JAR包含微软的Excel ?电子表格应用程序JSF控件, 其常被用来构建可以渲染文档的视窗,以及DocumentStore组件,其提供渲染的文档给用户。 为了包括微软的Excel ?电子表格应用程序支持在你的应用程序中, 连同jxl.jar文件 和jboss-seam-excel.jar文件包含在你的WEB-INF/lib目录中。此别,你需要在你的web.xml文件中配置DocumentStore servlet 。
微软的Excel ?电子表格应用程序Seam模块需要作为视窗技术的Facelets的使用。还加上,它需要seam-ui包的使用。
examples/excel项目在实践中包含了一个微软的Excel ?电子表格应用程序支持例子。它演示了正确地部署包,并且也显示了暴露的功能。
支持其它类的微软的Excel ?电子表格应用程序的电子表格API的自定义模块变得非常容易。实现工作簿接口,并在components.xml中注册。
<excel:excelFactory>
<property name=”implementations”>
<key>myExcelExporter</key>
<value>my.excel.exporter.ExcelExport</value>
</property>
</excel:excelFactory>
并用组件标签注册excel命名空间
xmlns:excel=http://jboss.com/products/seam/excel
然后,设置UIWorkbook类型到myExcelExporter ,那么你自己的输入器就会被使用。默认是”jxl”,但使用类型”csv”,增加了对CSV(Comma Separated value)的支持。
看章节18.6 “配置iText”有关怎么配置文档servlet支持.xls文档的信息。
如果你在IE下(尤其对https)访问生成的文件有问题,确定你在浏览器中没有使用了严格的约束(看http://www.nwnetworks.com/iezones.htm/),在web.xml中也没有太严格的安全约束,或者两者的组合。
19.2. 创建一个简单的工作薄
工作表支持的基本用法是简单; 它使用了熟悉的<h:dataTable>,并且你能绑定一个List, Set, Map, Array或者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>
这是非常无用的,所以让我们看一个更通用的案例:
<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>
首先我们有一个顶级的工作簿元素,它作为容器提供,并且没有任何属性。 子元素工作表有两个属性; value=”#{data}” 是EL绑定到数据, var=”item” 是当前项目的名字。嵌套在工作表内的是一个单列,并且它内部的单元最终绑定了在当前迭代项目内的数据。
这就是你知道得开始转储你的数据到工作表的全部了。
工作簿是工作表和样式表链接的顶层父类。
|
属性 · · · · · · · · · · · · · · · · · · · · · · · · 子元素 · · Facets · |
<e:workbook>
<e:worksheet>
<e:cell value="Hello World" row="0" column="0"/>
</e:worksheet>
<e:workbook>
定义用一个工作表定义一个工作簿,并且一个问候名放在A1单元。
工作表是工作簿的孩子,又是列的父亲,并且它们也可以包含工作表命令明确地设置单元、公式、图象和超链接。它们是构成工作簿的页面。
|
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · 子元素 · · <e:printTitle/> —定义的零个或多个打印标题(见章节19.11, “打印区和标题” )。 · <e:headerFooter/> —定义的零个或多个页眉/页脚 (见章节 19.10, “页眉和页脚” )。. · 零个或多个工作表命令 (见章节 19.12, “工作表命令” ). 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>
用名字 "foo"定义一个工作表, 开始在B2。
列是工作表的子元素,又是单元格、图象、公式和超链接的父元素。它们是控制工作表数据迭代的结构。格式见章节 19.14.5, “列设置”。
|
属性 · 子元素 · · · · 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>
用一个标题和一个迭代输出定义一个列。
单元格嵌套在列的里面(为迭代)或在工作表的内部(为使用column
或row
的属性直接布置),且负责值的输入(但通常包括数据表的var
属性的EL表达式,并且它们可以包含字体或其它格式和预定义模板)。
|
属性 · · ·
|
评论