`
jiajie0531
  • 浏览: 27805 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

eXtremeTable--Export

    博客分类:
  • java
阅读更多
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>
 
 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics