如何导出Eclipse Scout表格行(含筛选行)为CSV并支持用户下载?
Eclipse Scout 表格导出CSV并支持下载实现
核心方法使用说明
ITable.exportTableRowsAsCSV()方法可直接将指定行转换为CSV格式字符串,通过传入不同的行数组即可区分全部行和筛选后行:
- 导出全部行:使用
table.getRows()获取所有行 - 导出筛选后行:使用
table.getFilteredRows()获取当前过滤、排序后的行(默认仅包含当前分页数据)
完整实现代码示例
一般在「导出CSV」按钮的execAction方法中实现逻辑:
import java.nio.charset.StandardCharsets; import org.eclipse.scout.rt.platform.BEANS; import org.eclipse.scout.rt.platform.exception.ProcessingException; import org.eclipse.scout.rt.shared.services.common.download.IDownloadService; @Override protected void execAction() throws ProcessingException { // 获取目标表格实例(替换为你的表格对象获取方式) ITable dataTable = getForm().getDataTableField().getTable(); // 控制导出范围:可通过界面复选框让用户选择,这里用变量示例 boolean exportFilteredOnly = true; ITableRow[] targetRows = exportFilteredOnly ? dataTable.getFilteredRows() : dataTable.getRows(); // 生成CSV内容 String csvContent = dataTable.exportTableRowsAsCSV(targetRows); // 添加UTF-8 BOM解决Excel中文乱码问题 csvContent = "\uFEFF" + csvContent; byte[] csvBytes = csvContent.getBytes(StandardCharsets.UTF_8); // 触发浏览器下载 IDownloadService downloadService = BEANS.get(IDownloadService.class); downloadService.download( csvBytes, "表格导出数据.csv", "text/csv; charset=utf-8", true ); }
关键注意事项
- 分页表格全量筛选导出:若表格开启分页,
getFilteredRows()仅返回当前页的筛选数据。如需导出所有分页的筛选结果,需在后台服务中重新执行筛选查询,获取全量数据后再生成CSV。 - 列自定义导出:
exportTableRowsAsCSV默认导出所有可见列,若需指定导出列,可先通过table.getColumns()筛选目标列,或手动拼接CSV内容。 - 编码兼容:添加UTF-8 BOM(
\uFEFF)可避免Excel打开CSV时出现中文乱码。
内容的提问来源于stack exchange,提问作者JDaniel
相关产品推荐
相关产品推荐

