Использование ASP / VBScript для записи в файл Excel - PullRequest
1 голос
/ 12 октября 2011

Я пытаюсь взять информацию из формы HTML и ввести ее в файл Excel (xlsx) с помощью ASP / VBScript (не VB.NET). У меня есть некоторый опыт работы с Java и PHP, но я новичок в мире VB. Софар Я нашел способы получить данные из методов GET / POST. Сейчас я пытаюсь создать соединение ADO с файлом Excel. вот мой код:

Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=EXCEL_FILE.xlsx;" & _"Extended Properties=Excel 12.0 Xml;HDR=YES"
    .Open
End With

Я получил строку подключения отсюда: connectionstrings.com и попытался придерживаться этого руководства: http://support.microsoft.com/kb/257819/en-us Но не повезло до сих пор. Итак, вот мои вопросы:

1) Это правильная идея в целом? Так, например, получить данные из POST, а затем открыть соединение с ADO в файле excel и добавить информацию с запросами к объекту соединения?

2) Есть ли явные недостатки в коде?

3) Было бы замечательно, если бы кто-то смог наметить решение, записав данные из формы HTML в файл Excel.

Заранее спасибо.

Edit: Хорошо, вот код, который я пытаюсь:

Dim cn
Set cn = Server.CreateObject("ADODB.Connection")
With cn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=EXCEL_FILE.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"""
'From : http://www.connectionstrings.com/excel-2007
    .Open
End With

Как только я звоню «Открыть» на cn, это дает мне 500 внутренних ошибок. Я не уверен, что делаю очевидную ошибку, но так как я не знаю, где найти журналы ошибок, у меня нет понятия, с чего начать.

1 Ответ

1 голос
/ 12 октября 2011

1 - Если вам нужно использовать Excel в качестве базы данных , да, это правильно. Но если вам нужна база данных, следует использовать базу данных, а не таблицу Excel.
2 - VBScript не поддерживает раннее связывание. Вы должны определить переменные без типа данных, должны создавать объекты, используя CreateObject . И вам нужно внести некоторые изменения в строку подключения (кавычки).
1010 * например, *

Dim cn
Set cn = Server.CreateObject("ADODB.Connection")
With cn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=EXCEL_FILE.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"""
    'From : http://www.connectionstrings.com/excel-2007
.Open
End With
'
' Add new records etc.
'
cn.Close
Set cn = Nothing

3 - Пример добавления новой записи (поставьте вместо выше 'Add new records etc.) получает значения из HTML-формы (метод post).

Dim rs
Set rs = Server.CreateObject("Adodb.Recordset")
With rs
    .Open "[Sheet1$]", cn, 1, 3
    .AddNew 
    .Fields(0).Value = Request.Form("Param1") 'Column A1 (or with name rs.Fields("col1").Value = exp )
    .Fields(1).Value = Request.Form("Param2") 'Column B1
    .Update
    .Close
End With
Set rs = Nothing
...