2011-10-11 122 views
1

我想从HTML窗体中获取信息并将其输入到带有ASP/VBScript(不是VB.NET)的Excel文件(xlsx)中。我在Java和PHP方面有一些经验,但对于VB世界来说是新手。 Sofar我已经找到了从GET/POST方法获取数据的方法。现在我正在尝试创建一个到excel文件的ADO连接。 这里是到目前为止我的代码:使用ASP/VBScript写入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文件,那将是非常棒的。

在此先感谢。

编辑: 确定这里是我尝试代码:

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内部错误。我不知道我是否犯了一个明显的错误,但是因为我不知道在哪里可以找到错误日志,所以我不知道从哪里开始寻找。

+0

还有一个问题。我不完全确定连接字符串的事情......或者一般来说,如果ADO是正确的方式,因为我已经阅读了各种其他流行语(用于Access的DSN作为Excel的替代品),并且我不确定究竟要怎么走是。 – MrPink

回答

1

1 -如果您必须使用Excel 作为数据库,那是对的。但是,如果你需要一个数据库,应该使用数据库,而不是Excel工作表。
2 - VBScript不支持早期绑定。您应该定义没有数据类型的变量,应该使用CreateObject创建对象。而且你需要对连接字符串(引号)进行一些更改。
例如

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 
+0

可能应该指出,连接到Excel(尤其是具有写访问权限,如果有的话)可能会损害多个用户的文件锁定。另外,你应该使用'Server.MapPath()'获取Excel文件的实际路径并将其添加到连接字符串 – 2011-10-12 07:48:25

+0

我没有想到并发问题。使用Access DB(.mdb)然后在稍后将数据导出为ex​​cel会更好。 感谢您的答案。 我仍然收到上面的代码错误,一旦我试图打开连接: 。打开 问题是我得到的是“内部500”错误。我只有一个文件夹供应商,可以放置ASP文件,然后在线查看它们。任何想法如何我可以调试?有没有我不知道的日志?没有错误信息,很难知道陌生语言出了什么问题。 欢迎任何想法。 谢谢! – MrPink

+0

如果你做了修改,你应该用你的代码更新这个问题 – 2011-10-12 11:32:27