eXtremeTable具有導(dǎo)出不同格式文件的功能,導(dǎo)出的數(shù)據(jù)為過(guò)濾和排序后的所有結(jié)果集,
分頁(yè)不會(huì)影響返回的結(jié)果集。換句話說(shuō),如果表數(shù)據(jù)分多頁(yè)顯示,那么所有頁(yè)的數(shù)據(jù)都將被導(dǎo)出。 導(dǎo)出的格式為Microsoft Excel (OpenOffice
Calc)、PDF和CSV。
使用ExportXlsTag導(dǎo)出Microsoft Excel (OpenOffice Calc):
<ec:table
items="presidents"
action="${pageContext.request.contextPath}/presidents.run"
/>
<ec:exportXls
fileName="presidents.xls"
tooltip="Export Excel"/>
...
</ec:table>
使用ExportPdfTag導(dǎo)出PDF。所有要做的就是指定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>
使用ExportCsvTag導(dǎo)出CSV。當(dāng)使用CSV導(dǎo)出是默認(rèn)的分隔符為‘,’(comma)。你可以使用
delimiter屬性來(lái)指定為其他的符號(hào)。下面為指定‘|’(pipe)為CSV分隔符的示例:
<ec:table
items="presidents"
action="${pageContext.request.contextPath}/presidents.run"
/>
<ec:exportCsv
fileName="presidents.txt"
tooltip="Export CSV"
delimiter="|"/>
...
</ec:table>
你可以通過(guò)指定view屬性來(lái)導(dǎo)出其他文件格式。eXtremeTable視圖實(shí)現(xiàn)View接口并是 可插接的。參閱View章了解更多信息。
大多數(shù)標(biāo)簽包含一系列的固定屬性,這樣那些已經(jīng)實(shí)現(xiàn)的功能能夠被使用。然而,eXtremeTable具有一種更具彈性的架構(gòu),
你可以添加自己的標(biāo)簽屬性實(shí)現(xiàn)更多的定制工作。此外,eXtremeTable提供了非常清晰的鉤子(hooks)允許你得到那些定制的
標(biāo)簽屬性來(lái)做一些你需要的工作。
通過(guò)addExtendedAttributes()方法將擴(kuò)展屬性包含到eXtremeTable里:
public void addExtendedAttributes(Export export);
如果方法被覆蓋ExportTag將調(diào)用它。你需要做的就是擴(kuò)展ExportTag,覆蓋addExtendedAttributes()方法,然后添加自己
的屬性到導(dǎo)出對(duì)象中。
一個(gè)定制的ExportCsvTag示例如下:
public class ExportCsvTag extends ExportTag {
private String delimiter;
public String getDelimiter() {
return delimiter;
}
public void setDelimiter(String delimiter) {
this.delimiter = delimiter;
}
public void addExtendedAttributes(Export export) {
String view = export.getView();
if (StringUtils.isBlank(view)) {
export.setView(TableConstants.VIEW_CSV);
export.setImageName(TableConstants.VIEW_CSV);
}
export.addAttribute(CsvView.DELIMITER, getDelimiter());
}
}
現(xiàn)在你添加了屬性值到Export對(duì)象,下面是CsvView實(shí)現(xiàn)的一部分:
public class CsvView implements View {
public void body(TableModel model, Column column) {
Export export = model.getExportHandler().getCurrentExport();
}
}
另外,你也可以定制自己的標(biāo)簽和自己的TLD文件。你不需要修改extremecomponents.tld文件。
你能象使用eXtremeTable里的標(biāo)簽一樣使用自己的標(biāo)簽,除了使用你自己標(biāo)簽的參照。假如你的標(biāo)簽參照為mycompany
并且標(biāo)簽為customExport,你可以像下面一樣使用他們:
<ec:table
items="presidents"
action="${pageContext.request.contextPath}/public/demo/presidents.jsp"
title="Presidents"
>
<mycompany:customExport fileName="presidents.txt" delimiter="|"/>
...
</ec:table>