sheetjs/docbits/52_datatype.md

2.4 KiB

Data Types

The raw value is stored in the v field, interpreted based on the t field.

Type b is the Boolean type. v is interpreted according to JS truth tables.

Type e is the Error type. v holds the number and w holds the common name:

Error values and interpretation (click to show)
Value Error Meaning
0x00 #NULL!
0x07 #DIV/0!
0x0F #VALUE!
0x17 #REF!
0x1D #NAME?
0x24 #NUM!
0x2A #N/A
0x2B #GETTING_DATA

Type n is the Number type. This includes all forms of data that Excel stores as numbers, such as dates/times and Boolean fields. Excel exclusively uses data that can be fit in an IEEE754 floating point number, just like JS Number, so the v field holds the raw number. The w field holds formatted text. Dates are stored as numbers by default and converted with XLSX.SSF.parse_date_code.

Type d is the Date type, generated only when the option cellDates is passed. Since JSON does not have a natural Date type, parsers are generally expected to store ISO 8601 Date strings like you would get from date.toISOString(). On the other hand, writers and exporters should be able to handle date strings and JS Date objects. Note that Excel disregards timezone modifiers and treats all dates in the local timezone. js-xlsx does not correct for this error.

Type s is the String type. v should be explicitly stored as a string to avoid possible confusion.

Type z represents blank stub cells. These do not have any data or type, and are not processed by any of the core library functions. By default these cells will not be generated; the parser sheetStubs option must be set to true.

Dates

By default, Excel stores dates as numbers with a format code that specifies date processing. For example, the date 19-Feb-17 is stored as the number 42785 with a number format of d-mmm-yy. The SSF module understands number formats and performs the appropriate conversion.

XLSX also supports a special date type d where the data is an ISO 8601 date string. The formatter converts the date back to a number.

The default behavior for all parsers is to generate number cells. Setting cellDates to true will force the generators to store dates.