我正在使用 GXT。我有一个网格。
com.sencha.gxt.widget.core.client.grid.Grid<RiaBean> grid;
我想将其导出到 excel 文件。
我不想使用外部 Jar 文件。
任何机构都可以帮忙。
您的 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打开。