mirror of
https://github.com/gnh1201/welsonjs.git
synced 2024-11-26 23:41:42 +00:00
223 lines
9.5 KiB
JavaScript
223 lines
9.5 KiB
JavaScript
var STD = require("lib/std");
|
|
var SYS = require("lib/system");
|
|
var FILE = require("lib/file");
|
|
|
|
// msoffice.js
|
|
var FileTypes = {};
|
|
|
|
// https://support.microsoft.com/en-au/office/file-formats-that-are-supported-in-excel-0943ff2c-6014-4e8d-aaea-b83d51d46247
|
|
FileTypes.Excel = [
|
|
{"extension": [".xlsx"], "type": "Excel Workbook"},
|
|
{"extension": [".xlsm"], "type": "Excel Macro-Enabled Workbook (code)"},
|
|
{"extension": [".xlsb"], "type": "Excel Binary Workbook"},
|
|
{"extension": [".xltx"], "type": "Template"},
|
|
{"extension": [".xltm"], "type": "Template (code)"},
|
|
{"extension": [".xls"], "type": "Excel 97- Excel 2003 Workbook"},
|
|
{"extension": [".xlt"], "type": "Excel 97- Excel 2003 Template"},
|
|
{"extension": [".xls"], "type": "Microsoft Excel 5.0/95 Workbook"},
|
|
{"extension": [".xml"], "type": "XML Spreadsheet 2003"},
|
|
{"extension": [".xml"], "type": "XML Data"},
|
|
{"extension": [".xlam"], "type": "Excel Add-In"},
|
|
{"extension": [".xla"], "type": "Excel 97-2003 Add-In"},
|
|
{"extension": [".xlw"], "type": "Excel 4.0 Workbook"},
|
|
{"extension": [".xlr"], "type": "Works 6.0-9.0 spreadsheet"},
|
|
{"extension": [".prn"], "type": "Formatted Text (Space-delimited)"},
|
|
{"extension": [".txt"], "type": "Text (Tab-delimited)"},
|
|
{"extension": [".txt"], "type": "Text (Macintosh)"},
|
|
{"extension": [".txt"], "type": "Text (MS-DOS)"},
|
|
{"extension": [".txt"], "type": "Unicode Text"},
|
|
{"extension": [".csv"], "type": "CSV (comma delimited)"},
|
|
{"extension": [".csv"], "type": "CSV (Macintosh)"},
|
|
{"extension": [".csv"], "type": "CSV (MS-DOS)"},
|
|
{"extension": [".dif"], "type": "DIF"},
|
|
{"extension": [".slk"], "type": "SYLK"},
|
|
{"extension": [".dbf"], "type": "DBF 3, DBF 4"},
|
|
{"extension": [".ods"], "type": "OpenDocument Spreadsheet"},
|
|
{"extension": [".pdf"], "type": "PDF"},
|
|
{"extension": [".xps"], "type": "XPS Document"},
|
|
{"extension": [".wmf", ".emf"], "type": "Picture"},
|
|
{"extension": [".bmp"], "type": "Bitmap"},
|
|
{"extension": [".xls"], "type": "Microsoft Excel file formats"},
|
|
{"extension": [".slk"], "type": "SYLK"},
|
|
{"extension": [".dif"], "type": "DIF"},
|
|
{"extension": [".txt"], "type": "Text (tab-delimited)"},
|
|
{"extension": [".csv"], "type": "CSV (Comma-delimited)"},
|
|
{"extension": [".rtf"], "type": "Formatted text (Space-delimited)"},
|
|
{"extension": [".gif", ".jpg", ".doc", ".xls", ".bmp"], "type": "Embedded object"},
|
|
{"extension": [".gif", ".jpg", ".doc", ".xls", ".bmp"], "type": "Linked object"},
|
|
{"extension": [".emf"], "type": "Office drawing object"},
|
|
{"extension": [".txt"], "type": "Text"},
|
|
{"extension": [".mht", ".mhtml"], "type": "Single File Web Page"},
|
|
{"extension": [".htm", ".html"], "type": "Web Page"}
|
|
];
|
|
|
|
// https://support.microsoft.com/en-au/office/file-formats-that-are-supported-in-powerpoint-252c6fa0-a4bc-41be-ac82-b77c9773f9dc
|
|
FileTypes.PowerPoint = [
|
|
{"extension": [".pptx"], "type": "PowerPoint Presentation"},
|
|
{"extension": [".pptm"], "type": "PowerPoint Macro-Enabled Presentation"},
|
|
{"extension": [".ppt"], "type": "PowerPoint 97-2003 Presentation"},
|
|
{"extension": [".pdf"], "type": "PDF Document Format"},
|
|
{"extension": [".xps"], "type": "XPS Document Format"},
|
|
{"extension": [".potx"], "type": "PowerPoint Design Templates"},
|
|
{"extension": [".potm"], "type": "PowerPoint Macro-Enabled Design Template"},
|
|
{"extension": [".pot"], "type": "PowerPoint 97-2003 Design Template"},
|
|
{"extension": [".thmx"], "type": "Office Theme"},
|
|
{"extension": [".ppsx"], "type": "PowerPoint Show"},
|
|
{"extension": [".ppsm"], "type": "PowerPoint Macro-Enabled Show"},
|
|
{"extension": [".pps"], "type": "PowerPoint 97-2003 Show"},
|
|
{"extension": [".ppam"], "type": "PowerPoint Add-In"},
|
|
{"extension": [".ppa"], "type": "PowerPoint 97-2003 Add-In"},
|
|
{"extension": [".xml"], "type": "PowerPoint XML Presentation"},
|
|
{"extension": [".mp4"], "type": "MPEG-4 Video"},
|
|
{"extension": [".wmv"], "type": "Windows Media Video"},
|
|
{"extension": [".gif"], "type": "GIF (Graphics Interchange Format)"},
|
|
{"extension": [".jpg"], "type": "JPEG (Joint Photographic Experts Group) FileFormat"},
|
|
{"extension": [".png"], "type": "PNG (Portable Network Graphics) Format"},
|
|
{"extension": [".tif"], "type": "TIFF (Tag Image File Format)"},
|
|
{"extension": [".bmp"], "type": "Device Independent Bitmap"},
|
|
{"extension": [".wmf"], "type": "Windows Metafile"},
|
|
{"extension": [".emf"], "type": "Enhanced Windows Metafile"},
|
|
{"extension": [".rtf"], "type": "Outline/RTF"},
|
|
{"extension": [".pptx"], "type": "PowerPoint Picture Presentation"},
|
|
{"extension": [".pptx"], "type": "Strict Open XML Presentation"},
|
|
{"extension": [".odp"], "type": "OpenDocument Presentation"},
|
|
{"extension": [".mht", ".mhtml"], "type": "Single File Web Page"},
|
|
{"extension": [".htm", ".html"], "type": "Web Page"}
|
|
];
|
|
|
|
// https://learn.microsoft.com/en-us/deployoffice/compat/office-file-format-reference#file-formats-that-are-supported-in-word
|
|
FileTypes.Word = [
|
|
{"extension": [".doc"], "type": "Word 97-2003 Document"},
|
|
{"extension": [".docm"], "type": "Word Macro-Enabled Document"},
|
|
{"extension": [".docx"], "type": "Word Document"},
|
|
{"extension": [".docx"], "type": "Strict Open XML Document"},
|
|
{"extension": [".dot"], "type": "Word 97-2003 Template"},
|
|
{"extension": [".dotm"], "type": "Word Macro-Enabled Template"},
|
|
{"extension": [".dotx"], "type": "Word Template"},
|
|
{"extension": [".htm", ".html"], "type": "Web Page"},
|
|
{"extension": [".htm", ".html"], "type": "Web Page, Filtered"},
|
|
{"extension": [".mht", ".mhtml"], "type": "Single File Web Page"},
|
|
{"extension": [".odt"], "type": "OpenDocument Text"},
|
|
{"extension": [".pdf"], "type": "PDF"},
|
|
{"extension": [".rtf"], "type": "Rich Text Format"},
|
|
{"extension": [".txt"], "type": "Plain Text"},
|
|
{"extension": [".wps"], "type": "Works 6-9 Document"},
|
|
{"extension": [".xml"], "type": "Word 2003 XML Document"},
|
|
{"extension": [".xml"], "type": "Word XML Document"},
|
|
{"extension": [".xps"], "type": "XPS Document"}
|
|
];
|
|
|
|
// EXAMPLE: new Office.Excel()
|
|
function Excel() {
|
|
this.Application = CreateObject("Excel.Application");
|
|
this.Version = this.Application.Version;
|
|
this.Application.Visible = true;
|
|
|
|
console.info("Microsoft Excel Version:", this.Version);
|
|
|
|
this.CurrentWorkbook = null;
|
|
this.CurrentWorksheet = null;
|
|
|
|
this.open = function(filename) {
|
|
if (typeof filename !== "undefined") {
|
|
// check type of the path
|
|
if (filename.indexOf(":\\") < 0 && filename.indexOf(":/") < 0) {
|
|
filename = SYS.getCurrentWorkingDirectory() + "\\" + filename; // get absolute path
|
|
}
|
|
if (FILE.fileExists(filename)) {
|
|
console.warn("Found the file:", filename);
|
|
this.Application.Workbooks.Open(filename);
|
|
this.CurrentWorkbook = this.Application.ActiveWorkbook;
|
|
} else {
|
|
console.warn("File not exists!");
|
|
this.CurrentWorkbook = this.Application.Workbooks.Add();
|
|
}
|
|
} else {
|
|
this.CurrentWorkbook = this.Application.Workbooks.Add();
|
|
}
|
|
this.selectWorksheet(1);
|
|
|
|
return this;
|
|
};
|
|
|
|
this.close = function() {
|
|
try {
|
|
this.CurrentWorksheet = null;
|
|
this.CurrentWorkbook.Close();
|
|
this.CurrentWorkbook = null;
|
|
this.Application.Quit();
|
|
this.Application = null;
|
|
} catch (e) {
|
|
this.CurrentWorksheet = null;
|
|
this.CurrentWorkbook = null;
|
|
this.Application = null;
|
|
}
|
|
};
|
|
|
|
this.saveAs = function(filename) {
|
|
try {
|
|
this.CurrentWorkbook.saveAs(filename);
|
|
return FILE.fileExists(filename);
|
|
} catch (e) {
|
|
console.error("Could not save a file:", e.message);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
this.selectWorksheet = function(idx) {
|
|
if (idx == 0) {
|
|
this.CurrentWorksheet = this.Application.ActiveSheet;
|
|
} else {
|
|
this.CurrentWorksheet = this.CurrentWorkbook.Worksheets(idx);
|
|
}
|
|
|
|
return this;
|
|
};
|
|
|
|
this.getCellByPosition = function(row, col) {
|
|
return new Excel.Cell(this.CurrentWorksheet.Cells(row, col));
|
|
};
|
|
};
|
|
Excel.SupportedFileTypes = FileTypes.Excel;
|
|
Excel.Cell = function(cell) {
|
|
this.cell = cell;
|
|
// EXAMPLE: excel.getCellByPosition(1, 3).setValue("Hello world!");
|
|
this.setValue = function(value) {
|
|
this.cell.Value = value;
|
|
};
|
|
this.getValue = function() {
|
|
return this.cell.Value;
|
|
};
|
|
// EXAMPLE: excel.getCellByPosition(1, 3).setFormula("=SUM(A1:A2)");
|
|
this.setFormula = function(formula) {
|
|
if (formula.indexOf('=') != 0) {
|
|
console.warn("Be careful because it may not be the correct formula.");
|
|
}
|
|
this.cell.Formula = formula;
|
|
}
|
|
this.getFormula = function() {
|
|
return this.call.Formula;
|
|
}
|
|
};
|
|
|
|
// EXAMPLE: new Office.PowerPoint()
|
|
function PowerPoint() {
|
|
this.Application = CreateObject("PowerPoint.Application");
|
|
}
|
|
PowerPoint.SupportedFileTypes = FileTypes.PowerPoint;
|
|
|
|
// EXAMPLE: new Office.Word()
|
|
function Word() {
|
|
this.Application = CreateObject("Word.Application");
|
|
}
|
|
Word.SupportedFileTypes = FileTypes.Word;
|
|
|
|
exports.Excel = Excel;
|
|
exports.PowerPoint = PowerPoint;
|
|
exports.Word = Word;
|
|
|
|
exports.VERSIONINFO = "Microsoft Office interface (msoffice.js) version 0.1.4";
|
|
exports.AUTHOR = "abuse@catswords.net";
|
|
exports.global = global;
|
|
exports.require = global.require;
|