怎樣把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的方法

解决方案 »

  1.   

    你的datagrid里的数据不也是搜索出来的吗
    给你个例子
    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
      

  2.   

    首先謝謝cuilei197979(风)的指點!
    不過您的方法我已會,再說您的方法與我提的要求不符,我要求的是不循環數據集
    我在Set DataGrid.DataSource = Rst時有用到DataGrid的DataFormat屬性
    比如在數據集中的數據是Long型,經過DataFormat格式化後顯示為IP的點狀形式
    如果用您的方法我又得把Long型轉換為IP的點狀形式這樣很浪費時間
      

  3.   

    好像实现不了,首先datagrid只是显示数据的,不能当成数据集,也当不成数据表,所以实现不了