forked from sheetjs/docs.sheetjs.com
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| const UXP = require("uxp");
 | |
| const XLSX = require("./xlsx.full.min.js");
 | |
| if(typeof app == "undefined") app = require("indesign").app;
 | |
| const storage = UXP.storage, ufs = storage.localFileSystem;
 | |
| 
 | |
| function workbook_add_table(wb, table) {
 | |
|   /* Collect Data */
 | |
|   var data = [];
 | |
|   var cnt = table.rows.count();
 | |
|   for(var R = 0; R < cnt; ++R) {
 | |
|   var row = table.rows.item(R);
 | |
|     data[R] = [];
 | |
|     var ccnt = row.cells.count();
 | |
|     for(var C = 0; C < ccnt; ++C) {
 | |
|       var value = row.cells.item(C).contents;
 | |
|       data[R][C] = value;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if(data.length == 0) return;
 | |
| 
 | |
|   /* Create Worksheet */
 | |
|   var ws = XLSX.utils.aoa_to_sheet(data);
 | |
| 
 | |
|   /* Create new Workbook and add worksheet */
 | |
|   XLSX.utils.book_append_sheet(wb, ws);
 | |
| }
 | |
| 
 | |
| /* Create new Workbook */
 | |
| var wb = XLSX.utils.book_new();
 | |
| 
 | |
| /* Find all tables and add them to workbook */
 | |
| var tfcnt = app.activeDocument.textFrames.count();
 | |
| for(var i = 0; i < tfcnt; ++i) {
 | |
|   var tf = app.activeDocument.textFrames.item(i);
 | |
|   var tcnt = tf.tables.count();
 | |
|   if(tcnt == 0) continue;
 | |
|   for(var j = 0; j < tcnt; ++j) workbook_add_table(wb, tf.tables.item(j));
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| /* generate XLSX with type: "buffer" */
 | |
| const buf = XLSX.write(wb, { type: "buffer", bookType: "xlsx" });
 | |
| /* show file picker */
 | |
| const file = await ufs.getFileForSaving("SheetJSUXP.xlsx");
 | |
| /* write data */
 | |
| await file.write(buf, { data: storage.formats.binary });
 |