Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: Français - Português - 日本語 - Русский
Scilab Help >> Spreadsheet > csvWrite


Write comma-separated value file


csvWrite(M, filename)
csvWrite(M, filename, separator)
csvWrite(M, filename, separator, decimal)
csvWrite(M, filename, separator, decimal, precision)
csvWrite(M, filename, separator, decimal, precision, header)



a string: the file path.


a m-by-n matrix of strings or double (complex supported).


a string: the column separator mark.


a string: the decimal mark, either "." or ",".


a string: the C format.


a vector of text: the header written as a column of text at the beginning of the file, before actual data.


This function writes matrix M into filename as comma-separated values.

The default value of the optional input arguments are defined by the csvDefault function.

Any optional input argument equal to the empty matrix [] is set to its default value.

If the file filename already exists, it is overwritten.

If relevant (ie with 'special' characters), the file will be saved as UTF-8.


In the following example, we combine the csvWrite and csvRead functions.

// Save a matrix as csv file format
M = [1:10] * 0.1;
filename = fullfile(TMPDIR, "data.csv");
csvWrite(M, filename);

// Read as text

r = csvRead(filename);

In the following example, we use various options of the csvWrite function.

// Save a matrix as csv file format
M = rand(2,3);
filename = fullfile(TMPDIR, "data.csv");
// Use tabs as the separator
csvWrite(M, filename,ascii(9));
// Use the "," as the decimal point
// (and blank space as the separator).
csvWrite(M, filename," ",",");
// Configure the precision.
// Caution: this lower precision may generate
// errors in a write-read cycle!
csvWrite(M, filename,[],[],"%.8e");
// Configure the header
header = [
"// Copyright (C) INRIA"
csvWrite(M, filename, [], [],[], header);

The following examples are more advanced uses of the csvWrite function.

A = [
1 0 200 %inf 0
1 1.e-300 200 %inf 0
9.99999999999990010e-001 9.99999999999999980e-201 200 3.15e300 102
9.99999999899999990e-001 1.e-100 200 296 117
1 %inf -%inf %nan 0

// Write into a file
filename = fullfile(TMPDIR,"foo.csv");
csvWrite(A, filename);

See also

  • csvRead — Read comma-separated value file
  • csvTextScan — Converts into a matrix texts representing separated values
  • csvDefault — Get or set defaults behavior for csv files.


5.4.0 Function introduced. Based on the 'csv_readwrite' module.


Author : Saulo Barbosa Oliveira posted the 08/04/2013 09:04
For some reason all the files created here with csvWrite have a empty line between each of two lines of the matrix..

the write_csv was fine in the Scilab v5.3.3, i'm going back to this version.
Reply to this comment
Please login to comment this page
Author : Saulo Barbosa Oliveira posted the 08/04/2013 09:07
I'm running Windows 8 64bits and for fix this problem i have to set the eol for linux...
Reply to this comment
Please login to comment this page

Author : Anoop Sasidharan posted the 12/09/2013 08:43
where is the .csv file saved? Is it in our current working directory??
Reply to this comment
Please login to comment this page

Add a comment:
Please login to comment this page.

Report an issue
<< csvTextScan Spreadsheet read_csv >>

Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Jan 03 14:23:43 CET 2022