forked from sheetjs/docs.sheetjs.com
		
	requirejs
This commit is contained in:
		
							parent
							
								
									260bb7014e
								
							
						
					
					
						commit
						89ab3cc4aa
					
				| @ -431,6 +431,36 @@ click the "Click to Export!" button to generate a file. | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| ## RequireJS | ||||
| 
 | ||||
| [Standalone scripts](../../installation/standalone) comply with AND `define` | ||||
| semantics, enabling use in RequireJS out of the box. | ||||
| 
 | ||||
| To enable use of the alias `xlsx`, the RequireJS config should set an alias in | ||||
| the `paths` property: | ||||
| 
 | ||||
| ```js | ||||
| require.config({ | ||||
|   baseUrl: ".", | ||||
|   name: "app", | ||||
|   paths: { | ||||
|     // highlight-next-line | ||||
|     xlsx: "xlsx.full.min" | ||||
|   } | ||||
| }); | ||||
| // highlight-next-line | ||||
| require(["xlsx"], function(XLSX) { | ||||
| 	/* use XLSX here */ | ||||
|   console.log(XLSX.version); | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| The [Live demo](pathname:///requirejs/requirejs.html) loads RequireJS from the | ||||
| CDN, uses it to load the standalone script from the SheetJS CDN, and uses the | ||||
| `XLSX` variable to create a button click handler that creates a workbook. | ||||
| 
 | ||||
| The `r.js` optimizer also supports the standalone scripts. | ||||
| 
 | ||||
| ## Snowpack | ||||
| 
 | ||||
| Snowpack works with no caveats. | ||||
|  | ||||
| @ -74,14 +74,14 @@ const workbook = XLSX.readFile("test.xlsx", { cellFormula: true }); | ||||
|   </TabItem> | ||||
|   <TabItem value="bun" label="Bun"> | ||||
| 
 | ||||
| Typically file data will be available as a `Buffer` from a network request / API | ||||
| Typically file data will be available as a `Uint8Array` from a network request | ||||
| or stored in the filesystem.  `cellFormula: true` should be added to the second | ||||
| options argument to `read` or `readFile`: | ||||
| 
 | ||||
| **`XLSX.read`** | ||||
| 
 | ||||
| ```js | ||||
| /* using read in NodeJS, `cellFormula` is in the second argument */ | ||||
| /* using read in Bun, `cellFormula` is in the second argument */ | ||||
| const ab = await (await fetch("test.xlsx")).arrayBuffer(); | ||||
| const workbook = XLSX.read(ab, { cellFormula: true }); | ||||
| // ------------------------------^^^^^^^^^^^^^^^^^ | ||||
| @ -90,7 +90,7 @@ const workbook = XLSX.read(ab, { cellFormula: true }); | ||||
| **`XLSX.readFile`** | ||||
| 
 | ||||
| ```js | ||||
| /* using readFile in NodeJS, add `cellFormula` to the second argument */ | ||||
| /* using readFile in Bun, add `cellFormula` to the second argument */ | ||||
| const workbook = XLSX.readFile("test.xlsx", { cellFormula: true }); | ||||
| // -------------------------------------------^^^^^^^^^^^^^^^^^ | ||||
| ``` | ||||
| @ -208,9 +208,7 @@ function ExportSimpleFormula(props) { | ||||
|     XLSX.writeFile(wb, "SheetJSFormula1.xlsx"); | ||||
|   }); | ||||
| 
 | ||||
|   return (<> | ||||
|     <button onClick={xport}><b>Export XLSX!</b></button> | ||||
|   </>); | ||||
|   return (<button onClick={xport}><b>Export XLSX!</b></button>); | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
|  | ||||
| @ -33,7 +33,7 @@ extends this export with support for hyperlink styling. | ||||
| HTTP / HTTPS links can be used directly: | ||||
| 
 | ||||
| ```js | ||||
| ws["A2"].l = { Target: "https://docs.sheetjs.com/#hyperlinks" }; | ||||
| ws["A2"].l = { Target: "https://docs.sheetjs.com/docs/csf/features/hyperlinks" }; | ||||
| ws["A3"].l = { Target: "http://localhost:7262/yes_localhost_works" }; | ||||
| ``` | ||||
| 
 | ||||
| @ -60,9 +60,13 @@ ws["B3"].l = { Target: "SheetJS.xlsb" }; /* Link to SheetJS.xlsb */ | ||||
| ws["B4"].l = { Target: "../SheetJS.xlsm" }; /* Link to ../SheetJS.xlsm */ | ||||
| ``` | ||||
| 
 | ||||
| :::caution | ||||
| 
 | ||||
| Relative Paths have undefined behavior in the SpreadsheetML 2003 format.  Excel | ||||
| 2019 will treat a `..\` parent mark as two levels up. | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| ## Internal Links | ||||
| 
 | ||||
| Links where the target is a cell or range or defined name in the same workbook | ||||
|  | ||||
| @ -62,6 +62,8 @@ The following table covers some common formats: | ||||
| | `A/P`    | Meridien ("A" or "P")        | | ||||
| | `AM/PM`  | Meridien ("AM" or "PM")      | | ||||
| 
 | ||||
| :::note | ||||
| 
 | ||||
| `m` and `mm` are context-dependent.  It is interpreted as "minutes" when the | ||||
| previous or next date token represents a time (hours or seconds): | ||||
| 
 | ||||
| @ -71,6 +73,8 @@ yyyy-mm-dd hh:mm:ss | ||||
|     month    minutes | ||||
| ``` | ||||
| 
 | ||||
| ::: | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| ### 1904 and 1900 Date Systems | ||||
|  | ||||
							
								
								
									
										50
									
								
								docz/static/requirejs/requirejs.html
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										50
									
								
								docz/static/requirejs/requirejs.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,50 @@ | ||||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
|   <head></head> | ||||
|   <body> | ||||
|     <h1>SheetJS Presidents Demo</h1> | ||||
|     <button id="xport">Click here to export</button> | ||||
|     <script src="http://requirejs.org/docs/release/2.3.3/comments/require.js"></script> | ||||
|     <script> | ||||
| /* Wire up RequireJS */ | ||||
| require.config({ | ||||
|   baseUrl: ".", | ||||
|   name: "app", | ||||
|   paths: { | ||||
|     xlsx: "https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min" | ||||
|   } | ||||
| }); | ||||
| require(["xlsx"], function(XLSX) { | ||||
|   document.getElementById("xport").addEventListener("click", async() => { | ||||
|     /* fetch JSON data and parse */ | ||||
|     const url = "https://sheetjs.com/executive.json"; | ||||
|     const raw_data = await (await fetch(url)).json(); | ||||
| 
 | ||||
|     /* filter for the Presidents */ | ||||
|     const prez = raw_data.filter(row => row.terms.some(term => term.type === "prez")); | ||||
| 
 | ||||
|     /* flatten objects */ | ||||
|     const rows = prez.map(row => ({ | ||||
|       name: row.name.first + " " + row.name.last, | ||||
|       birthday: row.bio.birthday | ||||
|     })); | ||||
| 
 | ||||
|     /* generate worksheet and workbook */ | ||||
|     const worksheet = XLSX.utils.json_to_sheet(rows); | ||||
|     const workbook = XLSX.utils.book_new(); | ||||
|     XLSX.utils.book_append_sheet(workbook, worksheet, "Dates"); | ||||
| 
 | ||||
|     /* fix headers */ | ||||
|     XLSX.utils.sheet_add_aoa(worksheet, [["Name", "Birthday"]], { origin: "A1" }); | ||||
| 
 | ||||
|     /* calculate column width */ | ||||
|     const max_width = rows.reduce((w, r) => Math.max(w, r.name.length), 10); | ||||
|     worksheet["!cols"] = [ { wch: max_width } ]; | ||||
| 
 | ||||
|     /* create an XLSX file and try to save to Presidents.xlsx */ | ||||
|     XLSX.writeFileXLSX(workbook, "Presidents.xlsx"); | ||||
|   }); | ||||
| }); | ||||
|     </script> | ||||
|   </body> | ||||
| </html> | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user