将 Eclipse Scout 表行导出为 CSV 文件并让用户下载该文件

问题描述 投票:0回答:1

我想将 Eclipse Scout 表的行(所有行,以及刚刚过滤的行)导出为 CSV 文件。创建此文件后,我希望用户能够下载它。

我在框架的ITable界面中看到了一个名为exportTableRowsAsCSV的方法,但我找不到它的用法示例。

非常感谢您的热心帮助。

J丹尼尔

java eclipse export-to-csv eclipse-scout
1个回答
0
投票

此功能并非开箱即用,但您可以使用以下实用程序自行轻松构建:

  • TableUtility
    将行和列转换为数据矩阵。
  • CsvHelper
    从数据矩阵生成 CSV 输出。
  • IDesktop#openUri
    将输出作为可下载文件发送到浏览器。
// Select data to export
Table table = getTable();
List<ITableRow> rows = table.getFilteredRows();
List<IColumn<?>> columns = table.getColumnSet().getVisibleColumns();

// Convert to data matrix (with column headers)
Object[][] csvData = TableUtility.exportRowsAsCSV(rows, columns, true, false, false);

// Write data to byte array
CsvHelper csvHelper = new CsvHelper(NlsLocale.get(), ";", "\"", "\n");
ByteArrayOutputStream out = new ByteArrayOutputStream();
try (Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8)) {
  csvHelper.exportData(csvData, writer, null, false, null, false);
}
catch (IOException e) {
  throw BEANS.get(DefaultRuntimeExceptionTranslator.class).translate(e);
}

// Download as file
BinaryResource binaryResource = new BinaryResource("export.csv", out.toByteArray());
IDesktop.CURRENT.get().openUri(binaryResource);
© www.soinside.com 2019 - 2024. All rights reserved.