forked from sheetjs/docs.sheetjs.com
		
	
		
			
				
	
	
		
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| const UXP = require("uxp");
 | |
| const XLSX = require("./xlsx.full.min.js");
 | |
| const storage = UXP.storage, ufs = storage.localFileSystem;
 | |
| 
 | |
| /* show file picker (single file, no folders) */
 | |
| const file = await ufs.getFileForOpening({ types: ["xlsx", "xls", "xlsb"] });
 | |
| /* read data into an ArrayBuffer */
 | |
| const ab = await file.read({ format: storage.formats.binary });
 | |
| /* parse with SheetJS */
 | |
| const wb = XLSX.read(ab), wsname = wb.SheetNames[0];
 | |
| const data = XLSX.utils.sheet_to_json(wb.Sheets[wsname], { header: 1, raw: false });
 | |
| 
 | |
| /* Set title */
 | |
| app.activeDocument.textFrames.itemByName("Title").texts.item(0).contents = wsname;
 | |
| 
 | |
| /* Set table */
 | |
| var tabeller = app.activeDocument.textFrames.itemByName("Table Frame");
 | |
| var columns = data[0].length;
 | |
| for(var R = 0; R < data.length; ++R) columns = Math.max(columns, data[R].length);
 | |
| var table = tabeller.tables.add({
 | |
|   headerRowCount: 1,
 | |
|   bodyRowCount: data.length - 1,
 | |
|   columnCount: columns
 | |
| });
 | |
| for(R = 0; R < data.length; ++R) {
 | |
|   if(data[R] == null) continue;
 | |
|   for(var C = 0; C < data[R].length; ++C) {
 | |
|     if(data[R][C] == null) continue;
 | |
|     table.rows.item(R).cells.item(C).contents = data[R][C];
 | |
|   }
 | |
| }
 |