forked from sheetjs/docs.sheetjs.com
		
	
		
			
	
	
		
			101 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			101 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|  | # Hyperlinks
 | ||
|  | 
 | ||
|  | <details> | ||
|  |   <summary><b>Format Support</b> (click to show)</summary> | ||
|  | 
 | ||
|  | **Cell Hyperlinks**: XLSX/M, XLSB, BIFF8 XLS, XLML, ODS, HTML | ||
|  | 
 | ||
|  | **Tooltips**: XLSX/M, XLSB, BIFF8 XLS, XLML | ||
|  | 
 | ||
|  | </details> | ||
|  | 
 | ||
|  | Hyperlinks are stored in the `l` key of cell objects.  The `Target` field of the | ||
|  | hyperlink object is the target of the link, including the URI fragment. Tooltips | ||
|  | are stored in the `Tooltip` field and are displayed when hovering over the text. | ||
|  | 
 | ||
|  | For example, the following snippet creates a link from cell `A3` to | ||
|  | <https://sheetjs.com> with the tip `"Find us @ SheetJS.com!"`: | ||
|  | 
 | ||
|  | ```js | ||
|  | ws["A1"].l = { Target: "https://sheetjs.com", Tooltip: "Find us @ SheetJS.com!" }; | ||
|  | ``` | ||
|  | 
 | ||
|  | Note that Excel does not automatically style hyperlinks.  They will be displayed | ||
|  | using default style. <a href="https://sheetjs.com/pro">SheetJS Pro Basic</a> | ||
|  | extends this export with support for hyperlink styling. | ||
|  | 
 | ||
|  | ## Remote Links
 | ||
|  | 
 | ||
|  | HTTP / HTTPS links can be used directly: | ||
|  | 
 | ||
|  | ```js | ||
|  | ws["A2"].l = { Target: "https://docs.sheetjs.com/#hyperlinks" }; | ||
|  | ws["A3"].l = { Target: "http://localhost:7262/yes_localhost_works" }; | ||
|  | ``` | ||
|  | 
 | ||
|  | Excel also supports `mailto` email links with subject line: | ||
|  | 
 | ||
|  | ```js | ||
|  | ws["A4"].l = { Target: "mailto:ignored@dev.null" }; | ||
|  | ws["A5"].l = { Target: "mailto:ignored@dev.null?subject=Test Subject" }; | ||
|  | ``` | ||
|  | 
 | ||
|  | ## Local Links
 | ||
|  | 
 | ||
|  | Links to absolute paths should use the `file://` URI scheme: | ||
|  | 
 | ||
|  | ```js | ||
|  | ws["B1"].l = { Target: "file:///SheetJS/t.xlsx" }; /* Link to /SheetJS/t.xlsx */ | ||
|  | ws["B2"].l = { Target: "file:///c:/SheetJS.xlsx" }; /* Link to c:\SheetJS.xlsx */ | ||
|  | ``` | ||
|  | 
 | ||
|  | Links to relative paths can be specified without a scheme: | ||
|  | 
 | ||
|  | ```js | ||
|  | ws["B3"].l = { Target: "SheetJS.xlsb" }; /* Link to SheetJS.xlsb */ | ||
|  | ws["B4"].l = { Target: "../SheetJS.xlsm" }; /* Link to ../SheetJS.xlsm */ | ||
|  | ``` | ||
|  | 
 | ||
|  | 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 | ||
|  | ("Internal Links") are marked with a leading hash character: | ||
|  | 
 | ||
|  | ```js | ||
|  | ws["C1"].l = { Target: "#E2" }; /* Link to cell E2 */ | ||
|  | ws["C2"].l = { Target: "#Sheet2!E2" }; /* Link to cell E2 in sheet Sheet2 */ | ||
|  | ws["C3"].l = { Target: "#SomeDefinedName" }; /* Link to Defined Name */ | ||
|  | ``` | ||
|  | 
 | ||
|  | ## HTML
 | ||
|  | 
 | ||
|  | The HTML DOM parser will process `<a>` links in the table: | ||
|  | 
 | ||
|  | ```jsx live | ||
|  | /* The live editor requires this function wrapper */ | ||
|  | function ExportHyperlink(props) { | ||
|  | 
 | ||
|  |   /* Callback invoked when the button is clicked */ | ||
|  |   const xport = React.useCallback(() => { | ||
|  |     /* Create worksheet from HTML DOM TABLE */ | ||
|  |     const table = document.getElementById("TableLink"); | ||
|  |     const wb = XLSX.utils.table_to_book(table); | ||
|  | 
 | ||
|  |     /* Export to file (start a download) */ | ||
|  |     XLSX.writeFile(wb, "SheetJSHyperlink1.xlsx"); | ||
|  |   }); | ||
|  | 
 | ||
|  |   return (<> | ||
|  |     <button onClick={xport}><b>Export XLSX!</b></button> | ||
|  |     <table id="TableLink"><tbody><tr><td> | ||
|  |       Do not click here, for it is link-less. | ||
|  |     </td></tr><tr><td> | ||
|  |       <a href="https://sheetjs.com">Click here for more info</a> | ||
|  |     </td></tr></tbody></table> | ||
|  |   </>); | ||
|  | } | ||
|  | ``` |