辦公用品管理系統VB——庫存數量導出EXCEL,SaveEXCEL


辦公用品管理系統VB——庫存數量導出EXCEL,SaveEXCEL

總體來說,VB的EXCEL導出效率還是蠻低的,就是一個小型化的辦公用品管理軟件,不再優化了。

時間緊迫,就沒有從頭到尾的用C#編寫,從網上看見有源碼就直接COPY下來的,添加了一點小功能,編譯后給了朋友使用。

VB6.0編寫的,蠻古老的開發語言,算是學習編程時第一個學會的語言,真是許久沒有使用,有些生疏了。

上一下運行效果:

 

 

 

 

Private Sub SaveEXCEL_Click()

Dim Introws As Integer          '用作循環,標識MSHFlexGrid總行數
    Dim Intcols As Integer          '用作循環,標識MSHFlexGrid的總列數
    Dim XlsApp As Excel.Application '定義EXCEL對象
    Dim XlsSheet As Excel.Worksheet '定義EXCEL表
    Dim XlsBook As Excel.Workbook   '定義EXCEL的工作薄
    
    Set XlsApp = CreateObject("Excel.Application") '實例化EXCEL對象
    Set XlsBook = XlsApp.Workbooks.Add              '加載工作薄
    Set XlsSheet = XlsBook.Worksheets(1)            '創建工作表
    
    XlsSheet.SaveAs "D:\當前庫存.xls" '保存
    
    XlsSheet.Cells(1, 1) = "序號"
    XlsSheet.Cells(1, 2) = "辦公用品名稱"
    XlsSheet.Cells(1, 3) = "一級分類名稱"
    XlsSheet.Cells(1, 4) = "二級分類名稱"
    XlsSheet.Cells(1, 5) = "型號"
    XlsSheet.Cells(1, 6) = "庫存數量"
    XlsSheet.Cells(1, 7) = "庫存下限"
    XlsSheet.Cells(1, 8) = "備注"
    
    For i = 0 To DataGrid1.Columns.Count - 1
    For j = 0 To DataGrid1.ApproxCount - 1
    DataGrid1.Col = i
    On Error Resume Next
    DataGrid1.Row = j
    XlsSheet.Cells(j + 2, i + 1) = DataGrid1.Columns.Item(i).Text
    Next j
    Next i
    '釋放對象
    XlsApp.Visible = True
    Set XlsApp = Nothing
    
End Sub

 上面的代碼輸出的時候總是把最后一行重復輸出N多次。找到上面代碼的原因了,什么也不說了上代碼

 

    Dim i As Integer
  Dim j As Integer
  Dim k As Integer
  Dim xlApp As Excel.Application
  Dim xlBook As Excel.Workbook
  Dim xlSheet As Excel.Worksheet
  Set xlApp = New Excel.Application
  Set xlBook = xlApp.Workbooks.Add
  Set xlSheet = xlBook.Worksheets(1)
   
  xlSheet.Columns.AutoFit
  Me.MousePointer = 11
   For k = 0 To DataGrid1.Columns.Count - 1 'DataGrid所有的列數
     xlSheet.Cells(1, k + 1) = DataGrid1.Columns(k).Caption '第一行為DataGrid的列標題
   Next
   DataGrid1.Scroll 0, -DataGrid1.FirstRow '導出前拉動過垂直滾動條,這個非常重要
   DataGrid1.Row = 0
   For i = 0 To DataGrid1.ApproxCount - 1 'DataGrid的所有行數

      For j = 0 To DataGrid1.Columns.Count - 1 'DataGrid所有的列數,若將此數改小到不拉DataGrid的垂直滾動條的時候能看見的行數的時候正常
         DataGrid1.Col = j
         xlSheet.Cells(i + 2, j + 1) = Adodc1.Recordset(j) 'DataGrid1.Text '從第二行顯示'DataGrid的內容,這里修改成這樣也可以DataGrid1.Columns.Item(j).Text
      Next
     If i < DataGrid1.ApproxCount - 1 Then
       DataGrid1.Row = DataGrid1.Row + 1
     End If
   Next
  Me.MousePointer = 0
  MsgBox "導出成功!"
  xlApp.Visible = True
  Set xlApp = Nothing 'Excel 處於當前窗體
  Set xlBook = Nothing
  Set xlSheet = Nothing

 

 最終應用的方法,這樣比較迅速導出,直接導出Adodc,還是從數據根源導出好一點。

Private Sub SaveEXCEL_Click()
    Dim i As Long, j As Long
    Dim xlsApp As Excel.Application
    Dim xlsBook As Excel.Workbook
    Set xlsApp = New Excel.Application
    Set xlsApp = CreateObject("Excel.Application")
    xlsApp.Visible = True
    xlsApp.Workbooks.Add
    
    'Set xlsBook = xlsApp.Workbooks.Open(App.Path & "\filename.xls")
    
    xlsApp.Sheets("sheet1").Select
    xlsApp.Cells(1, 1) = "序號"
    xlsApp.Cells(1, 2) = "辦公用品名稱"
    xlsApp.Cells(1, 3) = "一級分類名稱"
    xlsApp.Cells(1, 4) = "二級分類名稱"
    xlsApp.Cells(1, 5) = "型號"
    xlsApp.Cells(1, 6) = "庫存數量"
    xlsApp.Cells(1, 7) = "庫存下限"
    xlsApp.Cells(1, 8) = "備注"
    xlsApp.ActiveSheet.Range("A2").CopyFromRecordset Adodc1.Recordset

    If xlsApp.ActiveWorkbook.Saved = False Then
        xlsApp.ActiveWorkbook.SaveAs App.Path & "\當前庫存.xls"
    End If
    'xlsApp.Quit
    Set xlsApp = Nothing
    
End Sub

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM