现做一程序,已经实现,但在导出时遇到了问题,我用的是vsflexgrid控件,因为字段数超出256个,并且数据量很大,现自己写的导出代码很慢,用vsflexgrid的 savegrid来导出,则不能全部导出字段,只能导出256个,后面的字段无法导出,该怎么办呀,
我现在想实现的目的是:速度够快,并且能够到出到Execel中(当然分两个sheet),请各位高手指教,大分支持呀!!!
我现在想实现的目的是:速度够快,并且能够到出到Execel中(当然分两个sheet),请各位高手指教,大分支持呀!!!
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
好了祝你成功
CopyFromRecordset 的速度飞快。
建议将填充 vsflexgrid 前的 recordset 保存起来,导出时用我 2 楼给出的方法,飞快!
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