smartgwt 将 listgrid 数据源导出到 excel 文件

标签 smartgwt

我想将我的 ListGrid 数据源导出到 Excel 文件,我正在使用 excel 文件,因为我想在 excel 文件中填充我的 listgrid 字段。有没有人知道该怎么做。这对我会有很大的帮助。

谢谢 Ankit。

最佳答案

作为一个业余爱好者,即使我也想做同样的事情,但在 SmartGwt 中几乎没有选择。只有 SmartGwt Pro/Power/EE 版本有这样的功能。然而,我已经找到了解决这个问题的方法,并且附上了代码,因为目前还没有示例,如果有人像我一样是 GWT 的新手,你将不得不花费整个时间来破解它。下面的示例代码简单易懂。

 public class GridToCSV implements EntryPoint {



    /**
     * Create a remote service proxy to talk to the server-side Greeting
     * service.
     */
    private final GreetingServiceAsync greetingService = GWT.create(GreetingService.class);

    public void onModuleLoad() {

        DataSource dataSource = new DataSource();
        dataSource.setDataFormat(DSDataFormat.JSON);
        dataSource.setDataURL("data/countries_small.js");

        DataSourceTextField nameField = new DataSourceTextField("name", "Name");
        DataSourceTextField populationfield = new DataSourceTextField(
                "population", "Population");
        DataSourceTextField areaField = new DataSourceTextField("total_area",
                "Total Area");
        DataSourceTextField governmentField = new DataSourceTextField(
                "government", "Government");

        dataSource.setFields(nameField, populationfield, areaField,
                governmentField);

        final ListGrid grid = new ListGrid();
        grid.setDataSource(dataSource);
        grid.setWidth100();
        grid.setHeight(150);
        grid.setAutoFetchData(true);

        IButton button = new IButton("Export CSV");
        button.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                StringBuilder exportedCSV = exportCSV(grid);
                System.out.println(exportedCSV);
                sendTOServer(exportedCSV);
                // Window.Location(listGrid.exportData());
            }

        });
        //grid.draw();
        //button.draw();

        VLayout layout = new VLayout(); layout.addMember(button);
        layout.addMember(grid); 
        layout.addMember(button);
        layout.setWidth100();
        layout.draw();


    }

    private StringBuilder exportCSV(ListGrid listGrid) {
        StringBuilder stringBuilder = new StringBuilder(); // csv data in here

        // column names
        ListGridField[] fields = listGrid.getFields();
        for (int i = 0; i < fields.length; i++) {
            ListGridField listGridField = fields[i];
            stringBuilder.append("\"");
            stringBuilder.append(listGridField.getName());
            stringBuilder.append("\",");
        }
        stringBuilder.deleteCharAt(stringBuilder.length() - 1); // remove last
                                                                // ","
        stringBuilder.append("\n");

        // column data
        ListGridRecord[] records = listGrid.getRecords();
        for (int i = 0; i < records.length; i++) {
            ListGridRecord listGridRecord = records[i];
            ListGridField[] listGridFields = listGrid.getFields();
            for (int j = 0; j < listGridFields.length; j++) {
                ListGridField listGridField = listGridFields[j];
                stringBuilder.append("\"");
                stringBuilder.append(listGridRecord.getAttribute(listGridField
                        .getName()));
                stringBuilder.append("\",");
            }
            stringBuilder.deleteCharAt(stringBuilder.length() - 1); // remove
                                                                    // last ","
            stringBuilder.append("\n");
        }
        return stringBuilder;
    }

    private void sendTOServer(StringBuilder csvText) {
        // TODO Auto-generated method stub
        String csv = csvText.toString();
        final HTML serverResponseLabel = new HTML();
        greetingService.greetServer(csv, new AsyncCallback<String>() {
            public void onFailure(Throwable caught) {

            }

            public void onSuccess(String result) {
                // dialogBox.setText("Remote Procedure Call");
                serverResponseLabel.removeStyleName("serverResponseLabelError");
                serverResponseLabel.setHTML(result);
                 Window.open(result, "_blank", "");
                // dialogBox.center();
                // closeButton.setFocus(true);
            }
        });
    }

}

问候服务.java

    @RemoteServiceRelativePath("greet")
public interface GreetingService extends RemoteService {
    String greetServer(String name) throws IllegalArgumentException;
}

GreetingServiceAsync.java

    public interface GreetingServiceAsync {
    void greetServer(String input, AsyncCallback<String> callback)
            throws IllegalArgumentException;
}

GreetingServiceImpl.java

    @SuppressWarnings("serial")
public class GreetingServiceImpl extends RemoteServiceServlet implements
        GreetingService {

    String url;

    public String greetServer(String input) throws IllegalArgumentException {
        FileWriter fw;
        try {
            fw = new FileWriter("WriteTest.csv");
            PrintWriter pw = new PrintWriter(fw);
            // Write to file for the first row
            url = "http://127.0.0.1:8888/WriteTest.csv";
            pw.print(input);
            pw.flush();
            // Close the Print Writer
            pw.close();
            // Close the File Writer
            fw.close();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return url;

    }
}

上面的代码有效并且简单易懂。我使用了GWT默认的Test Project Structure供大家理解。用于 ListGrid 部分的代码来自 smartgwt 展示 ListGrid JSON Integration .如果您需要更清楚地了解所提供的解决方案,请告诉我。

关于smartgwt 将 listgrid 数据源导出到 excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7318007/

相关文章:

java - 为什么SmartGWT没有分页网格?

java - 使用 Smart GWT TreeGrid 进行导航

css - 智能 gwt 样式属性

java - SmartGwt 和 hibernate 用于数据库连接

java - 在窗口中使用SectionStack时smartGWT ScrollBar丢失

smartgwt - 从哪里可以获得 smart GWT 中的 "built-in-ds"示例项目

gwt - org.apache.log4j.Logger 类型没有可用的源代码;您是否忘记继承所需的模块?

java - 富文本区域中的自动换行

java - 使用 smartgwt 防止用户留下未保存的表单

java - SmartGwt - 显示标签的全部内容