code: protected void writeCsv(final MBasicTable table, final OutputStream outputStream,
  			final DateFormat dateFormat) throws IOException {
  		// récupération des informations utiles
  		final int columnCount = table.getColumnModel().getColumnCount();
  		final int rowCount = table.getRowCount();
  		final String charset = System.getProperty("file.encoding");
  		final Writer out = new OutputStreamWriter(outputStream, charset);
  
  		final char csvSeparator = CSV_SEPARATOR;
  		// le séparateur des .csv (',' à l'américaine)
  		final NumberFormat decimalFormat = NumberFormat.getInstance(Locale.US);
  		decimalFormat.setGroupingUsed(false);
  		final String eol = System.getProperty("line.separator");
  
  		// titres des colonnes
  		writeCsvHeader(table, out, csvSeparator);
  
  		// les données proprement dites (ligne par ligne puis colonne par colonne)
  		Object value;
  		String text;
  		for (int k = 0; k < rowCount; k++) {
  			for (int i = 0; i < columnCount; i++) {
  				value = getValueAt(table, k, i);
  
  				if (value instanceof Number) {
  					text = decimalFormat.format(value);
  				} else if (value instanceof Date) {
  					text = dateFormat.format(value);
  				} else if (value instanceof Boolean) {
  					text = value.toString();
  				} else {
  					text = getTextAt(table, k, i);
  					text = formatCsv(text, csvSeparator);
  				}
  
  				out.write(text);
  				if (i < columnCount - 1) {
  					out.write(csvSeparator);
  				}
  			}
  			if (k < rowCount - 1) {
  				out.write(eol);
  			}
  		}
  		out.flush();
  	}
docs: Exporte une JTable dans un fichier au format csv pour double-clique. (séparateur ',', formats nombres et dates US).
  
  @param table
  MBasicTable
  @param outputStream
  OutputStream
  @param dateFormat
  DateFormat
  @throws IOException
  Erreur disque