第19章. 微软的Excel 电子表格应用程序支持

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”,增加了对CSVComma 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” 是当前项目的名字。嵌套在工作表内的是一个单列,并且它内部的单元最终绑定了在当前迭代项目内的数据。

 

这就是你知道得开始转储你的数据到工作表的全部了。

 

19.3. 工作簿

工作簿是工作表和样式表链接的顶层父类。

 

<e:workbook>

属性

·         type —使用的输出模块定义。其值是字符串,可以是"jxl" or "csv"之一。默认是"jxl"。

·         templateURI —一个模板,应使用来作为工作表的基础,值是一个字符串(URL)。

·         arrayGrowSize —内存数量,通过它增加分配来存储工作簿数据的内存数量。对于在一个WAS内部读取许多小工作簿的进程,减少默认大小可能是有必要的,默认值是一兆字节。值是一个数(字节)。

·         autoFilterDisabled —自动过滤将禁止吗?值为一个布尔值。

·         cellValidationDisabled —单元格校验将忽略吗?值为一个布尔值。

·         characterSet —字符集。这只在电子表格读取时使用,在写入时无效。值是一个字符串(字符集编码)。

·         drawingsDisabled —制图将禁止吗?值为一个布尔值。

·         excelDisplayLanguage —语言,产生的文件显示使用。值是一个字符串(两个字符ISO 3166国家代码)。

·         excelRegionalSettings —产生的excel文件的区域设置值是一个字符串(两个字符ISO 3166国家代码)。

·         formulaAdjust —公式将调整吗?值是一个布尔值。

·         gcDisabled —垃圾回收将禁止吗?值是一个布尔值。

·         ignoreBlanks —忽略空格吗?值是一个布尔值。

·         initialFileSize —在读取工作表时,分配来存储工作簿数据的初始内存数量。对于在一个WAS内部读取许多小工作簿的进程,减少默认大小可能是有必要的,默认值是五兆字节。值是一个数(字节)。

·         locale —使用的地区,通过JExcelApi产生电子表格。涉及到产生的excel文件的语言和区域时,设置此值是无效的。值是一个字符串。

·         mergedCellCheckingDisabled —合并单元格检查将禁止吗?值是一个布尔值。

·         namesDisabled —处理的名字将禁止吗?值是一个布尔值。

·         propertySets —所有属性集随工作被拷贝将启用(比如宏)吗?放弃启用这个功能会导致JXL处理使用更多的内存。值是一个布尔值。

·         rationalization —在写下表之前,单元格格式将被合理化吗?值是一个布尔值。默认为true。

·         supressWarnings —警告将被抑制吗? 由于在登录版2.4的改变,现在,这会对跨越JVM(依赖于使用的注册器的类型)行为设置警告。值是一个布尔值

·         temporaryFileDuringWriteDirectory —与useTemporaryFileDuringWrite 设置联合使用来设置临时对象目录。此值可以为空,在这种情况,常规系统使用默认目录代替。值是一个字符串(临时文件将写入的目录)

·         useTemporaryFileDuringWrite —在产生工作簿期间临时文件将被使用。如果没有使用,工作簿会完全运行在内存。设置这个标志涉及到内存使用和性能之间的权衡评估。值是一个布尔值。

·         workbookProtected —工作簿将被保护吗?值是一个布尔值。

·         filename —用来下载的文件名。值是一个字符串。如果你映射DocumentServlet到一些模板,此文件的扩展名也必须匹配,请不要这样。

·         exportKey —一个key,根据它在事件作用域中存储结果数据到一个DocumentData对象。

子元素

·         <e:link/> —零或多个样式表链接。 (见章节Section 19.14.1, 样式表链接” )。

·         <e:worksheet/> —零或多个工作簿。(见章节 19.4, “工作簿” )。

Facets

·        

 
 
            <e:workbook>
 
               <e:worksheet>
 
                  <e:cell value="Hello World" row="0" column="0"/>
 
               </e:worksheet>
 
            <e:workbook>
 
   

定义用一个工作表定义一个工作簿,并且一个问候名放在A1单元。

19.4. 工作表

工作表是工作簿的孩子,又是列的父亲,并且它们也可以包含工作表命令明确地设置单元、公式、图象和超链接。它们是构成工作簿的页面。

<e:worksheet>

·         value —一个返回数据的EL表达式。值是一个字符串。这个表达式的目的是审查一个可迭代。注意,如果目标是一个映射,迭代是越过Map.Entry entrySet()执行, 所经在你的引用中你应该使用一个.key或 .value到目标 。

·         var —当前行的迭代器变量名,稍后可以在单元格值属性中引用。值是一个字符串。

·         name —工作表名。值是一个字符串。默认成Sheet#,这儿#是该工作表的索引。如果给定的工作表名存在,这个表被选定。这可以用来合并几个数据集到单一的工作表,只要为它们定义同样的名字就可以了(使用startRowstartCol确保它们不占据同样的空间)。

·         startRow —定义数据的开始行。值为数字。用来设置数据在与左上角相比较的其它地方(如果单一工作表有多个数据集,尤其有用)。默认值为0。

·         startColumn —定义数据的开始列。值为数字。用来设置数据在与左上角相比较的其它地方(如果单一工作表有多个数据集,尤其有用)。默认值为0。

·         automaticFormulaCalculation —公式将要自动计算吗?值为一个布尔值。

·         bottomMargin —下边距。值为数字(inches)。

·         copies —复制的份数。值为数字。

·         defaultColumnWidth —默认的列宽。值为数字(字符*256)。

·         defaultRowHeight —默认行高。值为数字(点的1/20ths)

·         displayZeroValues —零值将要显示吗?值为布尔值。

·         fitHeight —工作表将要被打印到页面的纵向数。值为数字。

·         fitToPages —打印将符合页面吗? 值为布尔。

·         fitWidth —工作表将要被打印到页面的横向数。值为数字。

·         footerMargin —所有页脚的边距。值为数字(inches)。

·         headerMargin —所有页眉的边距。值为数字(inches)。

·         hidden —工作表将要被隐藏吗?值为布尔。

·         horizontalCentre —工作表将要被水平居中吗?值为布尔。

·         horizontalFreeze —行所在的边被水平冻结吗?值为数字。  

·         horizontalPrintResolution —水平打印的解析度。值为数字。  

·         leftMargin —左边距. 值为数字(inches)。

·         normalMagnification —标准放大系数(不放大或比例系数)值为数字(百分比)。

·         orientation —打印这个工作表的纸的方向。值是字符“landscape”或“portrait”(横或纵)。

·         pageBreakPreviewMagnification —分页预览的放大系数(不放大或比例系数). 值为数字(百分比)。

·         pageBreakPreviewMode —用预览方式显示页面?值为布尔。.

·         pageStart —开始打印的页面数。值为数字。

·         paperSize —打印此页使用的纸张大小。值是字符"a4", "a3", "letter", "legal" 等之一(见 jxl.format.PaperSize ).

·         password —工作表的密码。值为字符。

·         passwordHash —密码散列- 仅用在复制工作表时。值为字符。

·         printGridLines —将要打印网格线吗?值为布尔。

·         printHeaders —将要打印页眉吗? 值为布尔。

·         sheetProtected —将工作表保护吗(read-only只读)? (值为布尔。

·         recalculateFormulasBeforeSave —在工作表被保存时将要重计算公式吗?值为布尔。假

·         rightMargin —右边距. 值为数字(inches)。

·         scaleFactor —用来打印此表时的放大系数。值为数字(百分比)。

·         selected —在工作簿打开时,将要选此工作表吗?值为布尔。

·         showGridLines —将要显示网格线吗?值为布尔。

·         topMargin —上边距。值为数字(inches)。

·         verticalCentre —垂直居中吗?值为布尔。

·         verticalFreeze —行所在的边被垂直冻结吗?值为数字。   

·         verticalPrintResolution —垂直打印的解析度。值为数字。值为数字。

·         zoomFactor —缩放系数。不要混淆缩放系数(相对屏幕视图)与比例系数()。Do not confuse zoom factor (which relates to the on screen view) with scale factor (它指打印的比例系数). 值是数字((percentage)

子元素

·         <e:printArea/> —定义的零个或多个打印区域。(见章节19.11, “打印区和标题” )。

·         <e:printTitle/> —定义的零个或多个打印标题(见章节19.11, “打印区和标题” )。

·         <e:headerFooter/> —定义的零个或多个页眉/页脚 (见章节 19.10, “页眉和页脚” )。.

·         零个或多个工作表命令 (见章节 19.12, “工作表命令” ).

Facets

·         header—会被放在数据块顶部的内容,在列标题的上面。 (如果有的话)

·         footer—会被放在数据块底部的内容,在列页脚的下面。 (如果有的话)

 
 
            <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.5. 列

列是工作表的子元素,又是单元格、图象、公式和超链接的父元素。它们是控制工作表数据迭代的结构。格式见章节 19.14.5, “列设置”

<e:column>

属性

·        

子元素

·         <e:cell/> —零或多个单元格(见章节19.6, “单元格 ).

·         <e:formula/> —零或多个公式(见章节 19.7, “公式 ).

·         <e:image/> —零或多个图象(见章节19.8, “图象 ).

·         <e:hyperLink/> —零或多个超链接(见章节19.9, “超链接 ).

Facets

·         header —这个 facet可以包含一个<e:cell> , <e:formula> , <e:image> 或r <e:hyperLink> ,会被用来作为列的标题。

·         footer —这个 facet可以包含一个<e:cell> , <e:formula> , <e:image><e:hyperLink> ,会被用来作为列页脚。

 
            <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>
 
      

用一个标题和一个迭代输出定义一个列。

19.6. 单元格

单元格嵌套在列的里面(为迭代)或在工作表的内部(为使用columnrow的属性直接布置),且负责值的输入(但通常包括数据表的var属性的EL表达式,并且它们可以包含字体或其它格式和预定义模板)。

<e:cell>

属性

·         column —列,用来放置单元格的地方。默认的是内部计数器。值为数字。注意,值是基于0的。

·         row —行,用来放置单元格的地方。默认的是内部计数器。值为数字。注意,值是基于0的。

·         <sp

分享到:
评论
alienj
  • 浏览: 45902 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

你可能感兴趣的:(数据结构,工作,jboss,Excel,seam)