48 lines
1.3 KiB
JavaScript
48 lines
1.3 KiB
JavaScript
#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(); |