当路径声明为绝对路径时,此代码段正常工作。考虑一下
行var wb = xl.Workbooks.Open("C:\\temp\\temp.csv");
代码中的。但是,我想声明相同的相对路径。我该怎么做?
var xl = new ActiveXObject("Excel.Application");
xl.Visible = true;
var wb = xl.Workbooks.Open("C:\\temp\\temp.csv");
var sheet = wb.ActiveSheet;
wb.Worksheets.Add(after=wb.Sheets(wb.Sheets.Count));
var pws = wb.ActiveSheet;
pws.Name="temp_pivot";
var pvtTable = pws.PivotTableWizard(1, varSource=wb.sheets("temp").Range("A1").CurrentRegion);
pvtTable.PivotFields("DECISIONYEAR").Orientation = 1;
pvtTable.PivotFields("DECISIONMONTH").Orientation = 1;
pvtTable.PivotFields("WEEKYEAR").Orientation = 1;
pvtTable.PivotFields("APPLICANT").Orientation = 4;
pvtTable.PivotFields("SUM OF APPLICANT").Function=-4157;
pvtTable.PivotFields("APPROVED").Orientation = 4;
pvtTable.PivotFields("SUM OF APPROVED").Function=-4157;
pvtTable.PivotFields("SOURCE").Orientation = 3;
pvtTable.PivotFields("PRODUCTCOLOR").Orientation = 3;
pvtTable.PivotFields("PRODUCT").Orientation = 3;
pvtTable.PivotFields("SUB_CHANNEL_CADM").Orientation = 3;
pvtTable.PivotFields("CHANNEL_CADM").Orientation = 3;
pvtTable.PivotFields("MARKET").Orientation = 3;
pvtTable.PivotFields("OFFER_TYPE").Orientation = 3;
pvtTable.DataPivotField.Orientation=2;
pws.Columns.Autofit;
pws.Rows.Autofit;
xl.DisplayAlerts =0;
xl.DisplayAlerts = 1
xl.CutCopyMode = 0;
xl.EnableEvents = 0;
xl = null;
答案 0 :(得分:1)
Windows Scripting Host部分功能允许您使用相对于当前目录的路径,该目录将是您启动脚本的目录。如果从命令行启动它,那么当然它将是命令行中的当前目录。如果通过在Windows资源管理器中双击该文件来启动它,它将是您双击它的目录。
当您以各种方式启动文件时,您可以找到当前目录的内容:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var curDir = fso.GetAbsolutePathName(".");
WScript.Echo(curDir);
但是,Excel可能不会默认为同一目录。 (例如,在我的系统上,它默认为用户的文档文件夹。)因此,您需要使用fso.GetAbsolutePathName
,然后将绝对路径传递给Excel,如下所示:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var xl = new ActiveXObject("Excel.Application");
xl.Visible = true;
var wb = xl.Workbooks.Open(fso.GetAbsolutePathName("temp.csv"));
这样,虽然您在代码中使用了相对路径,但是您正在向Excel传递绝对路径,因此无论 认为当前目录是什么,它都会找到它。