• 从VB将数据导出到EXCEL(不需要安装EXCEL)


    '从VB将数据导出到EXCEL,网上可能有很多这样的代码,但是前提都要安装EXCEL,今天我分享给大家的就是没有安装EXCEL的一样也可以导出.
    'Rem 作者:谢炎锦  创建时间:2002-12-20   Mail:XieYanJin@163.Com
    'Rem 内容如下:
    'Rem 引用方式: Export(Ado.Recordset) 或 Export(Rds.RecordSet)
    'Rem 支持 Rds 与 Ado 的记录导出
    'Rem 得到所有数据类型,有些数据类型EXCEL不支持,已经替换掉
    
    Public Function FieldType(intType)
       Select Case intType
          Case 20
             FieldType = "int"
          Case 128
             FieldType = "binary"
          Case 11
             FieldType = "bit"
          Case 129
             FieldType = "char"
          Case 135
             FieldType = "datetime"
          Case 131
             FieldType = "varchar"
          Case 5
             FieldType = "float"
          Case 205
             FieldType = "image"
          Case 3
             FieldType = "int"
          Case 6
             FieldType = "money"
          Case 130
             FieldType = "char"
          Case 203
             FieldType = "text"
          Case 131
             FieldType = "numeric"
          Case 202
             FieldType = "varchar"
          Case 4
             FieldType = "real"
          Case 135
             FieldType = "datetime"
          Case 2
             FieldType = "int"
          Case 6
             FieldType = "money"
          Case 204
             FieldType = "varchar"
          Case 201
             FieldType = "text"
          Case 128
             FieldType = "timestamp"
          Case 17
             FieldType = "varchar"
          Case 72
             FieldType = "varchar"
          Case 204
             FieldType = "varbinary"
          Case 200
             FieldType = "varchar"
        End Select
    End Function
    Public Sub ExportToExcel(AdoRecordSet As ADODB.Recordset)
    On Error GoTo Excel_Err
        Dim Excel_Dsn As String
        Dim Excel_Conn As New ADODB.Connection
        Dim Excel_Adodc As New ADODB.Recordset
        Dim mySql As String
        Dim i, j, TmpField, FileName
        Rem 得到文件名
       For i = 0 To 100
            If Len(i) = 1 Then
                FileName = "C:Query_0" & i
            Else
                FileName = "C:Query_" & i
            End If
            If Dir(FileName & ".xls", vbHidden) = "" Then
                Exit For
            End If
        Next
        FileName = FileName & ".xls"
        Excel_Dsn = "DRIVER={Microsoft Excel Driver (*.xls)};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=""" & FileName & """;DBQ=" & FileName
        Excel_Conn.Open Excel_Dsn
        With AdoRecordSet
            If Not (.EOF And .BOF) Then
                mySql = "Create Table [Query] ("
                For i = 0 To .Fields.Count - 1
                    TmpField = FieldType(.Fields(i).Type)
                    If TmpField = "char" Or TmpField = "varchar" Or TmpField = "nchar" Or TmpField = "nvarchar" Or TmpField = "varbinary" Then
                        If .Fields(i).DefinedSize >= 256 Then
                            mySql = mySql & Trim(.Fields(i).Name) & " text,"
                        Else
                            mySql = mySql & Trim(.Fields(i).Name) & " " & FieldType(.Fields(i).Type) & "(" & .Fields(i).DefinedSize & ")" & ","
                        End If
                    ElseIf TmpField <> "image" Then
                        mySql = mySql & Trim(.Fields(i).Name) & " " & FieldType(.Fields(i).Type) & ","
                    End If
                Next
                mySql = Left(Trim(mySql), Len(Trim(mySql)) - 1)
                mySql = mySql & ")"
                Rem 创建表名
                Excel_Adodc.Open mySql, Excel_Dsn, adOpenDynamic, adLockPessimistic
                Rem 插入数据
                For i = 0 To .RecordCount - 1
                    mySql = "Insert into [Query] Values("
                    For j = 0 To .Fields.Count - 1
                        TmpField = FieldType(.Fields(j).Type)
                        Rem Image 不作保存
                        If TmpField <> "image" Then
                            If IsNull(.Fields(j).Value) Then
                                mySql = mySql & "NULL,"
                            Else
                                mySql = mySql & "'" & .Fields(j).Value & "',"
                            End If
                        End If
                    Next
                    mySql = Left(Trim(mySql), Len(Trim(mySql)) - 1)
                    mySql = mySql & ")"
                    Excel_Adodc.Open mySql, Excel_Dsn, adOpenDynamic, adLockPessimistic
                    .MoveNext
                Next
                MsgBox "系统提示:" & Chr(13) & " 已经将文件保存到 [ " & FileName & " ]", 64, "系统信息:"
            End If
        End With
       Excel_Conn.Close
        Set Excel_Conn = Nothing
        Set Excel_Adodc = Nothing
    Exit Sub
    Excel_Err:
        MsgBox "发生错误:" & Err.Description & Chr(13) & "错误代码:" & Err.Number, 64, "系统信息:"
    End Sub
  • 相关阅读:
    为什么我会被淘汰?
    2017-3-27日碎碎念
    (原创)我对未来的人类的发展,以及AI技术发展的一些思考。
    八大排序算法图文讲解
    PE病毒初探——向exe注入代码
    [转]Patch文件结构详解
    芝麻信用商家接入指南
    如何成为一名好的程序员的一些个人经验
    .NET CoreCLR开发人员指南(上)
    七牛云:ckeditor JS SDK 结合 C#实现多图片上传。
  • 原文地址:https://www.cnblogs.com/Spacecup/p/3642891.html
Copyright © 2020-2023  润新知