| 
									
										
										
										
											2023-06-25 09:36:58 +00:00
										 |  |  | --- | 
					
						
							|  |  |  | sidebar_position: 8 | 
					
						
							|  |  |  | title: Workbook Helpers | 
					
						
							|  |  |  | --- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Many utility functions return worksheet objects. Worksheets cannot be written to | 
					
						
							|  |  |  | workbook file formats directly.  They must be added to a workbook object. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | **Create a new workbook** | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | var workbook = XLSX.utils.book_new(); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The `book_new` utility function creates an empty workbook with no worksheets. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Spreadsheet software generally require at least one worksheet and enforce the | 
					
						
							|  |  |  | requirement in the user interface. For example, if the last worksheet is deleted | 
					
						
							|  |  |  | in the program, Apple Numbers will automatically create a new blank sheet. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The SheetJS [write functions](/docs/api/write-options) enforce the requirement. | 
					
						
							| 
									
										
										
										
											2023-06-25 19:57:03 +00:00
										 |  |  | They will throw errors when trying to export empty workbooks. | 
					
						
							| 
									
										
										
										
											2023-06-25 09:36:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | **Append a Worksheet to a Workbook** | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | XLSX.utils.book_append_sheet(workbook, worksheet, sheet_name); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The `book_append_sheet` utility function appends a worksheet to the workbook. | 
					
						
							|  |  |  | The third argument specifies the desired worksheet name. Multiple worksheets can | 
					
						
							|  |  |  | be added to a workbook by calling the function multiple times.  If the worksheet | 
					
						
							|  |  |  | name is already used in the workbook, it will throw an error. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | _Append a Worksheet to a Workbook and find a unique name_ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | var new_name = XLSX.utils.book_append_sheet(workbook, worksheet, name, true); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If the fourth argument is `true`, the function will start with the specified | 
					
						
							|  |  |  | worksheet name.  If the sheet name exists in the workbook, a new worksheet name | 
					
						
							| 
									
										
										
										
											2023-06-25 19:57:03 +00:00
										 |  |  | will be chosen by finding the name stem and incrementing the counter. | 
					
						
							| 
									
										
										
										
											2023-06-25 09:36:58 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | XLSX.utils.book_append_sheet(workbook, sheetA, "Sheet2", true); // Sheet2 | 
					
						
							|  |  |  | XLSX.utils.book_append_sheet(workbook, sheetB, "Sheet2", true); // Sheet3 | 
					
						
							|  |  |  | XLSX.utils.book_append_sheet(workbook, sheetC, "Sheet2", true); // Sheet4 | 
					
						
							|  |  |  | XLSX.utils.book_append_sheet(workbook, sheetD, "Sheet2", true); // Sheet5 | 
					
						
							|  |  |  | ``` |