• VB中Excel 2010的导入导出操作


    VB中Excel 2010的导入导出操作

     

    编写人:左丘文

     

    2015-4-11

    近来这已是第二篇在讨论VB的相关问题,今天在这里,我想与大家一起分享一下在VB中如何从Excel中导入数据和导出数据到Excel(程序支持excel2010),在此做个小结,以供参考。有兴趣的同学,可以一同探讨与学习一下,否则就略过吧。

     

    1、 程序导入导出操作介面:

     

    2、 excel导入数据代码:

      1 Private Sub cmdinput_Click()
      2    
      3    'Modify By KevinZhang 2014-8-21
      4     Dim sFile As String
      5     Dim btrans As Boolean
      6     sFile = txtFILE.Text
      7     If Not FileExists(sFile) Then
      8         MsgBox "指定的导入文件不存在,请重新选择!", vbOKOnly + vbExclamation
      9         Exit Sub
     10     End If
     11       '连接excel
     12     Dim conn
     13     Set conn = CreateObject("ADODB.Connection")
     14     'connExcelStr = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" & sFile & ";Extended Properties='Excel 8.0;HDR=YES'"
     15     'connExcelStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source =" & sFile & ";Extended Properties='Excel 12.0 Xml;HDR=YES;'"
     16     'connExcelStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source =" & sFile & ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'"
     17      connExcelStr = "Provider=Microsoft.ACE.OLEDB.12.0; Persist Security Info=False;Data Source=" & sFile & "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=2'"
     18     On Error GoTo checkgetexcel
     19       conn.Open connExcelStr
     20    Dim rs As ADODB.Recordset
     21     Set rs = New ADODB.Recordset
     22     With rs
     23         .ActiveConnection = conn
     24         .LockType = adLockReadOnly
     25         .CursorLocation = adUseClient
     26         .CursorType = adOpenKeyset
     27         .Open "select * from [Sheet1$]"
     28     End With
     29    
     30  
     31    Dim rs2 As ADODB.Recordset
     32    Set rs2 = New ADODB.Recordset
     33    Dim i As Integer
     34  If (rs.RecordCount >= 1) Then
     35  i = rs.RecordCount
     36  
     37  '*****************************************************************************
     38  '同时生成一个错误清单
     39  
     40    '定义变量
     41   Dim j, k, o, z As Long
     42  
     43     '初始化循环的变量数值
     44     j = 2
     45     '初始化Excel组建
     46 Set xlApp = CreateObject("Excel.Application")
     47  Set xlBook = xlApp.Workbooks.Add
     48  Set xlsheet = xlBook.WorkSheets("Sheet1")
     49  
     50 '打开选定的文件
     51 'Set xlBook = xlApp.Workbooks.Open(sFile)
     52 '设置其可见
     53 'xlApp.Visible = True
     54 '设置其工作表的名称
     55 Set xlsheet = xlBook.WorkSheets("Sheet1"'设置活动工作表
     56 '执行SQL连接方法,查询语句,和返回的文本
     57  
     58 '循环,到数据库的总行
     59  xlsheet.Cells(11) = "料号" '给单元格(row,col)赋值
     60  xlsheet.Cells(12) = "单价" '给单元格(row,col)赋值
     61   xlsheet.Cells(13) = "错误信息" '给单元格(row,col)赋值
     62  
     63  '***********************************************************************
     64 Call ShowInforDlg("正在导入数据,请稍候...")
     65 ConGamma.beginTrans
     66 btrans = True
     67 rs.MoveFirst
     68 Do While Not rs.EOF
     69    Set rs2 = ExecSQL("Insert_PackMat_Auto  '" & txtYEAR.Text & " ','" & txtIQUARTER.Text & "' ,'" _
     70                    & rs!PRONUM & "','" & rs!price & "'", ConGamma)
     71  
     72  
     73 If rs2.RecordCount = 1 Then
     74  
     75  If rs2.Fields(0).Value = "存在相同物料成本记录" Then
     76   'MsgBox "导入失败,请先删除该料号:" & rs!PRONUM & "再导入!!", vbCritical
     77  
     78 '*************************************************************************************************
     79 '初始化列
     80    o = 0
     81     For k = 1 To rs.Fields.count
     82       '给Excel列赋值
     83       xlsheet.Cells(j, k) = rs.Fields(o).Value '给单元格(row,col)赋值
     84       '列往后进一位
     85      o = o + 1
     86    
     87     Next
     88     xlsheet.Cells(j, rs.Fields.count + 1) = "存在相同物料成本记录" '给单元格(row,col)赋值
     89       '行往后一步
     90      j = j + 1
     91   '*******************************************************************************************
     92   i = i - 1
     93  End If
     94 Else
     95     'MsgBox "导入失败,请先检查该料号:" & rs!PRONUM, , vbCritical
     96     '*************************************************************************************************
     97 '初始化列
     98    o = 0
     99     For k = 1 To rs.Fields.count
    100       '给Excel列赋值
    101       xlsheet.Cells(j, k) = rs.Fields(o).Value '给单元格(row,col)赋值
    102       '列往后进一位
    103      o = o + 1
    104    
    105     Next
    106     xlsheet.Cells(j, rs.Fields.count + 1) = "请先检查该料号" '给单元格(row,col)赋值
    107       '行往后一步
    108      j = j + 1
    109   '*******************************************************************************************
    110    
    111     i = i - 1
    112    
    113    
    114 End If
    115  
    116    rs.MoveNext
    117 Loop
    118 ConGamma.CommitTrans
    119 rs.MoveFirst
    120 btrans = False
    121 Call UnloadInforDlg
    122   If rs.RecordCount > 0 Then
    123          MsgBox "共有" & i & "条记录被导入,错误信息请阅导入文件目录的Error.xls文件", vbInformation
    124     End If
    125   End If
    126   '**********************************************
    127      'xlsheet.PrintOut '打印工作表
    128      Dim ssfile() As String
    129      Dim ssfile2 As String
    130      ssfile = Split(sFile, "")
    131      For i = 0 To UBound(ssfile) - 1
    132      ssfile2 = ssfile2 & ssfile(i) & ""
    133      Next
    134      ssfile2 = ssfile2 & "Error.xls"
    135     xlBook.SaveAs (ssfile2)
    136     xlBook.Close (True) '关闭工作簿
    137     xlApp.Quit '结束EXCEL对象
    138     Set xlApp = Nothing '释放xlApp对象
    139  '******************************************************
    140    rs.Close
    141   Set rs = Nothing
    142    If Trim(txtYEAR.Text) <> "" Then
    143         Call frmMDI.ITMDIAdminX.ControlSearch
    144          Exit Sub
    145     End If
    146    
    147 checkgetexcel:
    148     MsgBox "请检查excel是否存在,excel中是否有Sheet1的工作表。(系统默认读取excel的Sheet1的工作表)", vbInformation
    149   If ERR.Number <> 0 Then
    150     MsgBox ERR.Description
    151   End If
    152  
    153    Exit Sub
    154 End Sub
    View Code

     

    3、 导出到excel代码

     1 Private Sub cmdExport_Click()
     2 'Modify By KevinZhang 2014-8-22
     3     '定义变量
     4   Dim i, j, k, o, z As Long
     5  
     6   Dim rs As ADODB.Recordset
     7    Dim sFile As String
     8   '初始化文件打开窗口
     9    If txtFILE.Text <> "" Then
    10        sFile = RTrim(txtFILE.Text)
    11     Else '如果等于空,则关闭方法
    12       MsgBox "请选择要导出的文件名", vbCritical
    13       Exit Sub
    14     End If
    15    
    16     If FileExists(sFile) Then
    17         If MsgBox("存在相同的档案名称,要替代吗?", vbQuestion + vbYesNoCancel) <> vbYes Then Exit Sub
    18     End If
    19    
    20    Screen.MousePointer = vbHourglass
    21  
    22    On Error GoTo Err_Proc
    23  
    24     '初始化循环的变量数值
    25     i = 2
    26     j = 1
    27     '初始化Excel组建
    28 Set xlApp = CreateObject("Excel.Application")
    29  Set xlBook = xlApp.Workbooks.Add
    30  Set xlsheet = xlBook.WorkSheets("Sheet1")
    31  
    32 '打开选定的文件
    33 'Set xlBook = xlApp.Workbooks.Open(sFile)
    34 '设置其可见
    35 'xlApp.Visible = True
    36 '设置其工作表的名称
    37 Set xlsheet = xlBook.WorkSheets("Sheet1"'设置活动工作表
    38 '执行SQL连接方法,查询语句,和返回的文本
    39 Set rs = ExecSQL("select * from PACKMATDTL where YEAR= '" & txtYEAR.Text & " '  AND IQUARTER='" & txtIQUARTER.Text & "'", ConGamma)
    40 '循环,到数据库的总行
    41  
    42  
    43  xlsheet.Cells(11) = "年份" '给单元格(row,col)赋值
    44  xlsheet.Cells(12) = "季度" '给单元格(row,col)赋值
    45  xlsheet.Cells(13) = "料号" '给单元格(row,col)赋值
    46  xlsheet.Cells(14) = "单价" '给单元格(row,col)赋值
    47  
    48 For z = 1 To rs.RecordCount
    49 '初始化列
    50  o = 0
    51     For k = 1 To rs.Fields.count
    52       '给Excel列赋值
    53       xlsheet.Cells(i, k) = rs.Fields(o).Value '给单元格(row,col)赋值
    54       '列往后进一位
    55      o = o + 1
    56    
    57     Next
    58     '数据库标往后一步
    59      rs.MoveNext
    60       '行往后一步
    61      i = i + 1
    62      j = j + 1
    63  Next
    64     'xlsheet.PrintOut '打印工作表
    65     xlBook.SaveAs (sFile)
    66     xlBook.Close (True) '关闭工作簿
    67     xlApp.Quit '结束EXCEL对象
    68     Set xlApp = Nothing '释放xlApp对象
    69     MsgBox "共有" & rs.RecordCount & "条记录被导出", vbInformation
    70   rs.Close
    71   Set rs = Nothing
    72    Screen.MousePointer = vbDefault
    73             Exit Sub
    74  
    75    
    76    
    77 Err_Proc:
    78           Screen.MousePointer = vbDefault
    79           MsgBox "请确认您的电脑已安装Excel!", vbExclamation, "提示"
    80  
    81    
    82    
    83 End Sub
    View Code

    有关更多的技术分享,大家可以加入我们的技术群,进行源码的分享。

     

    欢迎加入技术分享群:238916811

     



  • 相关阅读:
    Java基于Redis的分布式锁
    接口测试工具-Jmeter使用笔记(八:模拟OAuth2.0协议简化模式的请求)
    初识HttpRunner
    WebService接口测试
    git使用:本地分支merge到远程分支
    git使用:本地项目推送到gitlab
    模拟网络状况工具——clumsy
    JAVA学习笔记 (okHttp3的用法)
    JAVA学习笔记 (一、入门及前期准备)
    Jenkins+Jmeter持续集成笔记(五:问题优化)
  • 原文地址:https://www.cnblogs.com/bribe/p/4421311.html
Copyright © 2020-2023  润新知