48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			React
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			React
		
	
	
	
	
	
|  | #include "xlsx.extendscript.js"; | ||
|  | 
 | ||
|  | 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); | ||
|  | } | ||
|  | 
 | ||
|  | function main_write() { | ||
|  |   /* Show File Picker */ | ||
|  |   var thisFile = File.saveDialog("Select an output file", "*.xlsx;*.xls"); | ||
|  |   if(!thisFile) { alert("File not found!"); return; } | ||
|  | 
 | ||
|  |   /* 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)); | ||
|  |   } | ||
|  | 
 | ||
|  |   /* Write file to disk */ | ||
|  |   XLSX.writeFile(wb, thisFile.absoluteURI); | ||
|  |   alert("Created File " + thisFile.absoluteURI); | ||
|  | } | ||
|  | 
 | ||
|  | main_write(); |