Parser and author for varied spreadsheet codecs. Pure-JS cleanroom implementation from official specs and associated paperwork.

About this fork

This fork simply right an error on dist/cpexcel.js which crash the compilation

In regards to the fork of xlsx-style to xlsx

NOTE: This mission is a fork of the unique (and superior) SheetJS/xlsx mission.
It’s prolonged to allow cell codecs to be learn from and written to .xlsx workbooks.
The intent is to offer a short lived technique of utilizing these options in apply, and in the end to merge this into the first mission.
Report any points to https://github.com/protobi/js-xlsx/issues.

For these contributing to this fork:

  • grasp is the principle department, which follows the unique repo to allow a future pull request.
  • beta department is printed to npm and bower to make this fork accessible to be used.

Supported codecs

Supported learn codecs:

  • Excel 2007+ XML Codecs (XLSX/XLSM)
  • Excel 2007+ Binary Format (XLSB)
  • Excel 2003-2004 XML Format (XML “SpreadsheetML”)
  • Excel 97-2004 (XLS BIFF8)
  • Excel 5.0/95 (XLS BIFF5)
  • OpenDocument Spreadsheet (ODS)

Supported write codecs:

  • XLSX
  • CSV (and normal DSV)
  • JSON and JS objects (varied kinds)

Demo: http://oss.sheetjs.com/js-xlsx

Supply: http://git.io/xlsx

Set up

With npm:

npm set up xlsx-style --save

Within the browser:

<

script

 

lang

=

"

javascript

"

 

src

=

"

dist/xlsx.core.min.js

"

>

<

/

script

>

With bower:

bower set up js-xlsx-style#beta

CDNjs routinely pulls the most recent model and makes all variations accessible at
http://cdnjs.com/libraries/xlsx

Non-compulsory Modules

The node model routinely requires modules for extra options. Some
of those modules are fairly giant in dimension and are solely wanted in particular
circumstances, so they don’t ship with the core. For browser use, they need to
be included immediately:

<

script

 

src

=

"

dist/cpexcel.js

"

>

<

/

script

>

<

script

 

src

=

"

dist/ods.js

"

>

<

/

script

>

An applicable model for every dependency is included within the dist/ listing.

The entire single-file model is generated at dist/xlsx.full.min.js

ECMAScript 5 Compatibility

Since xlsx.js makes use of ES5 capabilities like Array#forEach, older browsers require
Polyfills. This repo and the gh-pages department embody
a shim

To make use of the shim, add the shim earlier than the script tag that masses xlsx.js:

<

script

 

kind

=

"

textual content/javascript

"

 

src

=

"

/path/to/shim.js

"

>

<

/

script

>

Parsing Workbooks

For parsing, step one is to learn the file. This includes buying the
knowledge and feeding it into the library. Listed below are just a few widespread situations:

  • node readFile:

if

(

typeof

 require 

!==

 

'

undefined

'

)

 

XLSX

 

=

 

require

(

'

xlsx

'

)

;

var

 workbook 

=

 

XLSX

.

readFile

(

'

take a look at.xlsx

'

)

;

  • ajax (for a extra full instance that works in older browsers, examine the demo
    at http://oss.sheetjs.com/js-xlsx/ajax.html):

var

 url 

=

 

"

test_files/formula_stress_test_ajax.xlsx

"

;

var

 oReq 

=

 

new

 

XMLHttpRequest

(

)

;

 

oReq

.

open

(

"

GET

"

,

 url

,

 

true

)

;

oReq

.

responseType

 

=

 

"

arraybuffer

"

;

 

oReq

.

onload

 

=

 

perform

(

e

)

 

{

  

var

 arraybuffer 

=

 

oReq

.

response

;

 

  

  

var

 knowledge 

=

 

new

 

Uint8Array

(

arraybuffer

)

;

  

var

 arr 

=

 

new

 

Array

(

)

;

  

for

(

var

 i 

=

 

;

 i 

!=

 

knowledge

.

size

;

 

++

i

)

 arr

[

i

]

 

=

 

String

.

fromCharCode

(

knowledge

[

i

]

)

;

  

var

 bstr 

=

 

arr

.

be a part of

(

"

"

)

;

 

  

  

var

 workbook 

=

 

XLSX

.

learn

(

bstr

,

 

{

kind

:

"

binary

"

}

)

;

 

  

}

 

oReq

.

ship

(

)

;

  • HTML5 drag-and-drop utilizing readAsBinaryString:

perform

 

handleDrop

(

e

)

 

{

  

e

.

stopPropagation

(

)

;

  

e

.

preventDefault

(

)

;

  

var

 information 

=

 

e

.

dataTransfer

.

information

;

  

var

 i

,

 f

;

  

  

for

 

(

=

 

,

 f 

=

 information

[

i

]

;

 i 

!=

 

information

.

size

;

 

++

i

)

 

{

    

var

 reader 

=

 

new

 

FileReader

(

)

;

    

var

 title 

=

 

f

.

title

;

    

reader

.

onload

 

=

 

perform

(

e

)

 

{

      

var

 knowledge 

=

 

e

.

goal

.

consequence

;

 

      

      

var

 workbook 

=

 

XLSX

.

learn

(

knowledge

,

 

{

kind

:

 

'

binary

'

}

)

;

 

      

    

}

;

    

reader

.

readAsBinaryString

(

f

)

;

  

}

}

drop_dom_element

.

addEventListener

(

'

drop

'

,

 handleDrop

,

 

false

)

;

  • HTML5 enter file factor utilizing readAsBinaryString:

perform

 

handleFile

(

e

)

 

{

  

var

 information 

=

 

e

.

goal

.

information

;

  

var

 i

,

 f

;

  

  

for

 

(

=

 

,

 f 

=

 information

[

i

]

;

 i 

!=

 

information

.

size

;

 

++

i

)

 

{

    

var

 reader 

=

 

new

 

FileReader

(

)

;

    

var

 title 

=

 

f

.

title

;

    

reader

.

onload

 

=

 

perform

(

e

)

 

{

      

var

 knowledge 

=

 

e

.

goal

.

consequence

;

 

      

var

 workbook 

=

 

XLSX

.

learn

(

knowledge

,

 

{

kind

:

 

'

binary

'

}

)

;

 

      

    

}

;

    

reader

.

readAsBinaryString

(

f

)

;

  

}

}

input_dom_element

.

addEventListener

(

'

change

'

,

 handleFile

,

 

false

)

;

Working with the Workbook

The total object format is described later on this README.

This instance extracts the worth saved in cell A1 from the primary worksheet:

var

 first_sheet_name 

=

 

workbook

.

SheetNames

[

]

;

var

 address_of_cell 

=

 

'

A1

'

;

 

var

 worksheet 

=

 

workbook

.

Sheets

[

first_sheet_name

]

;

 

var

 desired_cell 

=

 worksheet

[

address_of_cell

]

;

 

var

 desired_value 

=

 

desired_cell

.

v

;

This instance iterates by means of each nonempty of each sheet and dumps values:

var

 sheet_name_list 

=

 

workbook

.

SheetNames

;

 

sheet_name_list

.

forEach

(

perform

(

y

)

 

{

 

  

var

 worksheet 

=

 

workbook

.

Sheets

[

y

]

;

  

for

 

(

in

 worksheet

)

 

{

    

    

if

(

z

[

]

 

===

 

'

!

'

)

 

proceed

;

    

console

.

log

(

+

 

"

!

"

 

+

 z 

+

 

"

=

"

 

+

 

JSON

.

stringify

(

worksheet

[

z

]

.

v

)

)

;

  

}

}

)

;

Full examples:

  • http://oss.sheetjs.com/js-xlsx/ HTML5 File API / Base64 Textual content / Internet Employees

Be aware that older variations of IE doesn’t assist HTML5 File API, so the base64
mode is supplied for testing. On OSX you will get the base64 encoding with:

<

target_file.xlsx base64 

|

 pbcopy

The node model installs a command line software xlsx which might learn spreadsheet
information and output the contents in varied codecs. The supply is accessible at
xlsx.njs within the bin listing.

See also  » Blog Archive

Some helper capabilities in XLSX.utils generate completely different views of the sheets:

  • XLSX.utils.sheet_to_csv generates CSV
  • XLSX.utils.sheet_to_json generates an array of objects
  • XLSX.utils.sheet_to_formulae generates a listing of formulae

Writing Workbooks

For writing, step one is to generate output knowledge. The helper capabilities
write and writeFile will produce the info in varied codecs appropriate for
dissemination. The second step is to precise share the info with the top level.
Assuming workbook is a workbook object:

  • nodejs write to file:

XLSX

.

writeFile

(

workbook

,

 

'

out.xlsx

'

)

;

  • write to binary string (utilizing FileSaver.js):

var

 wopts 

=

 

{

 bookType

:

'

xlsx

'

,

 bookSST

:

false

,

 kind

:

'

binary

'

 

}

;

 

var

 wbout 

=

 

XLSX

.

write

(

workbook

,

wopts

)

;

 

perform

 

s2ab

(

s

)

 

{

  

var

 buf 

=

 

new

 

ArrayBuffer

(

s

.

size

)

;

  

var

 view 

=

 

new

 

Uint8Array

(

buf

)

;

  

for

 

(

var

 i

=

;

 i

!=

s

.

size

;

 

++

i

)

 view

[

i

]

 

=

 

s

.

charCodeAt

(

i

)

 

&

 

0xFF

;

  

return

 buf

;

}

 

saveAs

(

new

 

Blob

(

[

s2ab

(

wbout

)

]

,

{

kind

:

"

"

}

)

,

 

"

take a look at.xlsx

"

)

Full examples:

  • http://sheetjs.com/demos/writexlsx.html generates a easy file
  • http://git.io/WEK88Q writing an array of arrays in nodejs
  • http://sheetjs.com/demos/table.html exporting an HTML desk

Interface

XLSX is the uncovered variable within the browser and the exported node variable

XLSX.model is the model of the library (added by the construct script).

XLSX.SSF is an embedded model of the format library.

Parsing capabilities

XLSX.learn(knowledge, read_opts) makes an attempt to parse knowledge.

XLSX.readFile(filename, read_opts) makes an attempt to learn filename and parse.

Writing capabilities

XLSX.write(wb, write_opts) makes an attempt to put in writing the workbook wb

XLSX.writeFile(wb, filename, write_opts) makes an attempt to put in writing wb to filename

Utilities

Utilities can be found within the XLSX.utils object:

Exporting:

  • sheet_to_json converts a workbook object to an array of JSON objects.
  • sheet_to_csv generates delimiter-separated-values output
  • sheet_to_formulae generates a listing of the formulae (with worth fallbacks)

Cell and cell handle manipulation:

  • format_cell generates the textual content worth for a cell (utilizing quantity codecs)
  • {en,de}code_{row,col} convert between 0-indexed rows/cols and A1 varieties.
  • {en,de}code_cell converts cell addresses
  • {en,de}code_range converts cell ranges

Workbook / Worksheet / Cell Object Description

js-xlsx conforms to the Widespread Spreadsheet Format (CSF):

Normal Constructions

Cell handle objects are saved as {c:C, r:R} the place C and R are 0-indexed
column and row numbers, respectively. For instance, the cell handle B5 is
represented by the item {c:1, r:4}.

Cell vary objects are saved as {s:S, e:E} the place S is the primary cell and
E is the final cell within the vary. The ranges are inclusive. For instance, the
vary A3:B7 is represented by the item {s:{c:0, r:2}, e:{c:1, r:6}}. Utils
use the next sample to stroll every of the cells in a spread:

for

(

var

 

R

 

=

 

vary

.

s

.

r

;

 

R

 

<=

 

vary

.

e

.

r

;

 

++

R

)

 

{

  

for

(

var

 

C

 

=

 

vary

.

s

.

c

;

 

C

 

<=

 

vary

.

e

.

c

;

 

++

C

)

 

{

    

var

 cell_address 

=

 

{

c

:

C

,

 r

:

R

}

;

  

}

}

Cell Object

Key
Description

v
uncooked worth (see Knowledge Sorts part for more information)

w
formatted textual content (if relevant)

t
cell kind: b Boolean, n Quantity, e error, s String, d Date

f
cell system (if relevant)

r
wealthy textual content encoding (if relevant)

h
HTML rendering of the wealthy textual content (if relevant)

c
feedback related to the cell **

z
quantity format string related to the cell (if requested)

l
cell hyperlink object (.Goal holds hyperlink, .tooltip is tooltip)

s
the model/theme of the cell (if relevant)

Constructed-in export utilities (such because the CSV exporter) will use the w textual content if it
is accessible. To vary a price, remember to delete cell.w (or set it to
undefined) earlier than making an attempt to export. The utilities will regenerate the w
textual content from the quantity format (cell.z) and the uncooked worth if potential.

Be aware: The .z attribute is now deprecated. Use the .s attribute to specify cell kinds together with quantity codecs.
To specify a quantity format, use s.numFmt, e.g. {v: 42145.822, s: { numFmt: "m/dd/yy"}} described beneath.

Knowledge Sorts

The uncooked worth is saved within the v area, interpreted primarily based on the t area.

Sort b is the Boolean kind. v is interpreted in response to JS fact tables

Sort e is the Error kind. v holds the quantity and w holds the widespread title:

Worth
Error Which means

0x00
#NULL!

0x07
#DIV/0!

0x0F
#VALUE!

0x17
#REF!

0x1D
#NAME?

0x24
#NUM!

0x2A
#N/A

0x2B
#GETTING_DATA

Sort n is the Quantity kind. This contains all types of knowledge that Excel shops
as numbers, corresponding to dates/occasions and Boolean fields. Excel completely makes use of knowledge
that may be slot in an IEEE754 floating level quantity, similar to JS Quantity, so the
v area holds the uncooked quantity. The w area holds formatted textual content.

Sort d is the Date kind, generated solely when the choice cellDates is handed.
Since JSON doesn’t have a pure Date kind, parsers are usually anticipated to
retailer ISO 8601 Date strings such as you would get from date.toISOString(). On
the opposite hand, writers and exporters ought to be capable of deal with date strings and
JS Date objects. Be aware that Excel disregards the timezone modifier and treats all
dates within the native timezone. js-xlsx doesn’t right for this error.

Sort s is the String kind. v must be explicitly saved as a string to
keep away from potential confusion.

See also  40+ Best Free Premiere Pro Templates 2021

Worksheet Object

Every key that doesn’t begin with ! maps to a cell (utilizing A-1 notation)

worksheet[address] returns the cell object for the desired handle.

Particular worksheet keys (accessible as worksheet[key], every beginning with !):

  • ws['!ref']: A-1 primarily based vary representing the worksheet vary. Features that
    work with sheets ought to use this parameter to find out the vary. Cells that
    are assigned outdoors of the vary aren’t processed. Particularly, when
    writing a worksheet by hand, remember to replace the vary. For an extended
    dialogue, see http://git.io/KIaNKQ

    Features that deal with worksheets ought to take a look at for the presence of !ref area.
    If the !ref is omitted or will not be a legitimate vary, capabilities are free to deal with
    the sheet as empty or try to guess the vary. The usual utilities that
    ship with this library deal with sheets as empty (for instance, the CSV output is an
    empty string).

    When studying a worksheet with the sheetRows property set, the ref parameter
    will use the restricted vary. The unique vary is about at ws['!fullref']

  • ws['!cols']: array of column properties objects. Column widths are literally
    saved in information in a normalized method, measured by way of the “Most
    Digit Width” (the biggest width of the rendered digits 0-9, in pixels). When
    parsed, the column objects retailer the pixel width within the wpx area, character
    width within the wch area, and the utmost digit width within the MDW area.

  • ws['!merges']: array of vary objects similar to the merged cells in
    the worksheet. Plaintext utilities are unaware of merge cells. CSV export
    will write all cells within the merge vary in the event that they exist, so ensure that solely
    the primary cell (upper-left) within the vary is about.

  • ws['!printHeader']: array of row indices for repeating row headers on print, e.g. [1:1] to repeat simply the primary row.

The next properties are presently used when producing an XLSX file, however not but parsed:

  • ws['!rowBreaks']: array of row break factors, e.g. [16,32]
  • ws['!colBreaks']: array of col break factors, e.g. [8,16]
  • ws['!pageSetup']: `’panorama’
  • ws['!printHeader']: array of first and final row indexes for repeat header on printing, e.g. [1,1] to repeat simply first row
  • ws['!freeze']: string cell reference for breakpoint, e.g. the next will freeze the primary row and first column:
    {
    xSplit: “1”,
    ySplit: “1”,
    topLeftCell: “B2”,
    activePane: “bottomRight”,
    state: “frozen”
    }

Workbook Object

workbook.SheetNames is an ordered record of the sheets within the workbook

wb.Sheets[sheetname] returns an object representing the worksheet.

wb.Props is an object storing the usual properties. The next properties are presently used when
producing an XLSX file, however not but parsed:
title
topic
description
key phrases
creator

wb.Custprops shops customized properties. For the reason that XLS commonplace properties deviate from the XLSX
commonplace, XLS parsing shops core properties in each locations. .

Parsing Choices

The exported learn and readFile capabilities settle for an choices argument:

Choice Identify
Default
Description

cellFormula
true
Save formulae to the .f area **

cellHTML
true
Parse wealthy textual content and save HTML to the .h area

cellNF
false
Save quantity format string to the .z area

cellStyles
false
Save model/theme information to the .s area

cellDates
false
Retailer dates as kind d (default is n) **

sheetStubs
false
Create cell objects for stub cells

sheetRows

If >0, learn the primary sheetRows rows **

bookDeps
false
If true, parse calculation chains

bookFiles
false
If true, add uncooked information to guide object **

bookProps
false
If true, solely parse sufficient to get guide metadata **

bookSheets
false
If true, solely parse sufficient to get the sheet names

bookVBA
false
If true, expose vbaProject.bin to vbaraw area **

password
“”
If outlined and file is encrypted, use password **

  • cellFormula choice solely applies to codecs that require additional processing to
    parse formulae (XLS/XLSB).
  • Even when cellNF is fake, formatted textual content might be generated and saved to .w
  • In some instances, sheets could also be parsed even when bookSheets is fake.
  • bookSheets and bookProps mix to offer each units of knowledge
  • Deps might be an empty object if bookDeps is falsy
  • bookFiles habits depends upon file kind:
    • keys array (paths within the ZIP) for ZIP-based codecs
    • information hash (mapping paths to things representing the information) for ZIP
    • cfb object for codecs utilizing CFB containers
  • sheetRows-1 rows might be generated when wanting on the JSON object output
    (because the header row is counted as a row when parsing the info)
  • bookVBA merely exposes the uncooked vba object. It doesn’t parse the info.
  • cellDates presently doesn’t convert numerical dates to JS dates.
  • At present solely XOR encryption is supported. Unsupported error might be thrown
    for information using different encryption strategies.

The defaults are enumerated in bits/84_defaults.js

Writing Choices

The exported write and writeFile capabilities settle for an choices argument:

Choice Identify
Default
Description

cellDates
false
Retailer dates as kind d (default is n)

bookSST
false
Generate Shared String Desk **

bookType
‘xlsx’
Sort of Workbook (“xlsx” or “xlsm” or “xlsb”)

showGridLines
true
Present gridlines on all pages

tabSelected
‘1’
Preliminary tab chosen

Props
null
Workbook properties

  • bookSST is slower and extra reminiscence intensive, however has higher compatibility
    with older variations of iOS Numbers
  • bookType = 'xlsb' is stubbed and much from full
  • The uncooked knowledge is the one factor assured to be saved. Formulae, formatting,
    and different niceties will not be serialized (pending CSF standardization)
  • cellDates solely applies to XLSX output and isn’t assured to work with
    third-party readers. Excel itself doesn’t often write cells with kind d
    so non-Excel instruments could ignore the info or blow up within the presence of dates.
  • showGridLines and tabSelected are presently used when producing an XLSX file however not but parse.
  • Props specifies workbook properties
See also  Kate Middleton's wedding dress inspired a decade of celebrity brides

Cell Kinds

Cell kinds are specified by a mode object that roughly parallels the OpenXML construction. The model object has 5
top-level attributes: fill, font, numFmt, alignment, and border.

Type Attribute
Sub Attributes
Values

fill
patternType
"solid" or "none"

fgColor
COLOR_SPEC

bgColor
COLOR_SPEC

font
title
"Calibri" // default

sz
"11" // font dimension in factors

colour
COLOR_SPEC

daring
true or false

underline
true or false

italic
true or false

strike
true or false

define
true or false

shadow
true or false

vertAlign
true or false

numFmt

"0" // integer index to in-built codecs, see StyleBuilder.SSF property

"0.00%" // string matching a built-in format, see StyleBuilder.SSF

"0.0%" // string specifying a customized format

"0.00%;(0.00%);-;@" // string specifying a customized format, escaping particular characters

"m/dd/yy" // string a date format utilizing Excel’s format notation

alignment
vertical
"bottom" or "center" or "top"

horizontal
"bottom" or "center" or "top"

wrapText
true or false

readingOrder
2 // for right-to-left

textRotation
Quantity from to 180 or 255 (default is )

90 is rotated up 90 levels

45 is rotated up 45 levels

135 is rotated down 45 levels

180 is rotated down 180 levels

255 is particular, aligned vertically

border
high
{ model: BORDER_STYLE, colour: COLOR_SPEC }

backside
{ model: BORDER_STYLE, colour: COLOR_SPEC }

left
{ model: BORDER_STYLE, colour: COLOR_SPEC }

proper
{ model: BORDER_STYLE, colour: COLOR_SPEC }

diagonal
{ model: BORDER_STYLE, colour: COLOR_SPEC }

diagonalUp
true or false

diagonalDown
true or false

COLOR_SPEC: Colours for fill, font, and border are specified as objects, both:

  • { auto: 1} specifying computerized values
  • { rgb: "FFFFAA00" } specifying a hex ARGB worth
  • { theme: "1", tint: "-0.25"} specifying an integer index to a theme colour and a tint worth (default 0)
  • { listed: 64} default worth for fill.bgColor

BORDER_STYLE: Border model is a string worth which can tackle one of many following values:

  • skinny
  • medium
  • thick
  • dotted
  • hair
  • dashed
  • mediumDashed
  • dashDot
  • mediumDashDot
  • dashDotDot
  • mediumDashDotDot
  • slantDashDot

Borders for merged areas are specified for every cell throughout the merged space. So to use a field border to a merged space of 3×3 cells, border kinds would must be specified for eight completely different cells:

  • left borders for the three cells on the left,
  • proper borders for the cells on the best
  • high borders for the cells on the highest
  • backside borders for the cells on the left

Examined Environments

  • NodeJS 0.8, 0.10 (newest launch), 0.11.14 (unstable), io.js
  • IE 6/7/8/9/10/11 utilizing Base64 mode (IE10/11 utilizing HTML5 mode)
  • FF 18 utilizing Base64 or HTML5 mode
  • Chrome 24 utilizing Base64 or HTML5 mode

Checks make the most of the mocha testing framework. Travis-CI and Sauce Labs hyperlinks:

  • https://travis-ci.org/SheetJS/js-xlsx for XLSX module in nodejs
  • https://travis-ci.org/SheetJS/SheetJS.github.io for XLS* modules
  • https://saucelabs.com/u/sheetjs for XLS* modules utilizing Sauce Labs

Check Information

Check information are housed in one other repo.

Operating make init will refresh the test_files submodule and get the information.

Testing

make take a look at will run the node-based checks. To run the in-browser checks, clone
the oss.sheetjs.com repo and
change the xlsx.js file (then fireplace up the browser and go to stress.html):

$ cp xlsx.js ../SheetJS.github.io

cd

 ../SheetJS.github.io

$ simplehttpserver 

$ open -a Chromium.app http://localhost:8000/stress.html

For a a lot smaller take a look at, run make test_misc.

Contributing

Because of the precarious nature of the Open Specs Promise, it is vitally
essential to make sure code is cleanroom. Seek the advice of CONTRIBUTING.md

The xlsx.js file is constructed from the information within the bits subdirectory. The
construct script (run make) will concatenate the person bits to provide the
script. Earlier than submitting a contribution, be certain that operating make will produce
the xlsx.js file precisely. The only strategy to take a look at is to maneuver the script:

$ mv xlsx.js xlsx.new.js

$ make

$ diff xlsx.js xlsx.new.js

To provide the dist information, run make dist. The dist information are up to date in every
model launch and shouldn’t be dedicated between variations.

License

Please seek the advice of the hooked up LICENSE file for particulars. All rights not explicitly
granted by the Apache 2.0 license are reserved by the Authentic Writer.

It’s the opinion of the Authentic Writer that this code conforms to the phrases of
the Microsoft Open Specs Promise, falling below the identical phrases as
OpenOffice (which is ruled by the Apache License v2). Given the vagaries of
the promise, the Authentic Writer makes no authorized declare that in actual fact finish customers are
shielded from future actions. It’s extremely beneficial that, for business
makes use of, you seek the advice of a lawyer earlier than continuing.

References

ISO/IEC 29500:2012(E) “Information technology — Document description and processing languages — Office Open XML File Formats”

OSP-covered specs:

  • [MS-XLSB]: Excel (.xlsb) Binary File Format
  • [MS-XLSX]: Excel (.xlsx) Extensions to the Workplace Open XML SpreadsheetML File Format
  • [MS-XLS]: Excel Binary File Format (.xls) Construction Specification
  • [MS-OLEDS]: Object Linking and Embedding (OLE) Knowledge Constructions
  • [MS-OLEPS]: Object Linking and Embedding (OLE) Property Set Knowledge Constructions

Open Doc Format for Workplace Functions Model 1.2 (29 September 2011)

Badges

Leave a Reply

Your email address will not be published.