Excel的速度问题早有听说,一般解决方法是用直接传入RecordSet的方法改善。这种方法在报表外观简单的情况下是很实用的,但是我现在的实际情况对外观的要求比较高,经常需要设置表头,页眉,页脚,页边距,以及网格合并,字体颜色大小,等操作。当这些操作占据一定的量的时候,就变成了耗时的大户。填入数据倒是一点点时间,不足50分之一。这种情况该如何改善?谢谢。分不在多,有分则诚。谢谢.

解决方案 »

  1.   

    先导出到excel ,快速的方法:
    http://www.microsoft.com/china/community/Column/32.mspx如果要设置复杂的格式,最快的方法是调用宏。
      

  2.   

    先建立xlt模板文件,將那些靜態的數據、格式(表头,页眉,页脚,页边距,字体颜色大小)先設置好,至於以及网格合并等比較動態的東西就用宏來搞定。
      

  3.   

    '請你自己加個CommonDialog控件
    Private Sub Command3_Click()
        Dim objFileSystem As Object
        Dim objExcelText As Object
        Dim strTableString As String, i As Integer, strFileName As String
        Dim pubConn As New ADODB.Connection
        Dim rsTable As New ADODB.Recordset
        Dim strConn As String
        Dim strSQL As String    strConn = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=develop; password=12345;Data Source=ServerNmae"
        pubConn.Open strConn
        rsTable.CursorLocation = adUseClient
        strSQL = "select top 10 * from gate_register"
        rsTable.Open strSQL, pubConn, adOpenDynamic, adLockOptimistic
        
        For i = 0 To rsTable.Fields.Count - 1
            strTableString = strTableString & rsTable.Fields(i).Name & Chr(9)  '獲取字段名
        Next
        strTableString = strTableString & rsTable.GetString     '字段名+數據庫的記錄
        
        cmDialog.CancelError = False
        cmDialog.FileName = "FileName"  '默認生成的文件名
        cmDialog.DialogTitle = "Save Export File"
        cmDialog.Filter = "Excel (*.xls)|*.xls|文本文件(*.DBF)|*.DBF|檔案文件(*.doc)|*.doc|所有文件(*.*)|*.*"
        cmDialog.DefaultExt = "*.xls"
        cmDialog.ShowSave
        strFileName = cmDialog.FileName
        
        Set objFileSystem = CreateObject("Scripting.FileSystemObject")
        Set objExcelText = objFileSystem.createtextfile(strFileName, True)
        objExcelText.writeline (strTableString)
        
        objExcelText.Close
        Set objFileSystem = Nothing
    End Sub
      

  4.   

    多谢大家的支持,我再试一下。
    李老大地回答明快准确,谢谢
    leolan(史留香)的答案也到位,但是我们这边的情况基本没什么静态的。 
     jam021(jam),感谢你的关注。
    hdhai9451的答案并不是我问的重点,感谢关注。
    daisy8675(莫依),你的肯定也是答案,感谢关注。