JavaScript Excel.Application ActiveX cell.值返回"date"类型的值,其原型中没有 toString()



我在使用JavaScript的Microsoft版本时遇到的问题。

我正在通过JScript ActiveX" Excel.Application"对象处理Excel文档。我直接在计算机上运行脚本(这不是Web应用程序,而是脚本工具)。

我的代码适合我从文档中获得的大多数值良好的代码:

var excel_application_object = new ActiveXObject("Excel.Application");
(...)
var excel_workbook_object = excel_application_object.Workbooks.Open("c:\excel.xls");
(...)
var worksheet_object = excel_workbook_object.Sheets(1);
(...)
for ( var icnt = 1 ; icnt <= worksheet_object.Cells.SpecialCells(11).Row ; icnt ++ )
{
    WScript.Echo(typeof worksheet_object.Cells(kcnt, lcnt).Value);
    WScript.Echo(worksheet_object.Cells(kcnt, lcnt).Value.toString());
}

对于某些单元来说,调用" ToString()"时,我会遇到错误。这些单元格非常奇怪:

typeof worksheet_object.Cells(kcnt, lcnt).Value == "date"

这不能是javascript日期对象

typeof (new Date()) == "object"

以前有人遇到过这个问题吗?我需要分析字符串的值,以便以后可以进行字符串操作。

非常感谢!

您需要记住,要处理从ActiveXobject返回的值。ActiveXs不是用JavaScript编写的(通常使用的语言是C,C 或#C),因此它们没有prototype,并且没有实现任何ECMA-Script标准。返回值的类型可能会有所不同,返回值也可能是JS中未知的一种类型。

在您的情况下,看起来您会从包含Excel日期对象的单元格中获得一个值。与JS不同,Excel还具有本地日期数据类型,JS的类型运算符似乎能够阅读。

要从Activex属性获取字符串,您可以做

var str = new String(ActiveX.property);

这不是弹力的证明,但是到处都对我有用。

最新更新