用exceldna封装了一个Eval函数,调用的是ms的jscript,没有什么ribbon界面,就一个函数.主要用于在wps的js宏里面在com对象操作上做一个补充吧。在网络和本地操作方面束手无策的时候可以换条路试试。下面展示一下运用。
function comobject(){ var s=`var xl=new ActiveXObject('Excel.Application'); var b=xl.Version; xl.Quit(); b`; var result= Application.Run("Eval",s) console.log(result) } function scriptcontroluseexample(){ var s=`var sc=new ActiveXObject('Scriptcontrol'); sc.Language='Jscript'; sc.AddCode('var a={"范生":15,"张三":12};'); var b=sc.eval('a["张三"]');b` var result= Application.Run("Eval",s) console.log(result) }
function 剪切板数据(){ let ss= '"WPS JSA"' var s=`var html=new ActiveXObject('htmlfile'); var owin= html.parentWindow; var a=owin.clipboardData.setData("text",${ss}); a`; //console.log(s) var r=Application.Run("Eval",s); Range("A1").PasteSpecial(xlPasteAll) }
增加了文本读写追加函数、使用方法如下:
fso文件操作:
function test(){ let str =`var fso = new ActiveXObject("Scripting.FileSystemObject"); var f1 = fso.CreateTextFile("D:/file.txt", true); f1.WriteLine("This is a test."); f1.Close();`; Application.Run('Eval', str); }
连接access数据库(wps依赖32位的access database engine),返回数组:
function 连接数据库(){ var s=`var cnstr="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\mytest.mdb;"; var cn = new ActiveXObject("ADODB.Connection"); cn.Open(cnstr); var rs=cn.Execute("select * from 考试成绩") var c=rs.GetRows(); cn.Close();c`; let x=Application.Run("Eval",s); Console.log(''+x) }
fso获取文件的创建日期:
function 获取文件创建日期(){ let strFile=ThisWorkbook.Path.replace(/\\/g,"/")+'/1.png' var s=`var fso=new ActiveXObject("Scripting.FileSystemObject"); var f=fso.GetFile("${strFile}"); var r=f.DateCreated;r`; console.log(s) let x =WorksheetFunction.Text(Application.Run("Eval",s),"yyyy-MM-dd HH:mm:ss") console.log(x) }
wps没有64位版本。excel本身就是com操作,所以64位的我就不发了。32位版本的xll压缩附件:点击下载