/** * Outputs the report table in CSV format. * * @param report the report * @param out the output stream to write to */ @SuppressWarnings("resource") public void writeCsv(R report, OutputStream out) { OutputStreamWriter outputWriter = new OutputStreamWriter(out, StandardCharsets.UTF_8); CsvOutput csvOut = CsvOutput.safe(outputWriter); csvOut.writeLine(report.getColumnHeaders()); IntStream.range(0, report.getRowCount()) .mapToObj(rowIdx -> formatRow(report, rowIdx, ReportOutputFormat.CSV)) .forEach(csvOut::writeLine); Unchecked.wrap(outputWriter::flush); }
public void test_safe_expressionPrefixNumbers() { StringBuilder buf = new StringBuilder(); CsvOutput.safe(buf, "\n", LINE_ITEM_SEP_COMMA) .writeLine(Arrays.asList("+8", "-7", "+8-7", "-7+8", "NaN", "-Infinity")); assertEquals(buf.toString(), "+8,-7,=\"+8-7\",=\"-7+8\",NaN,=\"-Infinity\"\n"); }
public void test_safe_expressionPrefix() { StringBuilder buf = new StringBuilder(); CsvOutput.safe(buf, "\n").writeLine(Arrays.asList("=cmd", "+cmd", "-cmd", "@cmd")); assertEquals(buf.toString(), "=\"=cmd\",=\"+cmd\",=\"-cmd\",=\"@cmd\"\n"); }
public void test_safe_writeLines_systemNewLine() { List<List<String>> rows = Arrays.asList(Arrays.asList("a", "=x"), Arrays.asList("b", "y")); StringBuilder buf = new StringBuilder(); CsvOutput.safe(buf).writeLines(rows, false); assertEquals(buf.toString(), "a,=\"=x\"" + LINE_SEP + "b,y" + LINE_SEP); }