5.9 KiB
| sidebar_position | title |
|---|---|
| 5 | CSV and Text |
CSV is a common format for data interchange. Spreadsheet applications such as Excel also support other delimiter-separated formats including "Text" (using a tab character as the field separator).
The general write functions (XLSX.write and XLSX.writeFile) support csv
and txt (for CSV and tab-separated values respectively), but the specific
utility functions generate raw JS strings for further processing.
Live Demo
After choosing a file, the demo will print the data from each worksheet:
function SheetJSPreCSView() {
const [__html, setHTML] = React.useState("Select a file");
const process = (ab) => {
const wb = XLSX.read(ab);
var res = "";
wb.SheetNames.forEach((n, idx) => {
const ws = wb.Sheets[n];
res += `<b>Sheet #${idx+1} (${n})</b>\n`;
res += XLSX.utils.sheet_to_csv(ws) + "\n\n";
});
setHTML(res);
};
React.useEffect(() => { (async() => {
const url = "https://docs.sheetjs.com/pres.numbers";
process(await (await fetch(url)).arrayBuffer());
})(); }, []);
return ( <>
<input type="file" onChange={async(e) => {
process(await e.target.files[0].arrayBuffer());
}}/>
<pre dangerouslySetInnerHTML={{ __html }}/>
</> );
}
Delimiter-Separated Output
Export worksheet data in CSV, TSV, or other delimiter-separated format
var csv = XLSX.utils.sheet_to_csv(ws, opts);
As an alternative to the writeFile CSV type, XLSX.utils.sheet_to_csv also
produces CSV output. The function takes an options argument:
| Option Name | Default | Description |
|---|---|---|
FS |
"," |
"Field Separator" delimiter between fields |
RS |
"\n" |
"Record Separator" delimiter between rows |
dateNF |
FMT 14 | Use specified date format in string output |
strip |
false | Remove trailing field separators in each record ** |
blankrows |
true | Include blank lines in the CSV output |
skipHidden |
false |
Skip hidden data |
forceQuotes |
false | Force quotes around fields |
stripwill remove trailing commas from each line under defaultFS/RSblankrowsmust be set tofalseto skip blank lines.- Fields containing the record or field separator will automatically be wrapped
in double quotes;
forceQuotesforces all cells to be wrapped in quotes.
The following example shows FS and RS options:
function SheetJSCSVTest() {
var ws = XLSX.utils.aoa_to_sheet([
["S", "h", "e", "e", "t", "J", "S"],
[ 1, 2, , , 5, 6, 7],
[ 2, 3, , , 6, 7, 8],
[ 3, 4, , , 7, 8, 9],
[ 4, 5, 6, 7, 8, 9, 0]
]);
return ( <pre>
<b>Worksheet (as HTML)</b>
<div dangerouslySetInnerHTML={{__html: XLSX.utils.sheet_to_html(ws)}}/>
<b>XLSX.utils.sheet_to_csv(ws)</b><br/>
{XLSX.utils.sheet_to_csv(ws)}<br/><br/>
<b>XLSX.utils.sheet_to_csv(ws, {'{'} FS: "\t" {'}'})</b><br/>
{XLSX.utils.sheet_to_csv(ws, { FS: "\t" })}<br/><br/>
<b>XLSX.utils.sheet_to_csv(ws, {'{'} FS: ":", RS: "|" {'}'})</b><br/>
{XLSX.utils.sheet_to_csv(ws, { FS: ":", RS: "|" })}<br/>
</pre> );
}
CSV Output
Export worksheet data in "Comma-Separated Values" (CSV)
var csv = XLSX.utils.sheet_to_csv(ws, opts);
sheet_to_csv uses the comma character as the field separator by default. This
utility function mirrors the csv book type in XLSX.write or XLSX.writeFile.
sheet_to_csv always returns a JS string and always omits byte-order marks.
UTF-16 Text Output
Export worksheet data in "UTF-16 Text" or Tab-Separated Values (TSV)
var txt = XLSX.utils.sheet_to_txt(ws, opts);
sheet_to_txt uses the tab character as the field separator. This utility
function matches the txt book type in XLSX.write or XLSX.writeFile.
If encoding support is available, the output will be encoded in CP1200 and the
UTF-16 BOM will be added. If encoding support is not available, the output will
be encoded as a standard string.
XLSX.utils.sheet_to_txt takes the same arguments as sheet_to_csv.
Notes
Hidden Rows and Columns
By default, all rows and columns are rendered. The skipHidden option instructs
the text processor to skip hidden rows and columns.
The worksheet !rows array stores row settings.
The !cols array stores column settings.
:::info pass
By default, the read and readFile methods do not save row / column settings.
The cellStyles option must be set.
:::
The following demo shows the effect of skipHidden. Rows 2 and 5 and columns F
and G are marked as hidden. The hidden rows and columns are rendered by default
but omitted when the skipHidden option is set to true.
function SheetJSCSVHiddenRows() {
var ws = XLSX.utils.aoa_to_sheet([
["S", "h", "e", "e", "t", "J", "S", "Hidden (row)"],
[ 1, 2, , , 5, 6, 7, true],
[ 2, 3, , , 6, 7, 8, false],
[ 3, 4, , , 7, 8, 9, false],
[ 4, 5, 6, 7, 8, 9, 0, true],
[ 0, 0, 0, 0, 0, 1, 1, false, "Hidden (col)"]
]);
ws["!rows"] = [];
ws["!rows"][1] = { hidden: true, hpx: 16 }; // hide row 2
ws["!rows"][4] = { hidden: true, hpx: 16 }; // hide row 5
ws["!cols"] = [];
ws["!cols"][5] = { wch: 8, hidden: true }; // hide column F
ws["!cols"][6] = { wch: 8, hidden: true }; // hide column G
return ( <pre>
<b>Worksheet data (as HTML)</b>
<div dangerouslySetInnerHTML={{__html: XLSX.utils.sheet_to_html(ws)}}/>
<b>XLSX.utils.sheet_to_csv(ws, {'{'} skipHidden: true {'}'})</b><br/>
{XLSX.utils.sheet_to_csv(ws, { skipHidden: true })}<br/>
</pre> );
}