在我的程序中数据显示在datagrid中,现在我想它们导成一个excel文件,请大家帮忙该怎么做?
谢谢!!!!!!!!!

解决方案 »

  1.   

    我想实现在MSflexgrid查询结果导出到EXCEL。找到代码如下:
    Private Sub Command1_Click()
      Dim Xlapp As Object
        Dim i As Long
        Dim j  As Long
        Dim Header As String
        Dim xlsheet As Excel.Worksheet
        Set Xlapp = CreateObject("excel.application")
        Xlapp.Workbooks.Add
        Xlapp.Visible = True
        Set xlsheet = Xlapp.Worksheets.Add
        With xlsheet
            '      .Range("C1") = Header
            '      .Range("C1").Font.Size = 20
            '      .Range("A2") = "´Ó" & DTPicker1.Value & "µ½" & DTPicker2.Value & "Ϊֹ:"
            For i = 1 To msgList.Rows - 1
                For j = 0 To msgList.Cols - 1
                    .Cells(i + 1, j + 1) = msgList.TextMatrix(i, j)
                Next
            Next
        End With
        Set xlsheet = Nothing
        Set Xlapp = Nothing
    End Sub
      

  2.   

    请问msgList是什么啊?是MSflexgrid控件名吗?
    我的datagrid的属性怎么和你的不一样?rows是row,cols是col,没有textmatrix这个属性
    我试了一下,能调出excel程序,但是数据没插进去
      

  3.   

    上面的程序是通的,应该好用,可是我该怎么把msflexgrid换成datagrid呢?
    它们的属性值不一样啊,大家快点帮帮我吧
      

  4.   

    一样的,只要你懂vba就可以了
      

  5.   

    Dim Xlapp As Object
        Dim i As Long
        Dim j  As Long
        Dim Header As String
        Dim xlssheet As New Excel.Worksheet
        Dim xlsbook As New Excel.Workbook
        Set Xlapp = CreateObject("excel.application")
        'Set xlsbook = New Excel.Workbook
        Set xlsbook = Excel.Workbooks.Open(App.Path & "\aa.xls")
        Set xlssheet = xlsbook.Worksheets.Add
        'Xlapp.Workbooks.Add
        'Xlapp.Visible = True
        'Set xlsheet = Xlapp.Worksheets.Add
        With xlssheet
           .Range("A1").CopyFromRecordset DataGrid1.DataSource
            
        End With
        xlsbook.Save
        xlsbook.Close
        Set xlssheet = Nothing
        Set xlsbook = Nothing
        Set Xlapp = Nothing
    这样你试一试,看行吗?
      

  6.   

    来个简单的SQL语句,不需要挂EXCEL
    SELECT * INTO [Excel 8.0;Database=C:\Book1.xls].[Sheet1] FROM [MyTable]
      

  7.   

    阿榕,不行,说“类不支持自动化或不支持期望的接口”
    而且你的这种方法得有前提,那就是事先得手动新建一个excel文件,感觉不太通用
      

  8.   

    还是dm和弦的方法好,可以自动建立一个excel文件,之后自已可以选择保存还是打印,可我就是不知道该怎么把其中的控件变成datagrid,大家帮帮忙吧
      

  9.   

    没啥办法,你换一个方法吧
    专栏作品
    VB6 中将数据导出到 Excel 提速之法
    李洪根 
    --------------------------------------------------------------------------------Excel 是一个非常优秀的报表制作软件,用VBA可以控制其生成优秀的报表,本文通过添加查询语句的方法,即用Excel中的获取外部数据的功能将数据很快地从一个查询语句中捕获到EXCEL中,比起往每个CELL里写数据的方法提高许多倍。
    在程序中引用Microsoft Excel 9.0 Object Library,将下文加入到一个模块中,窗体中调用如下ExporToExcel("select * from table")。则实现快速将数据导出到EXCEL中。
     
    Public Function ExporToExcel(strOpen As String)
    '*********************************************************
    '* 名称:ExporToExcel
    '* 功能:导出数据到EXCEL
    '* 用法:ExporToExcel(sql查询字符串)
    '*********************************************************
    Dim Rs_Data As New ADODB.Recordset
    Dim Irowcount As Integer
    Dim Icolcount As Integer
        
        Dim xlApp As New Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Dim xlQuery As Excel.QueryTable
        
        With Rs_Data
            If .State = adStateOpen Then
                .Close
            End If
            .ActiveConnection = Cn
            .CursorLocation = adUseClient
            .CursorType = adOpenStatic
            .LockType = adLockReadOnly
            .Source = strOpen
            .Open
        End With
        With Rs_Data
            If .RecordCount < 1 Then
                MsgBox ("没有记录!")
                Exit Function
            End If
            '记录总数
            Irowcount = .RecordCount
            '字段总数
            Icolcount = .Fields.Count
        End With
        
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = Nothing
        Set xlSheet = Nothing
        Set xlBook = xlApp.Workbooks().Add
        Set xlSheet = xlBook.Worksheets("sheet1")
        xlApp.Visible = True
        
        '添加查询语句,导入EXCEL数据
        Set xlQuery = xlSheet.QueryTables.Add(Rs_Data, xlSheet.Range("a1"))
        
        With xlQuery
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = True
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
        End With
        
        xlQuery.FieldNames = True '显示字段名
        xlQuery.Refresh
        
        With xlSheet
            .Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Name = "黑体"
            '设标题为黑体字
            .Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Bold = True
            '标题字体加粗
            .Range(.Cells(1, 1), .Cells(Irowcount + 1, Icolcount)).Borders.LineStyle = xlContinuous
            '设表格边框样式
        End With
        
        With xlSheet.PageSetup
            .LeftHeader = "" & Chr(10) & "&""楷体_GB2312,常规""&10公司名称:"   ' & Gsmc
            .CenterHeader = "&""楷体_GB2312,常规""公司人员情况表&""宋体,常规""" & Chr(10) & "&""楷体_GB2312,常规""&10日 期:"
            .RightHeader = "" & Chr(10) & "&""楷体_GB2312,常规""&10单位:"
            .LeftFooter = "&""楷体_GB2312,常规""&10制表人:"
            .CenterFooter = "&""楷体_GB2312,常规""&10制表日期:"
            .RightFooter = "&""楷体_GB2312,常规""&10第&P页 共&N页"
        End With
        
        xlApp.Application.Visible = True
        Set xlApp = Nothing  '"交还控制给Excel
        Set xlBook = Nothing
        Set xlSheet = Nothing
    End Function注::在程序中引用'Microsoft Excel 9.0 Object Library'和ADO对象,机器必装Excel 2000
    本程序在Windows 98/2000,VB 6 下运行通过。