从Excel中筛选符合条件的记录保存至新的Excel中(续)

昨晚一直想用Insert into语句往Excel工作表中添加记录都没成功,不甘心,今天继续查阅资料,最终找到了解决的方法。将数据从一个表复制和附加到Excel中SQL语句有点不太一样,下边分别说明:

如何复制

您可以使用 Select INTO 语句将 Jet 可以读取的任何数据源中的数据复制到任何数据目标,随时创建新的表(在 Excel 中为新工作表)。将工作表名称用作目标时,不要使用美元符号语法,例如 [Sheet1$]。目标工作簿可以存在,也可以不存在;但是,目标工作表必须尚未存在。

对于将整个 Customers 表从 Microsoft Access Northwind 数据库复制到 Excel 工作簿的新工作表中的复制命令,有三种编写方法。每种语法需要一个 SQL 语句并在目标工作表的第一行创建列标题。

• 以下示例使用 Select INTO 语法:
<%
Dim conn,strSQL
Set conn=server.createobject("adodb.connection")
Conn.connectionstring = "provider=microsoft.jet.oledb.4.0;data source=" + server.mappath("test.mdb")
Conn.open
strSQL = "Select * INTO [Excel 8.0;Database=" & server.mappath(".") & "\book1.xls].[xls1] FROM Customers"
Conn.execute(strSQL)
Set conn=nothing
%>


• 以下示例使用 Select INTO ...IN 语法:
<%
Dim conn,strSQL
Set conn=server.createobject("adodb.connection")
Conn.connectionstring = "provider=microsoft.jet.oledb.4.0;data source=" + server.mappath("test.mdb")
Conn.open
strSQL = "Select * INTO [xls2] IN '' [Excel 8.0;Database=" & server.mappath(".") & "\book1.xls] FROM Customers"
Conn.execute(strSQL)
Set conn=nothing
%>

其中,括号中的目标数据库信息的前面有一对空的单引号,用来包括类型参数(“Excel 8.0”部分),当您使用此语法时,类型参数括在括号中。

• 以下示例使用 IN 子句的替代语法:
<%
Dim conn,strSQL
Set conn=server.createobject("adodb.connection")
Conn.connectionstring = "provider=microsoft.jet.oledb.4.0;data source=" + server.mappath("test.mdb")
Conn.open
strSQL = "Select * INTO [xls3] IN '" & server.mappath(".") & "\book1.xls' 'Excel 8.0;' FROM Customers"
Conn.execute(strSQL)
Set conn=nothing
%>

其中,类型参数现在被单独列在目标文件路径之后。

如何附加

可以使用 Insert INTO ...IN 语句将任何 Jet 可以读取的数据源中的数据附加到任何数据目标中。目标工作簿和目标工作表都必须存在。由于您现在引用的是现有工作表,当您将工作表名称用作目标时,必须使用标准的美元符号语法,例如 [Sheet1$]。另外,列标题必须已经存在;也就是说,该语句只能用于附加到现有的表。

对于将整个 Customers 表从 Northwind 数据库复制到已经有适当列标题的现有 Excel 工作表中的附加命令,有两种编写方法。

• 以下示例使用 Select INTO ...IN 语法:
<%
Dim conn,strSQL
Set conn=server.createobject("adodb.connection")
Conn.connectionstring = "provider=microsoft.jet.oledb.4.0;data source=" + server.mappath("test.mdb")
Conn.open
strSQL = "Insert INTO [Sheet1$] IN '' [Excel 8.0;Database=" & server.mappath(".") & "\book1.xls] Select * FROM Customers"
Conn.execute(strSQL)
Set conn=nothing
%>

其中,括号中的目标数据库信息的前面同样有一对空引号用来包括类型参数,现在该参数是用括号括了起来。

• 以下示例使用 IN 子句的替代语法:
<%
Dim conn,strSQL
Set conn=server.createobject("adodb.connection")
Conn.connectionstring = "provider=microsoft.jet.oledb.4.0;data source=" + server.mappath("test.mdb")
Conn.open
strSQL = "Insert INTO [Sheet1$] IN '" & server.mappath(".") & "\book1.xls' 'Excel 8.0;' Select * FROM Customers"
Conn.execute(strSQL)
Set conn=nothing
%>


原文参见:http://support.microsoft.com/kb/295646/zh-cn

评论: 1 | 引用: 0 | 查看次数: 9635
发表评论
登录后再发表评论!