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

解决方案 »

  1.   

    Datagrid 是由表导入的, 把更新后的表直接保存到excel就好啦.Private Sub Command1_Click()
       Call MDB2Excel("c:\bwscale.mdb", "bwcust", "c:\kkk.xls") '改为你自己的库名与表名
       MsgBox "保存OK"
    End SubPublic 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
      

  2.   

    我使用的数据库是SQL SERVER 2000,上面的代码能应用吗?我想问MDB2EXCEL是插件还是自定义?
      

  3.   

    可以在 For i 之前添加这么一段
    if not (Adodc1.Recordset.EOF and Adodc1.Recordset.BOF) then
        Adodc1.Recordset.MoveLast
        Adodc1.Recordset.MoveFirst
    end if
      

  4.   

    if not (Adodc1.Recordset.EOF and Adodc1.Recordset.BOF) then
        Adodc1.Recordset.MoveLast
        Adodc1.Recordset.MoveFirst
    end if
    加了也同样出现上面的问题
      

  5.   

    将 Next K 后面的代码全部删除,换成
    '适用与 EXCEL 2000 及以上
    xlSheet.Cells(2, 1).CopyFromRecordset Adodc1.Recordset 
      

  6.   

    感谢LS的回答!上述的代码是将本次操作的ADODC内容直接复制到EXCEL中!问题果然拮据!但由于程序本身有排序功能
    而代码不能将排序后的结果显示出来!我是使用按DATAGRID的表头进行排序!
      

  7.   

    方案1:对recordset按照DATAGRID的表头进行排序,在输出。
    方案2:输出后用Excel自带的排序功能,对数据区按照DATAGRID的表头进行排序。
      

  8.   

    可能我之前说得比较含糊。哦的排序是当我按一下DATAGRID的字段表头就会按该列内容的升序排列,再按一下就会按
    该列内容的降序列排列!
      

  9.   

    将最后一次排序信息(列、升降序)记下来,作为 RecordSet 或 Excel 的排序依据。