当前位置:编程学习 > VB >>

送分100分:如何将DATAGRID或DATA REPORT报表中的数据导出到EXCEL中

在VB6中,如何将DATAGRID或DATA REPORT报表中的数据导出到EXCEL中。

开发环境是VB6+ACCESS+ADO+DATAGRID+DATA REPORT. --------------------编程问答-------------------- 来段操作Excel的代码:
标准模块代码:
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'模块功能:
'设计单位:
'设 计 者:
'设计时间:
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Option Explicit
Public xlsApp As Excel.Application      'Excel应用对象
Public xlsBook As Excel.Workbook        'Excel工作薄对象
Public xlsSheet As Excel.Worksheet      'Excel工作表对象
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'函数功能:打开指定的Excel文件
'参数说明:xlsAPP:Excel应用对象
'        :xlsWork:Excel工作薄对象
'        :xlsSheet:Excel工作表对象
'        :strExcelFile:Excel文件路径
'        :strSheetName:工作表名
'        :strPWD:密码
'        :bolVisible:表的可见性
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Public Function funOpenExcelFile(ByRef xlsApp As Excel.Application, _
                                 ByRef xlsWork As Excel.Workbook, _
                                 ByRef xlsSheet As Excel.Worksheet, _
                                 ByVal strExcelFile As String, _
                                 ByVal strSheetName As String, _
                                 ByVal strPWD As String, _
                                 ByVal bolVisible As Boolean) As Boolean
On Error GoTo errFun
    funOpenExcelFile = False
    Set xlsApp = CreateObject("Excel.Application")
    Set xlsWork = xlsApp.Workbooks.Open(strExcelFile, , False, , strPWD, strPWD)
    Set xlsSheet = xlsBook.Worksheets(strSheetName)
    xlsSheet.Activate
    xlsApp.Visible = bolVisible
    funOpenExcelFile = True
    Exit Function
errFun:
    funOpenExcelFile = False
End Function
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'函数功能:关闭指定的Excel文件
'参数说明:xlsAPP:Excel应用对象
'        :xlsWork:Excel工作薄对象
'        :xlsSheet:Excel工作表对象
'        :bolSave:是否保存
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Public Function funCloseExcelFile(ByRef xlsApp As Excel.Application, _
                                 ByRef xlsWork As Excel.Workbook, _
                                 ByRef xlsSheet As Excel.Worksheet, _
                                 ByVal bolSave As Boolean) As Boolean
On Error GoTo errFun
    If bolSave Then xlsBook.Save
    Set xlsSheet = Nothing
    xlsBook.Close
    Set xlsBook = Nothing
    Set xlsApp = Nothing
    funCloseExcelFile = True
    Exit Function
errFun:
    funCloseExcelFile = False
End Function
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'函数功能:读取指定单元格的内容
'参数说明:xlsSheet:工作表对象
'        :lngRow:行号
'        :lngCol:列号
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Public Function funReadCellText(ByRef xlsSheet As Excel.Worksheet, _
                                ByVal lngRow As Long, _
                                ByVal lngCol As Long) As String
    
On Error GoTo errFun
    funReadCellText = ""
    If lngRow <= 0 Or lngCol <= 0 Then Exit Function
    funReadCellText = xlsSheet.Cells(lngRow, lngCol)
    Exit Function
errFun:
    funReadCellText = ""
End Function
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'函数功能:设置指定单元格的内容
'参数说明:xlsSheet:工作表对象
'        :lngRow:行号
'        :lngCol:列号
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Public Function funSetCellText(ByRef xlsSheet As Excel.Worksheet, _
                                ByVal lngRow As Long, _
                                ByVal lngCol As Long, _
                                ByVal strSetCellText As String) As Boolean
    
On Error GoTo errFun
    funSetCellText = False
    If lngRow <= 0 Or lngCol <= 0 Then Exit Function
    xlsSheet.Cells(lngRow, lngCol) = strSetCellText
    funSetCellText = True
    Exit Function
errFun:
    funSetCellText = ""
End Function


窗体模块:

'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'模块功能:
'设计单位:
'设 计 者:
'设计时间:
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Option Explicit

Private Sub Command1_Click()
    Dim bolP As Boolean
    bolP = funOpenExcelFile(xlsApp, xlsBook, xlsSheet, App.Path & "\111.xls", "Sheet1", "", True)
End Sub

Private Sub Command2_Click()
    Dim bolP As Boolean
    bolP = funSetCellText(xlsSheet, 2, 2, "123456")
End Sub

Private Sub Command3_Click()
    Label1.Caption = funReadCellText(xlsSheet, 2, 2)
End Sub

Private Sub Command4_Click()
    Dim bolP As Boolean
    bolP = funCloseExcelFile(xlsApp, xlsBook, xlsSheet, True)
End Sub
--------------------编程问答-------------------- 'office 2003 工程中引用 Microsoft office 11.0 Object;
Private Sub Command4_Click()
  Dim i As Long, j As Long
  Dim xlsApp As Excel.Application
  Dim xlsBook As Excel.Workbook
  Dim xlssheet As Excel.Worksheet
  Set xlsApp = New Excel.Application
  Set xlsApp = CreateObject("Excel.Application")
  xlsApp.Visible = True
  Set xlsBook = xlsApp.Workbooks.Open(App.Path & "\filename.xls")
  Set xlssheet = xlsBook.Worksheets(1)
  rs.MoveFirst
  For i = 1 To rs.Fields.Count
     xlssheet.Cells(1, i) = rs.Fields(i - 1).Name
  Next
  For i = 1 To rs.RecordCount
     For j = 1 To DataGrid1.Columns.Count
       With xlssheet
          .Cells(i + 1, j) = DataGrid1.Columns(j - 1).Value
       End With
     Next j
     rs.MoveNext
  Next i
End Sub
--------------------编程问答-------------------- 以下Code修改一下,
應該ok;

Private Sub OutputToExcel_Click()
'2009.10.20 修改

'Dim sNWind As String

Dim conn As New ADODB.Connection
Dim rs As ADODB.Recordset
Dim xlsheet As Excel.Worksheet

'修改:把"絕對路徑"改成"相對路徑"

'sNWind = "C:\Documents and Settings\goldenzhong\桌面\分析維修管理系統\information.mdb"

'conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sNWind & ";"

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\information.mdb;"
conn.CursorLocation = adUseClient
Set rs = conn.Execute("Info", , adCmdTable)


'在Excel中创建新的workbook

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

'向 Excel中传输数据

oSheet.Range("A1").CopyFromRecordset rs


'保存并退出Excel

'修改原因:讓用戶選擇"保存路徑"及“文件名”?

'2009.10.23 修改 打開變成另存為
'CommonDialog1.ShowOpen
CommonDialog1.ShowSave


'2009.10.22 修改  修改目的:導出execl表有標題
If rs.RecordCount > 0 Then

    For i = 1 To rs.Fields.Count
        'oSheet.Cells(1, i) = rs.Fields(i - 1).Name
        oSheet.Cells(1, i) = DataGrid1.Columns(i - 1).Caption               '調用Datgrid1.Columns(i-1)字段名
    Next i
    
    'For i = 1 To rs.Fields.Count
        'oSheet.Cells(1, i).HorizontalAlignment = xlCenter
        'Range("A?").HorizontalAlignment = xlCenter
    'Next i
    
    oSheet.Columns("A:AC").HorizontalAlignment = xlCenter                   '所有行居中
    'CommonDialog1.Filter = "execl(*.xls)*.xls"
    'CommonDialog1.Filter = "*.xls"               ' 異常,直接CommonDialog1屬性Filter設置
    '如果保存文件名與保存文件夾中文件的文件名相同,將報錯(選擇"取消","否")
    If Len(CommonDialog1.FileName) > 3 Then
        oBook.SaveAs CommonDialog1.FileName
        MsgBox "導出Execl成功!", 0, "提示"
        oExcel.Quit
    End If
End If

'oBook.SaveAs "C:\Documents and Settings\goldenzhong\桌面\Book1.xls"


'关闭连接

rs.Close
conn.Close

End Sub
--------------------编程问答-------------------- On Error GoTo Hand

        Dim xlApp As New Excel.Application
        Dim xlWorkbook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Dim xlQuery As Excel.QueryTable
        xlApp.Visible = True
        Set xlWorkbook = xlApp.Workbooks.Add
        Set xlSheet = xlWorkbook.Worksheets(1)
        Set xlQuery = xlSheet.QueryTables.Add(Adodc1.Recordset, xlSheet.Range("A1"))
        xlQuery.FieldNames = True
        xlQuery.Refresh
        Exit Sub
Hand:
        MsgBox Err.Description, vbCritical, "导入失败"


这样就可以了,放到一个按钮下就行了 --------------------编程问答-------------------- 要引用microsoft excel 12.0 object library --------------------编程问答--------------------
引用 5 楼 snowfirelove 的回复:
要引用microsoft excel 12.0 object library

可以不引用; --------------------编程问答-------------------- 解决数据库【Table-->Excel】的导出即可、其余形式仅为:变种。这个VB的程序段:微软网站就有。查一下即可。 --------------------编程问答--------------------
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,