如何使用JavaScript将Excel工作簿保存到当前用户桌面?
我通过以下网页创build工作簿:
var thisTable = document.getElementById("mytable3").innerHTML; window.clipboardData.setData("Text", thisTable); var objExcel = new ActiveXObject ("Excel.Application"); objExcel.visible = true; var objWorkbook = objExcel.Workbooks.Add(); var objWorksheet = objWorkbook.Worksheets(1); objWorkbook.Worksheets(1).Activate; objWorksheet.name = "test"; objWorksheet.Paste; objWorksheet.columns.autofit; window.clipboardData.setData("Text",""); objWorkbook.Worksheets(1).SaveAs("%USERPROFILE%\\Desktop\\xxx.xls");
但是对于objWorkbook.Worksheets(1).SaveAs("%USERPROFILE%\\Desktop\\xxx.xls");
– 它不保存到桌面,并给出这个错误:
SCRIPT1004: Microsoft Excel cannot access the file 'C:\Users\user\Documents\%USERPROFILE%\Desktop\B612F000'. There are several possible reasons: • The file name or path does not exist. • The file is being used by another program. • The workbook you are trying to save has the same name as a currently open workbook.
从@PA。 回答我终于得到了答案
//For Expand environment var wshShell = new ActiveXObject("WScript.Shell"); var userProfile = wshShell.ExpandEnvironmentStrings("%USERPROFILE%\\Desktop\\test.xls"); //For Save objWorkbook.Worksheets(1).SaveAs(userProfile);
Thak You @PA。
您认为JavaScript扩展了string内的环境variables。 对你不幸的是,它不。
你需要在代码中扩展它。 使用wscript.shell对象的Environment属性来访问任何环境variables。
首先,访问wscript.shell对象。 在WSH中,使用
var wshell = WScript.CreateObject("wscript.shell");
或者在浏览器中使用
var wshell = new ActiveXObject("WScript.Shell");
接着
var userProfile = wshell.Environment("USERPROFILE");
也可以使用ExpandEnvironmentStrings方法扩展string中的variables
objWorkbook.Worksheets(1).SaveAs( wshell.ExpandEnvironmentStrings("%USERPROFILE%\\Desktop\\xxx.xls") );