如何使用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") );