Как изменить электронную таблицу Excel, без Excel, используя VBScript? - PullRequest
4 голосов
/ 31 октября 2008

Мне нужно добавить строку в электронную таблицу с помощью VBScript на ПК, на котором не установлен Microsoft Office.

Я пытался [Set objExcel = CreateObject("Excel.Application")]

Поскольку Excel не существует на ПК, я не могу создать этот объект.

Есть ли способ изменить электронную таблицу без Excel?

Ответы [ 10 ]

8 голосов
/ 31 октября 2008

Чтобы использовать приведенный ниже код, создайте книгу Excel с именем «Test.xls» в той же папке, что и файл vbscript.

В 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
2 голосов
/ 31 октября 2008

Вы можете попробовать использовать драйвер Microsoft Jet:

См. здесь для примера VBScript. См. здесь для получения дополнительных ссылок и способов вставки строк.

1 голос
/ 23 апреля 2011

Я знаю ... спустя годы, но сегодня мне нужно было выяснить, как получить доступ к электронной таблице Excel с использованием vbScript без загрузки Excel на моем сервере. Я искал по сети и нашел вашу информацию полезной, но мне все еще нужно было больше, поэтому я продолжал искать. Я наконец нашел решение, в котором я нуждался, и хотел поделиться им здесь на тот случай, если у кого-то возникнут те же проблемы, что и у меня.

Я пытался получить доступ (чтение / запись) к электронной таблице Excel с помощью vbScript на сервере Windows 2008, и я не хотел устанавливать Excel на свой сервер. Мое решение было здесь (оно использует PowerShell, но его легко расшифровать до VBS):

Использование vbScript для чтения из электронной таблицы Excel без установленного Excel

Использование vbScript для записи в электронную таблицу Excel без установленного Excel

Я надеюсь, что это поможет кому-то, кому нужно такое же решение в будущем.

l8r ...

UCG

1 голос
/ 31 октября 2008

Это финальная версия скрипта, который я использовал, спасибо всем за помощь.

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
1 голос
/ 31 октября 2008

Не без особых затруднений. Microsoft выпустила свои спецификации формата файлов, Excel здесь , но их не следует воспринимать легкомысленно, и я думаю, что вам будет трудно использовать VBScript.

0 голосов
/ 13 декабря 2012

Используйте EPPlus. epplus.codeplex.com

Вы можете делать большинство вещей, которые вы можете делать с VSTO, без установленного Excel.

0 голосов
/ 31 октября 2008

Извините, что опоздал на вечеринку. Тот факт, что никто не упомянул VSTO , вероятно, означает, что я неправильно понимаю вопрос. И во всяком случае, я слышал смешанные отзывы от людей, использующих его.

0 голосов
/ 31 октября 2008

Я считаю, что простой ответ на ваш вопрос - нет, потому что вам нужен COM-объект Excel, который устанавливается только тогда, когда установлен Excel. Раньше это был один из реальных недостатков написания приложения Office - необходимость использования всего приложения (Excel, Word или чего-либо еще) для того, чтобы конечный пользователь мог его использовать.

0 голосов
/ 31 октября 2008

Возможно, вы захотите увидеть этот вопрос . Он основан на C #, но он должен дать вам представление о методах доступа к таблицам.

0 голосов
/ 31 октября 2008

Без установленного Excel я не вижу, как вы сможете изменить документ Excel.

Однако, если вы используете электронные таблицы Excel 2007 (xslx), вы должны иметь возможность использовать функциональность OpenXML .NET Framework для обновления содержимого без физической установки Excel.

Посмотрите здесь для получения дополнительной информации о Office OpenXML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...