老有关问题,但解决不了,关于msflexgrid导出EXCEL并打印的有关问题

老问题,但解决不了,关于msflexgrid导出EXCEL并打印的问题
用一般的办法是实现了导了EXCEL并可以打印,但是速度太慢,后来把msflexgrid的数据存到一个数组里,
但在如何选定EXCEL表一个范围,然后再把数组赋值给这一范围的时候就搞不定了……

请大家帮帮,最好详细些,   谢谢,

------解决方案--------------------
Set VBExcel = CreateObject( "Excel.Application ")
With VBExcel
.Workbooks.Open App.Path + "\ " + "导出.xls " 'app.path是程序的相对路径
.Visible = True
For i = 0 To Xhnum - 1
For j = 0 To Xlnum - 1
.cells(i + 2, j + 1).Value = Xssz(j, i)
Next
Next
End With
其实就是一个一个的格子写。有多大的二维数组,就写成多少范围。最左上角的那个格子确定了整个范围的位置,.cells(i + 2, j + 1)中,调整参数2或1.就调整了位置.
------解决方案--------------------
这个非常好用:

Public Sub ExportDataTo(ByVal MSFG As MSFlexGrid)
Dim x As Excel.Application
Dim I As Long
Dim j As Long
Dim nCols As Long
Dim nRows As Long
Set x = CreateObject( "excel.application ")
x.Visible = False

nCols = MSFG.Cols
nRows = MSFG.Rows
I = 1
j = 1

Dim Book As Excel.Workbook
Set Book = x.Workbooks.Add(xlWorksheet)

With x.ActiveSheet
While I <= nRows
j = 1
While j < nCols
.Cells(I, j) = " ' " + MSFG.TextMatrix(I - 1, j)

j = j + 1
Wend
I = I + 1
Wend
For j = 1 To nCols - 1
.Columns(j).AutoFit

Next
End With
x.Visible = True

End Sub


===============================
在导出时调用,写以下代码即可:
Screen.MousePointer = vbHourglass
ExportDataTo MSFGQueryPay
Screen.MousePointer = vbDefault


------解决方案--------------------
用excel就是快不了,你说的方案,好像是没有
------解决方案--------------------
ActiveSheet.Range( "a3 ").value = a(b, d)这个方法要比循环中第次都去访问一下cells效率高出许多,这个在MSDN上就有示例

------解决方案--------------------
我在asp.net中一直是这样使用的,刚才修改了一下代码,这个在VB6下通过:

Dim DataArray() As String
Dim r As Integer, c As Integer

ReDim DataArray(fg.Rows - 1, fg.Cols - 1)
For r = 1 To fg.Rows - 1
For c = 1 To fg.Cols - 1
DataArray(r - 1, c - 1) = fg.TextMatrix(r, c)
Next c
Next r

Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object

Set oExcel = CreateObject( "Excel.Application ")
Set oBook = oExcel.Workbooks.Add
Set oSheet = oBook.Worksheets(1)

oSheet.Range( "A1 ").Value = "列1 "
oSheet.Range( "B1 ").Value = "列2 "
oSheet.Range( "C1 ").Value = "列3 "
oSheet.Range( "D1 ").Value = "列4 "

oSheet.Range( "A2 ").Resize(fg.Rows - 1, fg.Cols - 1).Value = DataArray
oExcel.Visible = True

Set oSheet = Nothing
Set oBook = Nothing
oExcel.Quit
Set oExcel = Nothing


msdn上的相关内容我试试找一下,都是以前看的了
------解决方案--------------------
’通用类
’MSFlexGrid Export to MSExcel
Public Function FlexGrd_SaveToExcel(FG As MSFlexGrid, Optional sHeader As String = " ", Optional sFooter As String = " ", Optional ColumnHeaderFontColorIndex As Long, Optional ColumnHeaderBackColorIndex As Long, Optional CoLogoPicLocation As String, Optional WorkBkBackColorIndex As Long, Optional WorkBkGridColorIndex As Long, Optional AlternateRowColorIndex1 As Long, Optional AlternateRowColorIndex2 As Long, Optional AutoColumnFitter As Boolean)