1。我不明白,几个表格控件各有什么不同,比如为什么有datagrid,大家还在用mshflexgird和msflexgrid,后面两个处理明显不如datagrid来得快,其中道理我想请教大家。
2。关于导出excel,为什么一导出时excel就启动了呢?能否让电子表格软件不启动,就能导出呢?
因为别的机器不一定都装excel,我只想导出excel格式的文件。而不一定当时就用excel来打开处理。
网上有很多代码,我也找了不少,我想了解其中的道理。比如vfoxpro中,导出excel很方便:用一条语句就行了。(copy to filename type xl5),然后就会生成一个*.xls文件,vb中肯定可以实现。(只有字符和数值型,应该好处理的。)
3.

解决方案 »

  1.   

    1:只在树立数据库联接的时候datagrid才比较方便,处理其他东西的时候mshflexgird和msflexgrid应该更快.
    2:不知道你是怎么导出EXCEL的,如果是使用引用等方法,本身就是在借用EXCEL中的功能,当然就打开了.
    3.
      

  2.   

    下面代码看一下,错在哪里?
    只加excel9.0还不行,必须要装excel,好象按道理说是不用装的吧!
    请各位看一下,在下多谢了。Rem 导出电子表格excel的自定义过程
    Public Sub ghexcel(stropen As String, cexcelname As String)
        On Error GoTo gherr
        If Len(stropen) = 0 Or Len(cexcelname) = 0 Then
            MsgBox ("没有可导出数据信息或没有指定文件名,导出操作已取消")
            Exit Sub
        End If
        Dim icol As Integer     '列数,用于保存字段个数
        Dim rsTable As New ADODB.Recordset
        Dim AppExcel As Excel.Application   '定义尚未创建
        Dim BookExcel As Excel.Workbook     '工作簿对象
        
        With rsTable      '记录集对象
            If .State = adStateOpen Then
                .Close      '如果记录集处于打开状态,则先关闭它
            End If
            .ActiveConnection = conn      '连接
            .CursorLocation = adUseClient       '本地游标
            .CursorType = adOpenStatic          '静态游标
            .LockType = adLockReadOnly          '只读
            .Source = stropen                   '通过参数传过来的字符串
            .Open
        End With
        
        With rsTable
            If .RecordCount < 1 Then
                MsgBox ("没有记录,导出操作已被取消!")
                Exit Sub
            End If
            '记录总数
            'Irowcount = .RecordCount
            '字段总数
            'icol = .Fields.Count    '求出字段数
        End With
        
    '    Set AppExcel = CreateObject("Excel.Application")       '这句起何作用?    If Dir$(cexcelname) = "" Then
            Set AppExcel = New Excel.Application        '创建excel对象
            AppExcel.Visible = False                    '什么用处?
            Set BookExcel = AppExcel.Workbooks.Add      '添加工作表
            '   AppExcel.Worksheets(1).Name = "工作表一" '在Text1中输入表名
            For icol = 0 To rsTable.Fields.Count - 1
                 AppExcel.Worksheets(1).Cells(1, icol + 1).Value = rsTable.Fields(icol).Name
            Next        AppExcel.Worksheets(1).Range("A2").CopyFromRecordset rsTable
            BookExcel.SaveAs (cexcelname)
        Else
            MsgBox ("该文件名已经存在,不能导出,否则将覆盖,请给出新的名称")
            Exit Sub
    '        Set BookExcel = AppExcel.Workbooks.Open(ExcelFileName)
    '        AppExcel.Worksheets(1).Name = "zgh2 table" '在Text1中输入表名
    '        AppExcel.Worksheets(1).Range("A70").CopyFromRecordset rsTable
    '        BookExcel.SaveAs (ExcelFileName)
        End If    AppExcel.Quit   '这一句起何作用?
        Set BookExcel = Nothing
        Set AppExcel = Nothing
        rsTable.Close
        Set rsTable = Nothing    MsgBox "电子表格导出操作顺利完成!"    Exit Sub
    gherr:
        MsgBox Err.Number & "," & Err.DescriptionEnd Sub
      

  3.   

    看到用datagrid和msflexgrid的就不爽.用vsflexgrid8吧.