--- sidebar_position: 4 --- # Workbook Object For a given workbook object `wb`: `wb.SheetNames` is an ordered list of the sheets in the workbook. `wb.Sheets` is an object whose keys are worksheet names (from `SheetNames`) and whose values are worksheet objects. `wb.Props` is an object storing the standard properties. `wb.Custprops` stores custom properties. Since the XLS standard properties deviate from the XLSX standard, XLS parsing stores core properties in both places. `wb.Workbook` stores [workbook-level attributes](#workbook-level-attributes). When reading a file, `wb.bookType` is the determined book type. ## File Properties The various file formats use different internal names for file properties. The workbook `Props` object normalizes the names:
File Properties (click to hide) | JS Name | Excel Description | |:--------------|:-------------------------------| | `Title` | Summary tab "Title" | | `Subject` | Summary tab "Subject" | | `Author` | Summary tab "Author" | | `Manager` | Summary tab "Manager" | | `Company` | Summary tab "Company" | | `Category` | Summary tab "Category" | | `Keywords` | Summary tab "Keywords" | | `Comments` | Summary tab "Comments" | | `LastAuthor` | Statistics tab "Last saved by" | | `CreatedDate` | Statistics tab "Created" |
For example, to set the workbook title property: ```js if(!wb.Props) wb.Props = {}; wb.Props.Title = "Insert Title Here"; ``` Custom properties are added in the workbook `Custprops` object: ```js if(!wb.Custprops) wb.Custprops = {}; wb.Custprops["Custom Property"] = "Custom Value"; ``` Writers will process the `Props` key of the options object: ```js /* force the Author to be "SheetJS" */ XLSX.write(wb, { Props: { Author: "SheetJS" } }); ``` ## Workbook-Level Attributes `wb.Workbook` stores workbook-level attributes. ### Defined Names
Format Support (click to show) **Simple Defined Names**: XLSX/M, XLSB, BIFF8 XLS, XLML, ODS, SYLK **Unicode Defined Names**: XLSX/M, XLSB, BIFF8 XLS, XLML, ODS **Defined Name Comment**: XLSX/M, XLSB, BIFF8 XLS
`wb.Workbook.Names` is an array of defined name objects which have the keys: | Key | Description | |:----------|:-----------------------------------------------------------------| | `Sheet` | Name scope. Sheet Index (0 = first sheet) or `null` (Workbook) | | `Name` | Case-sensitive name. Standard rules apply ** | | `Ref` | A1-Style Reference (`"Sheet1!$A$1:$D$20"`) | | `Comment` | Comment (only applicable for XLS/XLSX/XLSB) | Excel allows two sheet-scoped defined names to share the same name. However, a sheet-scoped name cannot collide with a workbook-scope name. Workbook writers may not enforce this constraint. The following snippet creates a worksheet-level defined name `"Global"` and a local defined name `"Local"` with distinct values for first and second sheets: ```js /* ensure the workbook structure exists */ if(!wb.Workbook) wb.Workbook = {}; if(!wb.Workbook.Names) wb.Workbook.Names = []; /* "Global" workbook-level -> Sheet1 A1:A2 */ wb.Workbook.Names.push({ Name: "Global", Ref: "Sheet1!$A$1:$A$2" }); /* "Local" scoped to the first worksheet -> Sheet1 B1:B2 */ wb.Workbook.Names.push({ Name: "Local", Ref: "Sheet1!$B$1:$B$2", Sheet: 0 }); /* "Local" scoped to the second worksheet -> Sheet1 C1:C2 */ wb.Workbook.Names.push({ Name: "Local", Ref: "Sheet1!$C$1:$C$2", Sheet: 1 }); ```
Live Example (click to show) ```jsx live /* The live editor requires this function wrapper */ function DefinedNameExport() { return ( ); } ```
### Workbook Views `wb.Workbook.Views` is an array of workbook view objects which have the keys: | Key | Description | |:----------------|:----------------------------------------------------| | `RTL` | If true, display right-to-left | ### Miscellaneous Workbook Properties `wb.Workbook.WBProps` holds other workbook properties: | Key | Description | |:----------------|:-----------------------------------------------------------| | `CodeName` | [VBA Workbook Name](/docs/csf/features#vba-and-macros) | | `date1904` | epoch: 0/false for 1900 system, 1/true for 1904 | | `filterPrivacy` | Warn or strip personally identifying info on save |