ADODB查询将Excel单元格更新为转义文本

时间:2011-10-26 13:02:51

标签: sql excel vbscript adodb

我正在尝试更新Excel 2003电子表格中的单元格,但我遇到的问题是Excel在我的值的前面添加了单引号。有没有办法以整数形式输入值而不是转义字符串?

谢谢!

Const filePath = "C:\1.xls"

Dim ado: Set ado = CreateObject("ADODB.Connection")
ado.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=""" _
                    & filePath & """;Extended Properties=""Excel 8.0;HDR=No"";"

ado.CursorLocation = 3
ado.Open

ado.Execute "UPDATE [Sheet1$A1:A1] SET F1 = 1;"

ado.Close

以上代码将单元格A1更新为'1

2 个答案:

答案 0 :(得分:2)

我猜测combination of registry values and existing data导致列的数据类型被视为文本。请注意,当使用ACE / Jet的OLE DB提供程序时,Excel只有一种数字类型,即FLOAT(双精度)。

要发现所考虑的数据类型,请尝试运行:

Const filePath = "C:\1.xls"

Dim ado: Set ado = CreateObject("ADODB.Connection")
ado.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=""" _
                    & filePath & """;Extended Properties=""Excel 8.0;HDR=No"";"

ado.CursorLocation = 3
ado.Open

Dim rs
Set rs = ado.Execute("SELECT DISTINCT TYPENAME(F1) FROM [Sheet1$A1:A1];")
MsgBox rs.GetString

ado.Close

答案 1 :(得分:2)

我已经设法通过Alex K和onedaywhen的提示来解决这个问题。

解决方法是在运行我的脚本之前,使用正确的类型(数字,自定义等)简单地格式化我想要更新的Excel单元格。

奇怪的是,我确信我几天前尝试了这个并且没有用......但我想它一定是在当天晚了!