eXtremeTable--Export

Export
导出
 

Introduction

介绍
 
eXtremeTable本身有一个能力, 就是可以导出table内容为多种格式. 当导出时, 在过滤和排序后,  你将会得到完整的结果集.  分页不会影响返回的结果记录. 换句话说, 如果table内容显示在多页时, 所有页面的所有结果记录都会被导出. 导出的格式包括 Excel, PDF 和CSV.
 
为了导出 Microsoft Excel (OpenOffice Calc), 需要使用ExportXls Tag.

 <ec:table
   items="presidents"
   action="${pageContext.request.contextPath}/presidents.run"
   />
   <ec:exportXls
     fileName="presidents.xls"
     tooltip="Export Excel"/>
   ...
 </ec:table>

默认的XlsView使用的是UTF-16编码. 如果你需要使用unicode, 那么可以使用编码特性. 可以使用的编码有UTF和UNICODE.

 

为了导出PDF, 可以使用ExportPdfTag. 你需要定义是fileName特性和一些其他类型的特性.

 <ec:table
   items="presidents"
   action="${pageContext.request.contextPath}/presidents.run"
   />
   <ec:exportPdf
     fileName="presidents.pdf"
     tooltip="Export PDF"
     headerColor="blue"
     headerBackgroundColor="red"
     headerTitle="Presidents"/>
   ...
 </ec:table>

为了导出CSV, 可以使用ExportCsvTag. 当使用CSV导出是, 默认的分隔符是逗号. 如果你想要用其他符号来分割的话, 那么可以使用delimiter特性. 在这个例子中, 我使用竖杠(pipe)来分割.


 <ec:table
   items="presidents"
   action="${pageContext.request.contextPath}/presidents.run"    />
   <ec:exportCsv
     fileName="presidents.txt"
     tooltip="Export CSV"
     delimiter="|"/>
   ...
 </ec:table>

如果你想要构建其他的输出格式, 你可以用view特性. 在eXtremeTable中views实现了接口View, 是可插拔式的. 可以参考 [[Views|View]] 这一章节获取更多的信息.

 

Interceptor

拦截器
 
拦截器的特征就是被用来在运行时改变属性值的. 这就能够改变基于数据的导出行为了, 关于更多的拦截器相关可以参考   interceptor tutorial .
 

Extended Attributes

扩展特性
 
大部分tags被开发的方式是, 在一个tag上拥有一些固定的特性. 那些特性然后被使用, 一些固定集合的功能能够被调用. 然而, eXtremeTable有着更多的灵活性. eXtremeTable给你一种方式来增加你自己tag的特性, 以至于你能做更多定制化的工作. 不止如此, 在eXtremeTable中有着更清晰的hooks, 从而允许你获取到那些自定义的tag特性, 然后再编辑它们. 下面将会是一个典型的自定义的View.
 
hook为了能包括eXtremeTable中的特性, 可以通过addExportAttributes()方法.

public
void addExportAttributes(TableModel model, Export export) {
}
ExportTag调用这个方法, 如果其方法被重写了. 那也就意味着你需要扩展ExportTag, 重写addExportAttributes()方法, 然后增加你自己的特性到Export对象中.
 
这个就是ExportCsvTag的示例代码:

public
class ExportCsvTag extends ExportTag {
  private String delimiter;
 
  public String getDelimiter() {
        return delimiter;
  }

  public void setDelimiter(String delimiter) {
        this.delimiter = delimiter;
  }
 
  public void addExportAttributes(TableModel model, Export export) {
        export.addAttribute(CsvView.DELIMITER, TagUtils.evaluateExpressionAsString("delimiter", delimiter, this, pageContext));
    }
}

 

既然你增加了特性, 你可以从Export中来获取他们. 这里是CsvView实现的一部分代码:

 public class CsvView implements View {
   public void body(TableModel model, Column column) {
     Export export = model.getExportHandler().getCurrentExport();
     String delimiter = export.getAttributeAsString(DELIMITER);
   }
 }

另外一件事我想要确保你明白的是, 你能够创建你自己的tag, 拥有你自己的TLD文件. 你不需要去修改extremecomponents.tld文件. 还可以你使用你自定义的tag, 就如同在eXtremeTable中你使用其他的tag一样, 除非你引用你自己的tag.  例如, 如果你的tag引用是mycompany, tag被称为customExport, 你可以编辑成下面这样:


 <ec:table
     items="presidents"
     action="${pageContext.request.contextPath}/public/demo/presidents.jsp"
     title="Presidents"
     >
   <mycompany:customExport fileName="presidents.txt" delimiter="|"/>
   ...
 </ec:table>
 
 

 

你可能感兴趣的:(jsp,extreme table)