现做一程序,已经实现,但在导出时遇到了问题,我用的是vsflexgrid控件,因为字段数超出256个,并且数据量很大,现自己写的导出代码很慢,用vsflexgrid的 savegrid来导出,则不能全部导出字段,只能导出256个,后面的字段无法导出,该怎么办呀,
我现在想实现的目的是:速度够快,并且能够到出到Execel中(当然分两个sheet),请各位高手指教,大分支持呀!!!

解决方案 »

  1.   

    我以前做过它是导出到一个表中,但我想会一个两个当然没问题,下面是我在vs2005中用vb.net实现的代码
     Dim myexcel As New Excel.Application
            myexcel.Visible = True
            myexcel.Workbooks.Add()
            myexcel.Worksheets("sheet1").activate()
            myexcel.Caption = "这里是在excel中生成的工作薄名"
            Dim m, n As Integer
            For n = 0 To ds.Tables(0).Columns.Count - 1
                myexcel.Cells(1, n + 1).value = ds.Tables(0).Columns(n).ColumnName
            Next
            For n = 0 To ds.Tables(0).Columns.Count - 1
                For m = 0 To ds.Tables(0).Rows.Count - 1
                    myexcel.Cells(m + 2, n + 1).value = ds.Tables(0).Rows(m)(n)
                Next
                myexcel.ActiveSheet.columns(n + 1).autofit()        Next你一定要注意前提是要添加引用一个COM组件Microsoft Excel 11.0 Object Library
    好了祝你成功
      

  2.   

    http://support.microsoft.com/default.aspx?scid=kb;zh-cn;246335
    CopyFromRecordset 的速度飞快。
      

  3.   

    你好,你的思路不是很对,我把数据导入到Excel里.不是把控件内容导入,而是把SQL的条件导入到Excel里.
      

  4.   

    我也做过是从vsflexgrid里面一条一条读出来,一条一条插入Excel。慢是慢了点如果对速度要求不高做个进度条就可以忍受了哈。最重要的是没有字段数的限制。
      

  5.   

    导出当然是通过 recordset 对象而不是控件。
    建议将填充 vsflexgrid 前的 recordset 保存起来,导出时用我 2 楼给出的方法,飞快!
      

  6.   

    试看这个, 添加 Command1Option Explicit
    Dim vbexcel11 As Object
    Dim vbbook As Object
    Dim Xlsnm$, acOutputTable, Starttm&, acApp
    Private Sub Command1_Click()
       On Error GoTo errhandler
       Xlsnm = "c:\aaa.xls" '要转换的Xls路径与名称
       If Dir(Xlsnm) <> "" Then Kill Xlsnm
       Call MDB2Excel("c:\bwscale.mdb", "bwcust", Xlsnm) '要转换的库名与表名
       Starttm = Timer
       Do
          If Dir(Xlsnm) <> "" Then Exit Do
       Loop Until Timer > Starttm + 5
       If Dir(Xlsnm) <> "" Then
          MsgBox "转换完成"
          Set vbexcel11 = CreateObject("Excel.Application") '创建excel对象
          vbexcel11.Visible = True '对象可见
          Set vbbook = vbexcel11.Workbooks.Open(Xlsnm) '打开文件
       End If
    errhandler:
       If Err > 0 Then MsgBox "没安装 Excel,文档被占用或其它原因"
    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
      

  7.   

    想用vsflexgrid 的savegrid来做这个,好象是不可能的。