当前位置:编程学习 > VB >>

VB的DATAGRID如何导出EXCEL

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
On Error Resume Next
If Err.Number <> 0 Then Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.ActiveSheet
For k = 1 To DataGrid1.Columns.Count
xlSheet.Cells(1, k) = DataGrid1.Columns(k - 1).Caption
Next k
For i = 1 To Adodc1.Recordset.RecordCount + 1
For j = 0 To DataGrid1.Columns.Count
xlSheet.Cells(i + 1, j + 1) = Adodc1.Recordset(j) '
Next j
Adodc1.Recordset.MoveNext
Next i

各位,我用以上代码,在数据写入EXCEL的表格是会出现空数据现象,有时则完全写入!
出现的错误就像下面的例子一样,这种情况会在导出大量数据时出现,请问如何解决?
例:
ID    姓名     性别
123   xxx      b
333            v
321             
569   ggg      g




--------------------编程问答-------------------- Datagrid 是由表导入的, 把更新后的表直接保存到excel就好啦.

Private Sub Command1_Click()
   Call MDB2Excel("c:\bwscale.mdb", "bwcust", "c:\kkk.xls") '改为你自己的库名与表名
   MsgBox "保存OK"
End Sub

Public Sub MDB2Excel(Mdbnm As String, MdbTable As String, Excelnm As String)
   On Error Resume Next
   Set acApp = GetObject(Mdbnm, "Access.Application")
   acApp.DoCmd.OutputTo acOutputTable, MdbTable, "Microsoft Excel (*.xls)", Excelnm
   acApp.CloseCurrentDatabase
   Set acApp = Nothing
End Sub

--------------------编程问答-------------------- 我使用的数据库是SQL SERVER 2000,上面的代码能应用吗?我想问MDB2EXCEL是插件还是自定义? --------------------编程问答-------------------- 可以在 For i 之前添加这么一段
if not (Adodc1.Recordset.EOF and Adodc1.Recordset.BOF) then
    Adodc1.Recordset.MoveLast
    Adodc1.Recordset.MoveFirst
end if
--------------------编程问答-------------------- if not (Adodc1.Recordset.EOF and Adodc1.Recordset.BOF) then
    Adodc1.Recordset.MoveLast
    Adodc1.Recordset.MoveFirst
end if
加了也同样出现上面的问题 --------------------编程问答-------------------- 将 Next K 后面的代码全部删除,换成
'适用与 EXCEL 2000 及以上
xlSheet.Cells(2, 1).CopyFromRecordset Adodc1.Recordset 
--------------------编程问答-------------------- 感谢LS的回答!上述的代码是将本次操作的ADODC内容直接复制到EXCEL中!问题果然拮据!但由于程序本身有排序功能
而代码不能将排序后的结果显示出来!我是使用按DATAGRID的表头进行排序! --------------------编程问答-------------------- 方案1:对recordset按照DATAGRID的表头进行排序,在输出。
方案2:输出后用Excel自带的排序功能,对数据区按照DATAGRID的表头进行排序。 --------------------编程问答-------------------- 可能我之前说得比较含糊。哦的排序是当我按一下DATAGRID的字段表头就会按该列内容的升序排列,再按一下就会按
该列内容的降序列排列! --------------------编程问答-------------------- 将最后一次排序信息(列、升降序)记下来,作为 RecordSet 或 Excel 的排序依据。 --------------------编程问答-------------------- 哦!先试试! --------------------编程问答-------------------- 以后需再关注,现在先帮你顶一下 --------------------编程问答-------------------- 不知,帮顶 --------------------编程问答-------------------- 不错 5L 的兄弟帮大忙了~~
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,