首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

请问一下关于VB导出到excel的有关问题

2012-02-04 
请教一下关于VB导出到excel的问题我现在做的程序是这样的:通过SQL语句查询得到的结果放在表格控件mshflexg

请教一下关于VB导出到excel的问题
我现在做的程序是这样的:
通过SQL语句查询得到的结果放在表格控件mshflexgrid中,点击导出的时候把表格中显示的所有内容导出到excel
但是之前代码的效果是往excel表格中一格一格的添加内容 这样在数据比较多的时候就会很慢

有没有什么办法类似于整表复制的可以一下子就把全部数据填入excel中呢



VB code
Private Sub cmdexcel_Click()Dim save As StringDim xlsRowCount As Integer, xlsColCount As Integer '生成的表格的行数和列数Dim xlsApp As excel.ApplicationDim xlsBook As excel.WorkbookDim xlsSheet As excel.WorksheetDim i, j As LongOn Error GoTo errexcelSet xlsApp = CreateObject("Excel.Application")Set xlsBook = xlsApp.Workbooks.AddSet xlsSheet = xlsBook.Worksheets(1)'On Error Resume NextErr.Number = 0xlsRowCount = rlist.RowsxlsColCount = rlist.Colscodsave.CancelError = Truecodsave.InitDir = App.Pathcodsave.Filter = "Excel 97-03(*.xls)|*.xls|Excel 2007(*.xlsx)|*.xlsx"codsave.ShowSaveMe.MousePointer = vbHourglassWith xlsSheet'设置电子表格各列的宽度.Columns(1).ColumnWidth = 16 '每一个汉字大概占2的宽度(在默认的12号字的情况下).Columns(2).ColumnWidth = 20.Columns(3).ColumnWidth = 30.Columns(4).ColumnWidth = 30.Columns(5).ColumnWidth = 30'设置电子表格各行的高度For i = 1 To xlsRowCount.Rows(i).RowHeight = 18Next'把rlist的内容写入到电子表格中.Cells(1, 1).Value = "号  码".Cells(1, 2).Value = "姓  名".Cells(1, 3).Value = "单  位".Cells(1, 4).Value = "住  址".Cells(1, 5).Value = "备  注"For i = 0 To xlsRowCount - 1For j = 0 To 4.Cells(i + 2, j + 1).Value = "'" & rlist.TextMatrix(i, j + 1)            '第二行NextNextEnd WithxlsApp.Visible = False '是否显示电子表格Me.MousePointer = vbDefault'xlsBook.SaveAs App.Path & "\Test.xlsx" '存到根目录文件名test.xlsxsave = codsave.FileNamexlsBook.SaveAs saveMsgBox "导出成功", vbInformationxlsBook.Close savechanges:=FalsexlsApp.QuitSet xlsSheet = NothingSet xlsBook = NothingSet xlsApp = Nothing '交还控制给ExcelExit Suberrexcel:Me.MousePointer = vbDefaultxlsApp.QuitSet xlsSheet = NothingSet xlsBook = NothingSet xlsApp = Nothing '交还控制给ExcelExit SubEnd Sub


[解决办法]

可以把 Excel 当作 Jet Engine 的外部数据库,用 SQL 语句从 Access 或 SQL 数据库直接导入记录集。
[解决办法]
针对你这种情况,比较快的是将Recordset 直接导出为Excel,实际是CopyFromRecordset这个方法的应用

VB code
 Dim Myexcel As New Excel.Application    Dim Mybook As New Excel.Workbook    Dim Mysheet As New Excel.Worksheet    dim i as long    Set Mybook = Myexcel.Workbooks.Add '添加一个新的BOOK    Set Mysheet = Mybook.Worksheets.Add '添加一个新的SHEET    Myexcel.Visible = True    Rs.Open SQL, Cn    With Mysheet        .Range("A2").CopyFromRecordset Rs    '这里就是具体的应用        .PageSetup.PrintGridlines = True        .PrintPreview    End With    Rs.close     Set Rs = Nothing
[解决办法]
探讨
我现在做的程序是这样的:
通过SQL语句查询得到的结果放在表格控件mshflexgrid中,点击导出的时候把表格中显示的所有内容导出到excel
但是之前代码的效果是往excel表格中一格一格的添加内容 这样在数据比较多的时候就会很慢
有没有什么办法类似于整表复制的可以一下子就把全部数据填入excel中呢

热点排行