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

vb中数据导出问题

现做一程序,已经实现,但在导出时遇到了问题,我用的是vsflexgrid控件,因为字段数超出256个,并且数据量很大,现自己写的导出代码很慢,用vsflexgrid的 savegrid来导出,则不能全部导出字段,只能导出256个,后面的字段无法导出,该怎么办呀,
我现在想实现的目的是:速度够快,并且能够到出到Execel中(当然分两个sheet),请各位高手指教,大分支持呀!!! --------------------编程问答-------------------- 我以前做过它是导出到一个表中,但我想会一个两个当然没问题,下面是我在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
好了祝你成功
--------------------编程问答-------------------- http://support.microsoft.com/default.aspx?scid=kb;zh-cn;246335
CopyFromRecordset 的速度飞快。
--------------------编程问答-------------------- 1楼的,我做了一个和你类似的.但是速度太慢了。
查询每个月的数据量的有几千条记录,字段宽度超过了255个.我已经实现了,就是速度慢. --------------------编程问答-------------------- 1楼的,我做了一个和你类似的.但是速度太慢了。
查询每个月的数据量的有几千条记录,字段宽度超过了255个.我已经实现了,就是速度慢. --------------------编程问答-------------------- 慢……的……要……昏……过……去……了…… --------------------编程问答-------------------- 你好,你的思路不是很对,我把数据导入到Excel里.不是把控件内容导入,而是把SQL的条件导入到Excel里. --------------------编程问答-------------------- 我也做过是从vsflexgrid里面一条一条读出来,一条一条插入Excel。慢是慢了点如果对速度要求不高做个进度条就可以忍受了哈。最重要的是没有字段数的限制。 --------------------编程问答-------------------- 导出当然是通过 recordset 对象而不是控件。
建议将填充 vsflexgrid 前的 recordset 保存起来,导出时用我 2 楼给出的方法,飞快! --------------------编程问答-------------------- 试看这个, 添加 Command1

Option 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 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


--------------------编程问答-------------------- 还是没有解决.怎么办呢? 大家还有什么好注意呢: --------------------编程问答-------------------- 想用vsflexgrid 的savegrid来做这个,好象是不可能的。 --------------------编程问答-------------------- 好像没那么简单,呵呵. --------------------编程问答-------------------- 接分先! --------------------编程问答-------------------- 以后需再关注,现在先帮你顶一下
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,