求助,怎样把数据库查询出来的数据写入EXCEL里?

请求高手帮忙。
从数据库查询出来的数据已经显示在了DataGrid1上。
假如有“学号”“姓名”两个列。共有10条数据。
现在我想通过xlSheet.Cells的方法给对应的单元格赋值,假如这里是第1列赋值学号,第2列赋值姓名。10条记录分别赋给1到10行,需要怎样实现,谢谢了。
VB.我是想将查询到的数据插入到一个EXCEL模版里面去的

来信已收到。
这是我修改后的代码,请复制运行即可:

Option Explicit
Dim myCon As New ADODB.Connection
Dim myRs As New ADODB.Recordset

Private Sub Command1_Click()
Dim XueHao, XingMing As String
XueHao = Text1.Text
XingMing = Text2.Text
If Trim(XueHao) = "" Or Trim(XingMing) = "" Then
MsgBox "学生档案资料不能为空,请填写!"
Exit Sub
End If

myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;"
myRs.Open "select * from 学生档案 where 学号='" & Trim(XueHao) & "' and 姓名='" & Trim(XingMing) & "'", myCon
If myRs.EOF = False Then
MsgBox "该学生档案已经存在,请重新输入!"
myRs.Close
myCon.Close
Text1.SetFocus
Exit Sub
End If
myRs.Close

myRs.Open "学生档案", myCon, 3, 2
myRs.AddNew
myRs.Fields("学号") = Text1.Text
myRs.Fields("姓名") = Text2.Text

myRs.Update
myRs.Close
myCon.Close
MsgBox "添加成功!"
Adodc1.RecordSource = "select * from 学生档案 order by 姓名 "
'DataGrid1.DataSource = Adodc1.Recordset
Me.Adodc1.Refresh
Me.DataGrid1.Refresh

Text1.Text = ""
Text2.Text = ""
End Sub

Private Sub Command2_Click()
Dim i As Integer, j As Integer
Dim xlApp
Dim xlBook
Dim xlSheet
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open(App.Path & "\123.xls") '打开模板文件,请修改
xlApp.Visible = False
Set xlSheet = xlBook.Worksheets("工作表1") '设置活动工作表,请修改
With Adodc1
DataGrid1.Visible = False
DataGrid1.Tag = "busy"
.Recordset.MoveFirst
For j = 0 To .Recordset.RecordCount - 1
xlSheet.Cells(j + 4, 4) = .Recordset.Fields(0)
xlSheet.Cells(j + 4, 2) = .Recordset.Fields(1)
DoEvents
.Recordset.MoveNext
Next
xlBook.SaveAs FileName:=App.Path & "\1.xls" '保存模板文件,请修改
xlBook.Close (True)
xlApp.Quit
Set xlApp = Nothing
End With
DataGrid1.Tag = ""
DataGrid1.Visible = True
MsgBox "数据文件已成功写入EXCEL模板文件中!"

End Sub

Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
If DataGrid1.Tag = "busy" Then Exit Sub
Me.Adodc1.RecordSource = "select * from 学生档案 where 学号 = '" & Trim(DataGrid1.Row) & "'"
Text1.Text = Me.Adodc1.Recordset.Fields("学号")
Text2.Text = Me.Adodc1.Recordset.Fields("姓名")
End Sub

Private Sub Form_Load()
'Text3.Text = DataGrid1.Bookmark '获取当前指定的行号
'Me.Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\db1.mdb;Persist Security Info=False"
'Me.Adodc1.RecordSource = "select * from 学生档案"
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-05
你这样做只能生成.csv文件,excel软件一样能打开、编辑。
真正的.xls文件无法自动生成,因为.xls文件的建立需要office的支持,并且有版本区别。你可以先手工建立个.xls文件,然后用fso复制文件进行编辑。
不同点:
csv文件可以直接用fso进行编辑,xls文件需要ado进行编辑。使用的控件不同。
csv文件字段长度限制较松,xls文件低版本字段长度限制较紧。
csv文件受逗号影响,xls文件不受逗号影响。
csv文件需要遍历整个文件查询字段,xls使用sql指令查询字段。
csv文件需要暂存数据重新写入才能编辑文件,xls使用sql指令就能编辑字段。
csv文件服务器无需安装office,xls文件服务器必须装有office。
我在单位也用csv+asp做了个页面,用来自动识别ip及管理服务器文件共享等,并提供对应主机的配置文件下载。个人感觉csv做表格导入导出及当数据仓库很好,在服务器支持的情况下access当缓冲数据库更快。但在服务器存储中,建议更改后缀,防止被恶意下载。
第2个回答  2009-05-08
第一步:打开EXCEL,数据-导入外部数据-新建数据库查询。按提示操作,将数据库的查询或表联结到EXCEL查询中,并返回到其中的工作表中。
第二步,在工作薄打开的事件中写入代码,让查询自动更新。
如下面所示
Private Sub Workbook_Open()
Sheet1.Range("A1").QueryTable.Refresh
End Sub
第3个回答  2009-05-08
在EXCEL里面,选择菜单数据、获取外部数据、新建数据库查询,选择数据库,建立查询,最后数据就会按照你的要求返回到EXCEL里面