docs.sheetjs.com/docz/docs/07-csf/04-book.md

112 lines
3.7 KiB
Markdown
Raw Normal View History

2022-05-16 03:26:04 +00:00
---
2022-06-01 22:59:29 +00:00
sidebar_position: 4
2022-05-16 03:26:04 +00:00
---
# Workbook Object
2022-09-05 10:00:35 +00:00
For a given workbook object `wb`:
2022-05-16 03:26:04 +00:00
2022-09-05 10:00:35 +00:00
`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.
2022-05-16 03:26:04 +00:00
`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).
2022-09-05 10:00:35 +00:00
When reading a file, `wb.bookType` is the determined book type.
2022-05-16 03:26:04 +00:00
## File Properties
The various file formats use different internal names for file properties. The
workbook `Props` object normalizes the names:
2022-06-01 22:59:29 +00:00
<details open><summary><b>File Properties</b> (click to hide)</summary>
2022-05-16 03:26:04 +00:00
| 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" |
</details>
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
<details>
<summary><b>Format Support</b> (click to show)</summary>
2022-05-30 05:04:05 +00:00
**Simple Defined Names**: XLSX/M, XLSB, BIFF8 XLS, XLML, ODS, SYLK
2022-05-16 03:26:04 +00:00
2022-05-30 05:04:05 +00:00
**Unicode Defined Names**: XLSX/M, XLSB, BIFF8 XLS, XLML, ODS
2022-05-16 03:26:04 +00:00
**Defined Name Comment**: XLSX/M, XLSB, BIFF8 XLS
</details>
`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 ** |
2022-08-23 03:20:02 +00:00
| `Ref` | A1-Style Reference (`"Sheet1!$A$1:$D$20"`) |
2022-05-16 03:26:04 +00:00
| `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.
### 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 Code Name](./features#vba-and-macros) |
| `date1904` | epoch: 0/false for 1900 system, 1/true for 1904 |
| `filterPrivacy` | Warn or strip personally identifying info on save |