1

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

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

我想将其导出到 excel 文件。

我不想使用外部 Jar 文件。

任何机构都可以帮忙。

4

1 回答 1

3

您的 Grid 由ColumnConfig<RiaBean,?>.

每个ColumnConfig<RiaBean,?>都链接到一个ValueProvider<RiaBean,?>. EveryValueProvider<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打开。

于 2013-06-04T18:56:58.130 回答