gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:39:46 25 4
gpt4 key购买 nike

我在使用 Microsoft 版本的 javascript 时遇到了以前从未见过的问题。

我正在通过 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 Date 对象作为

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

有没有人遇到过这个问题?我需要将值解析为字符串,以便稍后进行字符串操作。

非常感谢!

最佳答案

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

在您的情况下,您似乎会从包含 Excel Date 对象的单元格中获取值。与 JS 不同,Excel 还具有原生 Date 数据类型,JS 的 typeof 运算符似乎能够读取该数据类型。

要从 ActiveX 属性中获取字符串,您可以这样做

var str = new String(ActiveX.property);

这不是防弹的,但它在我使用过的任何地方都对我有用。

关于JavaScript Excel.Application ActiveX cell.Value 返回 "date"类型的值,其原型(prototype)中没有 toString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21335200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com