GXT Grid导出到excel文件

时间:2013-06-04 18:37:29

标签: gwt grid gwt2 gxt

我正在使用GXT。 我有一个网格。

com.sencha.gxt.widget.core.client.grid.Grid<RiaBean>  grid;

我想将其导出为ex​​cel文件。

我不想使用外部Jar文件。

任何身体帮助。

1 个答案:

答案 0 :(得分:3)

您的网格由ColumnConfig<RiaBean,?>组成。

每个ColumnConfig<RiaBean,?>都与ValueProvider<RiaBean,?>相关联。每个ValueProvider<RiaBean,?>都包含一个方法getPath(),用于返回所显示元素的路径。

因此,您可以轻松获取所显示元素的路径,将它们发送到服务器并通过Introspection或EL获取值。

例如,我们来看看这个课程

public class RIABean{
  private String a;
  private Integer b;
  private Boolean c;
  private Integer idFoo;
}

使用扩展PropertyAccess的界面轻松定义ValueProviders。它还将生成具有准确值的方法getPath()。

public interface RIABeanPropertyAccess extends PropertyAccess<RIABean>{
  //The generated getPath() method returns "a"
  ValueProvider<RIABean,String> a();
  //The generated getPath() method returns "b"
  ValueProvider<RIABean,Integer> b();
  //The generated getPath() method returns "c"
  ValueProvider<RIABean, Boolean> c();
  //The generated getPath() method returns "foo.id"
  @Path("foo.id")
  ValueProvider<RIABean, Integer> idFoo();
}

为您的网格创建ColumnModel:

RIABeanPropertyAccess pa=GWT.create(RIABean.class);
List<ColumnConfig<RIABean,?>> listCols=new ArrayList<ColumnConfig<RIABean,?>>();
listCols.add(new ColumnConfig(pa.a(),100,"Header text for column A");
listCols.add(new ColumnConfig(pa.b(),100,"Header text for column B");
listCols.add(new ColumnConfig(pa.c(),100,"Header text for column C");
ColumnModel colModel=new ColumnModel(listCols);

当用户点击“导出”按钮时,只需迭代网格的ColumnConfig<RiaBean,?>列表,以获取每个网格的Path并将此路径列表发送到服务器。然后,服务器可以使用内省/反射/ EL来获取与每个路径对应的值。

无法在客户端生成文件。由于服务器必须这样做,这是我所知道的最简单的方式,而这正是我们团队中的工作。

最后,问问自己是否真的需要excel文件或者csv文件是否足够。 csv文件可以在没有任何库的情况下轻松完成,并且可以使用Excel打开。