怎樣把DataGrid中顯示的數據導入到Excel中,注意是DataGrid中的顯示的數據,並不是DataGrid.DataSource.
舉例說明:
Dim Rst As New ADODB.Recordset
Dim objSheet As Excel.Worksheet
...
Set DataGrid.DataSource = Rst
...
因為有用到DataGrid的DataFormat屬性,所以Rst中的數據與DataGrid中所顯示的數據並不一致
現在我要把DataGrid中所顯示的數據導入Excel中該如何做?
循環數據集Rst的方法除外
最好用類似objSheet.Cells.CopyFromRecordset Rst的方法
舉例說明:
Dim Rst As New ADODB.Recordset
Dim objSheet As Excel.Worksheet
...
Set DataGrid.DataSource = Rst
...
因為有用到DataGrid的DataFormat屬性,所以Rst中的數據與DataGrid中所顯示的數據並不一致
現在我要把DataGrid中所顯示的數據導入Excel中該如何做?
循環數據集Rst的方法除外
最好用類似objSheet.Cells.CopyFromRecordset Rst的方法
解决方案 »
- ("select b from tab2 where tab2.b like '*'" % rs.Fields(0) % "'*'")解决法。。
- access和SQL数据库在SQL语句上有什么不同?
- 大侠救命!!!!!关于使用round()函数的问题!!!!!!
- VB 端口已打开
- 如何在vb中播放*.pss(演示文稿)?
- tabctl32.ocx有的下载么??
- 请帮忙选择一款语音卡
- 如何在VB中显示tif格式的文件?
- 如何获取Windows里所有的字体名称 (不是字体的文件名) up有分
- 老大们,怎样用DAO建立如同在ACCESS里建立的数据库中默认存在的ID属性?
- ***** 新的程序 给大家使用! ******
- 请教VB中如何使用EXCEL2003版本的控件?
给你个例子
On Error GoTo ErrHandler
Dim strsql As String
Dim strsql_db As String
'Dim jhje As Double
'Dim wczcje As Double
'Dim yfkje As Double
'Dim fkje As Double
If Text1.Text = "" Then
MsgBox "查询的年份不能为空!", 48, "信息"
Exit Sub
End If
If Text2.Text = "" Then
MsgBox "请查询数据!", 48, "信息"
Exit Sub
End If
Set xlapp1 = CreateObject("excel.application") 'create the excel object
xlapp1.Workbooks.Open (App.Path & "\按单位查询模板.xls") 'FileName changed
xlapp1.Workbooks("按单位查询模板.xls").Activate
xlapp1.Worksheets(1).Cells(1, 1) = Text1.Text & "年按单位统计的完成资产统计表"
'******************
'这里的text2.text 就是让datagrid显示数据的sql语句
'******************
strsql = Text2.Text
Set rs = ExecuteSQL(strsql, msgtext)
For i = 5 To rs.RecordCount + 4
xlapp1.ActiveSheet.Rows(i).Insert
xlapp1.Worksheets(1).Cells(i, 1) = i - 4
xlapp1.Worksheets(1).Cells(i, 2) = rs.Fields("单位名称")
xlapp1.Worksheets(1).Cells(i, 3) = rs.Fields("计划总额")
xlapp1.Worksheets(1).Cells(i, 4) = rs.Fields("完成资产金额")
xlapp1.Worksheets(1).Cells(i, 5) = rs.Fields("预付款金额")
xlapp1.Worksheets(1).Cells(i, 6) = rs.Fields("付款金额")
'jhje = jhje + rs.Fields("计划总额")
'wczcje = jhje + rs.Fields("完成资产金额")
'yfkje = jhje + rs.Fields("预付款金额")
'fkje = jhje + rs.Fields("付款金额")
rs.MoveNext
Next i
xlapp1.ActiveSheet.Rows(4).Delete
With CommonDialog1
.DialogTitle = "生成Excel"
.FileName = "*.xls"
.Filter = "(Excel)*.xls|*.xls"
.CancelError = True
.ShowSave
End With
'xlapp1.Save
xlapp1.ActiveWorkbook.SaveAs (CommonDialog1.FileName)
xlapp1.Quit
MsgBox "数据导Excel完成!", 48, "信息"
rs.Close
Set rs = Nothing
Exit Sub
ErrHandler:
'用户按了“取消”按钮
MsgBox "用户取消从Excel导出数据操作!", 48, "提示"
Exit Sub
不過您的方法我已會,再說您的方法與我提的要求不符,我要求的是不循環數據集
我在Set DataGrid.DataSource = Rst時有用到DataGrid的DataFormat屬性
比如在數據集中的數據是Long型,經過DataFormat格式化後顯示為IP的點狀形式
如果用您的方法我又得把Long型轉換為IP的點狀形式這樣很浪費時間