NodeJS在Windows上使用OLE/COM/ActiveXObject对象连接ADODB数据库,操作Application.Excel、运行VBA宏并另存为网页


发布者 ourjs  发布时间 1638520265479
关键字 Node.JS  开源  数据库 

ActiveX的前身是OLE,后身是COM,是微软建立的一套组件技术,只不过在不同的发展阶段使用了不同的名称。COM全称是组件对象模型。COM组件的优势在于,只要你遵循COM的规范,所有组件之间就可以很方便的相互调用,而不用关心组件开发所用的语言,不用关心组件最初是为哪个应用写的。因此,在Windows平台下,很多厂商及开发者提供了各种各样的COM组件,可被用户使用。比如微软自己的Office提供的Word、Excel,除了作为独立运行的应用外,同时也提供COM组件,因此,你可以在你的程序里嵌入一个Word文档或者Excel表格,当其被激活时,可以自动切换到Word或Excel的界面进行编辑。为了使JavaScript也能获得这些组件带来的便利,微软的JavaScript引擎提供了一个ActiveXObject,用来包装COM组件以被JavaScript代码调用。

node-activex简介

node-activex项目就是这样一个能在node.js中调用COM/ActiveXObject对象的组件库。可直接通过COM连接数据库,操作Word/Excel/PPT等Excel组件。

项目地址:

https://github.com/durs/node-activex

打开OLEDB数据库

var winax = require('winax');
var con = new winax.Object('ADODB.Connection');
con.Open('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\tmp;Extended Properties="DBASE IV;"', '', '');
con.Execute("Create Table persons.dbf (Name char(50), City char(50), Phone char(20), Zip decimal(5))");
con.Execute("Insert into persons.dbf Values('John', 'London','123-45-67','14589')");
con.Execute("Insert into persons.dbf Values('Andrew', 'Paris','333-44-55','38215')");
con.Execute("Insert into persons.dbf Values('Romeo', 'Rom','222-33-44','54323')");

新建一个Excel并写入内容

var excel = new winax.Object("Excel.Application", { activate: true });
var wbk = excel.Workbooks.Add(template_filename);
var wsh = wbk.Worksheets.Item(1);
wsh.Range("C3:E4").Value = [ ["C3", "D3", "E3" ], ["C4", "D4", "E4" ] ];
wsh.Range("C3:E4").Value = [ ["C3", "D3", "E3" ], "C4" ]; // will let D4 and E4 empty
wsh.Range("C3:E4").Value = [ [null, "D3", "E3" ], "C4" ]; // will let C3, D4 and E4 empty
wsh.Range("C3:F4").Value = [ [100], [200] ]; // will duplicate the two rows in colums C, D, E, and F
wsh.Range("C3:F4").Value = [ [100, 200, 300, 400] ]; // will duplicate the for cols in rows 3 and 4
wsh.Range("C3:F4").Value = [ [100, 200] ]; // Will correctly duplicate the first two cols, but col E and F with contains "#N/A"
const data = wsh.Range("C3:E4").Value.valueOf();
console.log("Cell E4 value is", data[1][2]);

打开Excel执行VBA宏,并另存为网页

const workbook = excel.Workbooks.Open('C:\\Uxxxxxxxxxxx\\example.xlsm')
const worksheet = workbook.Worksheets.Item("Home Page")
worksheet.Cells.Item(7,6).value = "Mar";

const application = excel.Application;
pplication.Run('Calculate_NAME');

workbook.SaveAs('C:\\Uxxxxxxxxxxx\\output.html', 44, undefined, undefined, false, false, 1, 2);








 热门文章 - 分享最多
  1. CSS Grid网格入门实例教程: 强大的动态布局
  2. node.js中async/await不用try/catch,使用error first或go语言方法处理异常
  3. 网站集成百度、Bing必应搜索引擎,在网页中实现站内全文搜索
  4. React Hooks入门教程九:在React中集成使用Vue实现数据双向绑定,手动配置Webpack和Babel
  5. node.js性能压力测试入门教程:wrk和loadtest安装使用
  6. JavaScript和node.js内存泄露的原因和避免方法及Chrome调试工具使用教程
  7. Html5网页中用JavaScript调用本地手机摄像头扫描识别微信二维码、条形码:postMessage跨域https传递扫码结果消息
  8. JavaScript设置对象属性只读不可修改、不可枚举、不可删除:Object.defineProperty
  9. CSS教程:图片使用混合模式和颜色叠加filter滤镜,改变PNG图标颜色
  10. CSS教程:如何设置自动显示隐藏scrollbar滚动条,自定义外观样式/宽度,附demo示例大全

 相关阅读
  1. node.js通过Error.prepareStackTrace获取上层调用函数的文件名地址和行数位置
  2. webpack前端项目调试环境安装入门:webpack.config.js禁用UglifyJs只合并JavaScript不压缩混淆代码
  3. node.js创建aria2代理服务器:使用net.socket转发rpc或http request请求,替换websocket
  4. request停止维护:用node.js实现http网页爬虫抓取,模拟ajax\post请求,大文件上传下载
  5. 用node.js在Windows或Linux平台上高性能解压/压缩zip、tar大文件,输出到文件或Stream流
  6. Node.JS中回调嵌套和async/await执行空函数性能效率对比测试
  7. Node.JS如何按顺序调用async函数,如何判断是否为async函数,在mocha中自动化测试async/await代码
  8. node.js将回调函数嵌套,用promise改造成async/await顺序执行:异常处理和返回多个参数
  9. 基于Node.JS和Electron编写的集成开发环境 VS Code,成为最受欢迎的IDE
  10. 使用node.js和oAuth2协议集成Github/LinkedIn第三方登录以OnceOA模块源码为例

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA