| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  | # Adobe ExtendScript
 | 
					
						
							| 
									
										
										
										
											2017-03-25 22:18:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  | ExtendScript adds some features to a limited form of ECMAScript version 3.  With | 
					
						
							|  |  |  | the included shim, the library can run within Photoshop and other Adobe apps! | 
					
						
							| 
									
										
										
										
											2017-03-25 22:18:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  | The main file is `test.jsx`.  Target-specific files prepend target directives. | 
					
						
							| 
									
										
										
										
											2018-02-08 18:21:39 +00:00
										 |  |  | Copy the `test.jsx` file as well as the `xlsx.extendscript.js` library script  | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  | to wherever you want the scripts to reside. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-08 18:21:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## ExtendScript Quirks
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | There are numerous quirks in ExtendScript code parsing, especially related to | 
					
						
							|  |  |  | Boolean and bit operations.  Most JS tooling will generate code that is not | 
					
						
							|  |  |  | compatible with ExtendScript.  It is highly recommended to `#include` the `dist` | 
					
						
							|  |  |  | file directly and avoid trying to minify or pack as part of a larger project. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## File I/O
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Using the `"binary"` encoding, file operations will work with binary strings | 
					
						
							|  |  |  | that play nice with the `"binary"` type of this library.  The `readFile` and | 
					
						
							|  |  |  | `writeFile` library functions wrap the File logic: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | /* Read file from disk */ | 
					
						
							|  |  |  | var workbook = XLSX.readFile(filename); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Write file to disk */ | 
					
						
							|  |  |  | XLSX.writeFile(workbook, filename); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The `readFile` and `writeFile` functions use `"binary"` encoding under the hood: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							| 
									
										
										
										
											2018-02-08 18:21:39 +00:00
										 |  |  | /* Read file from disk without using readFile */ | 
					
						
							|  |  |  | var infile = File(filename); | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  | infile.open("r"); | 
					
						
							|  |  |  | infile.encoding = "binary"; | 
					
						
							|  |  |  | var data = infile.read(); | 
					
						
							|  |  |  | var workbook = XLSX.read(data, {type:"binary"}); | 
					
						
							| 
									
										
										
										
											2018-02-08 18:21:39 +00:00
										 |  |  | infile.close(); | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-08 18:21:39 +00:00
										 |  |  | /* Write file to disk without using writeFile */ | 
					
						
							|  |  |  | var outFile = File(filename); | 
					
						
							|  |  |  | outFile.open("w"); | 
					
						
							|  |  |  | outFile.encoding = "binary"; | 
					
						
							|  |  |  | outFile.write(workbook); | 
					
						
							|  |  |  | outFile.close(); | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  | ``` | 
					
						
							| 
									
										
										
										
											2017-05-13 18:21:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-08 18:21:39 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## Demo
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The demo shows: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - loading the library in ExtendScript using `#include`: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | #include "xlsx.extendscript.js"
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - opening a file with `XLSX.readFile`: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | var workbook = XLSX.readFile("sheetjs.xlsx"); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - converting a worksheet to an array of arrays: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | var first_sheet_name = workbook.SheetNames[0]; | 
					
						
							|  |  |  | var first_worksheet = workbook.Sheets[first_sheet_name]; | 
					
						
							|  |  |  | var data = XLSX.utils.sheet_to_json(first_worksheet, {header:1}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | alert(data); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - writing a new workbook file: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```js | 
					
						
							|  |  |  | XLSX.writeFile(workbook, "sheetjs.slk"); | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2017-05-13 18:21:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-24 23:40:09 +00:00
										 |  |  | [](https://github.com/SheetJS/js-xlsx) |