我想将 Eclipse Scout 表的行(所有行,以及刚刚过滤的行)导出为 CSV 文件。创建此文件后,我希望用户能够下载它。
我在框架的ITable界面中看到了一个名为exportTableRowsAsCSV的方法,但我找不到它的用法示例。
非常感谢您的热心帮助。
J丹尼尔
此功能并非开箱即用,但您可以使用以下实用程序自行轻松构建:
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);