我正在使用GXT。 我有一个网格。
com.sencha.gxt.widget.core.client.grid.Grid<RiaBean> grid;
我想将其导出为excel文件。
我不想使用外部Jar文件。
任何身体帮助。
答案 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打开。