我需要在没有安装Microsoft Office的PC上使用VBScript在电子表格中添加一行。
我试过[Set objExcel = CreateObject("Excel.Application")
]
由于PC上不存在Excel,因此我无法创建此对象。
有没有办法在没有Excel的情况下修改电子表格?
答案 0 :(得分:8)
要使用下面的代码,请在与vbscript文件相同的文件夹中创建名为“Test.xls”的Excel工作簿。
在Test.xls中,在单元格A1到B4中输入以下数据:
First Last
Joe Smith
Mary Jones
Sam Nelson
将下面的vbscript代码粘贴到.vbs文件中:
Const adOpenStatic = 3
Const adLockOptimistic = 3
filename = "Test.xls"
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filename & _
";Extended Properties=Excel 8.0"
query = "Select * from [Sheet1$A1:B65535]"
Set rs = CreateObject("ADODB.Recordset")
rs.Open query, cn, adOpenStatic, adLockOptimistic
rs.AddNew
rs("First") = "George"
rs("Last") = "Washington"
rs.Update
rs.MoveFirst
Do Until rs.EOF
WScript.Echo rs.Fields("First") & " " & rs.Fields("Last")
rs.MoveNext
Loop
在命令提示符下,键入:
CSCRIPT Yourfile.vbs
它会在电子表格中添加一个名称,然后写出所有名称。
Joe Smith
Mary Jones
Sam Nelson
George Washington
答案 1 :(得分:2)
答案 2 :(得分:1)
并非没有极端困难。微软已经发布了他们的文件格式规范Excel here,但这些都不能掉以轻心,我认为你将很难使用VBScript。
答案 3 :(得分:1)
这是我用过的脚本的最终版本,谢谢大家的帮助。
Dim arrValue
arrValue = Array("Test","20","","I","2.25","3.9761","20","60","12","1","","1","1","1")
AddXLSRow "C:\Test.xls", "A1:N109", arrValue
Sub AddXLSRow(strSource, strRange, arrValues)
'This routine uses the data from an array to fill fields in the specified spreadsheet.
'Input strSource (String) = The Full path and filename of the spreadsheet to be used.
'Input arrValues (Array) = An array of values to be added to the spreadsheet.
Dim strConnection, conn, rs, strSQL, index
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strSource & ";Extended Properties=""Excel 8.0;HDR=Yes;"";"
Set conn = CreateObject("ADODB.Connection")
conn.Open strConnection
Set rs = CreateObject("ADODB.recordset")
strSQL = "SELECT * FROM " & strRange
rs.open strSQL, conn, 3,3
rs.AddNew
index = 0
For Each field In rs.Fields
If field.Type = 202 Then
field.value = arrValues(index)
ElseIffield.Type = 5 And arrValues(index) <> "" Then
field.value = CDbl(arrValues(index))
End If
If NOT index >= UBound(arrValues) Then
index = index + 1
End If
Next
rs.Update
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
End Sub
答案 4 :(得分:1)
我知道......多年以后但今天我需要弄清楚如何使用vbScript访问Excel电子表格而不在我的服务器上加载Excel。我在网上搜索,发现你的信息有用,但我还需要更多,所以我一直在搜索。我终于找到了我需要的解决方案,并希望在此处分享,以防万一其他人遇到与我一样的问题。
我试图在Windows 2008服务器上使用vbScript访问(读/写)Excel电子表格,我不想在我的服务器上安装Excel。我的解决方案在这里(它使用PowerShell,但很容易decypher到VBS):
Using vbScript to read from an Excel spreadsheet without Excel installed
Using vbScript to write to an Excel spreadsheet without Excel installed
我希望这有助于将来需要相同解决方案的人。
... L8R
UCG
答案 5 :(得分:0)
如果没有安装Excel,我无法看到您将如何更改Excel文档。
但是,如果您使用的是Excel 2007电子表格(xslx),那么您应该能够使用.NET Framework的OpenXML功能更新内容,而无需在物理上安装Excel。
有关Office OpenXML的更多信息,请查看here。
答案 6 :(得分:0)
您可能希望看到this question。它基于C#,但应该让您深入了解访问spreatsheets的技术。
答案 7 :(得分:0)
很抱歉迟到了。没有人提到VSTO的事实可能意味着我误解了这个问题。无论如何,我听到人们使用它的评论不一。
答案 8 :(得分:-1)
我相信你的问题的简单答案是否定的,因为你需要只在安装Excel时安装的Excel COM对象。这曾经是编写Office应用程序的真正缺点之一 - 需要整个应用程序(Excel,Word或其他)才能让最终用户使用它。
答案 9 :(得分:-1)
使用EPPlus。 epplus.codeplex.com
如果没有安装excel,您可以使用VSTO完成大部分工作。