用VB编写导入、导出excel数据表内容的方法?

解决方案 »

  1.   

    请参考下面的:
    如何操作Excel文件   
      全面控制   Excel   
      首先创建   Excel   对象,使用ComObj:   
      Dim   ExcelID   as   Excel.Application   
      Set   ExcelID   as   new   Excel.Application   
      1)   显示当前窗口:   
      ExcelID.Visible   :=   True;   
      2)   更改   Excel   标题栏:   
      ExcelID.Caption   :=   '应用程序调用   Microsoft   Excel';   
      3)   添加新工作簿:   
          ExcelID.WorkBooks.Add;   
      4)   打开已存在的工作簿:   
          ExcelID.WorkBooks.Open(   'C:\Excel\Demo.xls'   );   
      5)   设置第2个工作表为活动工作表:   
          ExcelID.WorkSheets[2].Activate;       
        或   ExcelID.WorkSheets[   'Sheet2'   ].Activate;   
      6)   给单元格赋值:   
        ExcelID.Cells[1,4].Value   :=   '第一行第四列';   
      7)   设置指定列的宽度(单位:字符个数),以第一列为例:   
        ExcelID.ActiveSheet.Columns[1].ColumnsWidth   :=   5;   
      8)   设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:   
          ExcelID.ActiveSheet.Rows[2].RowHeight   :=   1/0.035;   //   1厘米   
      9)   在第8行之前插入分页符:   
          ExcelID.WorkSheets[1].Rows[8].PageBreak   :=   1;   
      10)   在第8列之前删除分页符:   
          ExcelID.ActiveSheet.Columns[4].PageBreak   :=   0;   
      11)   指定边框线宽度:   
        ExcelID.ActiveSheet.Range[   'B3:D4'   ].Borders[2].Weight   :=   3;   
            1-左         2-右       3-顶         4-底       5-斜(   \   )           6-斜(   /   )   
      12)   清除第一行第四列单元格公式:   
        ExcelID.ActiveSheet.Cells[1,4].ClearContents;   
      13)   设置第一行字体属性:   
      ExcelID.ActiveSheet.Rows[1].Font.Name   :=   '隶书';   
      ExcelID.ActiveSheet.Rows[1].Font.Color     :=   clBlue;   
      ExcelID.ActiveSheet.Rows[1].Font.Bold       :=   True;   
      ExcelID.ActiveSheet.Rows[1].Font.UnderLine   :=   True;   
      14)   进行页面设置:   
          a.页眉:   
              ExcelID.ActiveSheet.PageSetup.CenterHeader   :=   '报表演示';   
          b.页脚:   
              ExcelID.ActiveSheet.PageSetup.CenterFooter   :=   '第&P页';   
          c.页眉到顶端边距2cm:   
              ExcelID.ActiveSheet.PageSetup.HeaderMargin   :=   2/0.035;   
          d.页脚到底端边距3cm:   
              ExcelID.ActiveSheet.PageSetup.HeaderMargin   :=   3/0.035;   
          e.顶边距2cm:   
              ExcelID.ActiveSheet.PageSetup.TopMargin   :=   2/0.035;   
          f.底边距2cm:   
              ExcelID.ActiveSheet.PageSetup.BottomMargin   :=   2/0.035;   
          g.左边距2cm:   
              ExcelID.ActiveSheet.PageSetup.LeftMargin   :=   2/0.035;   
          h.右边距2cm:   
              ExcelID.ActiveSheet.PageSetup.RightMargin   :=   2/0.035;   
          i.页面水平居中:   
              ExcelID.ActiveSheet.PageSetup.CenterHorizontally   :=   2/0.035;   
          j.页面垂直居中:   
              ExcelID.ActiveSheet.PageSetup.CenterVertically   :=   2/0.035;   
          k.打印单元格网线:   
              ExcelID.ActiveSheet.PageSetup.PrintGridLines   :=   True;   
      15)   拷贝操作:   
          a.拷贝整个工作表:   
              ExcelID.ActiveSheet.Used.Range.Copy;   
          b.拷贝指定区域:   
              ExcelID.ActiveSheet.Range[   'A1:E2'   ].Copy;   
          c.从A1位置开始粘贴:   
              ExcelID.ActiveSheet.Range.[   'A1'   ].PasteSpecial;   
          d.从文件尾部开始粘贴:   
              ExcelID.ActiveSheet.Range.PasteSpecial;   
      16)   插入一行或一列:   
            a.   ExcelID.ActiveSheet.Rows[2].Insert;   
            b.   ExcelID.ActiveSheet.Columns[1].Insert;   
      17)   删除一行或一列:   
          a.   ExcelID.ActiveSheet.Rows[2].Delete;   
          b.   ExcelID.ActiveSheet.Columns[1].Delete;   
      18)   打印预览工作表:   
          ExcelID.ActiveSheet.PrintPreview;   
      19)   打印输出工作表:   
          ExcelID.ActiveSheet.PrintOut;   
      20)   工作表保存:   
        If   not   ExcelID.ActiveWorkBook.Saved   then   
            ExcelID.ActiveSheet.PrintPreview   
            End   if   
      21)   工作表另存为:   
          ExcelID.SaveAs(   'C:\Excel\Demo1.xls'   );   
      22)   放弃存盘:   
        ExcelID.ActiveWorkBook.Saved   :=   True;   
      23)   关闭工作簿:   
        ExcelID.WorkBooks.Close;   
      24)   退出   Excel:   
      ExcelID.Quit;   
      25)   设置工作表密码:   
      ExcelID.ActiveSheet.Protect   "123",   DrawingObjects:=True,   Contents:=True,   Scenarios:=True   
      26)     EXCEL的显示方式为最大化   
      ExcelID.Application.WindowState   =   xlMaximized           
      27)   工作薄显示方式为最大化   
      ExcelID.ActiveWindow.WindowState   =   xlMaximized       
      28)   设置打开默认工作薄数量   
      ExcelID.SheetsInNewWorkbook   =   3   
      29)   '关闭时是否提示保存(true   保存;false   不保存)   
      ExcelID.DisplayAlerts   =   False       
      30)   设置拆分窗口,及固定行位置   
      ExcelID.ActiveWindow.SplitRow   =   1   
      ExcelID.ActiveWindow.FreezePanes   =   True   
      31)   设置打印时固定打印内容   
      ExcelID.ActiveSheet.PageSetup.PrintTitleRows   =   "$1:$1"       
      32)   设置打印标题   
      ExcelID.ActiveSheet.PageSetup.PrintTitleColumns   =   ""         
      33)   设置显示方式(分页方式显示)   
      ExcelID.ActiveWindow.View   =   xlPageBreakPreview       
      34)   设置显示比例   
      ExcelID.ActiveWindow.Zoom   =   100                                     
      35)   让Excel   响应   DDE   请求   
      Ex.Application.IgnoreRemoteRequests   =   False   
        
      用VB操作EXCEL   
      Private   Sub   Command3_Click()   
      On   Error   GoTo   err1   
              Dim   i   As   Long   
              Dim   j   As   Long   
              Dim   objExl   As   Excel.Application       '声明对象变量   
              Me.MousePointer   =   11                         '改变鼠标样式   
              Set   objExl   =   New   Excel.Application   '初始化对象变量   
              objExl.SheetsInNewWorkbook   =   1     '将新建的工作薄数量设为1   
              objExl.Workbooks.Add                     '增加一个工作薄   
              objExl.Sheets(objExl.Sheets.Count).Name   =   "book1"     '修改工作薄名称     
              objExl.Sheets.Add   ,   objExl.Sheets("book1")  ‘增加第二个工作薄在第一个之后   
              objExl.Sheets(objExl.Sheets.Count).Name   =   "book2"     
              objExl.Sheets.Add   ,   objExl.Sheets("book2") ‘增加第三个工作薄在第二个之后   
      objExl.Sheets(objExl.Sheets.Count).Name   =   "book3"     
        
      objExl.Sheets("book1").Select           '选中工作薄<book1>   
              For   i   =   1   To   50                                    '循环写入数据   
                      For   j   =   1   To   5   
      If   i   =   1   Then   
                          objExl.Selection.NumberFormatLocal   =   "@"  '设置格式为文本     
      objExl.Cells(i,   j)   =   "   E   "   &   i   &   j   
                              Else   
                                    objExl.Cells(i,   j)   =   i   &   j   
                              End   If   
                      Next   
              Next   
        
            objExl.Rows("1:1").Select                   '选中第一行   
            objExl.Selection.Font.Bold   =   True       '设为粗体   
            objExl.Selection.Font.Size   =   24           '设置字体大小   
            objExl.Cells.EntireColumn.AutoFit     '自动调整列宽     
      objExl.ActiveWindow.SplitRow   =   1     '拆分第一行   
            objExl.ActiveWindow.   SplitColumn   =   0     '拆分列   
      objExl.ActiveWindow.FreezePanes   =   True       '固定拆分       objExl.ActiveSheet.PageSetup.PrintTitleRows   =   "$1:$1"     '设置打印固定行   
      objExl.ActiveSheet.PageSetup.PrintTitleColumns   =   ""         '打印标题         objExl.ActiveSheet.PageSetup.RightFooter   =   "打印时间:   "   &   _   
                                            Format(Now,   "yyyy年mm月dd日   hh:MM:ss")   
            objExl.ActiveWindow.View   =   xlPageBreakPreview         '设置显示方式   
            objExl.ActiveWindow.Zoom   =   100                         '设置显示大小   
              '给工作表加密码   
      objExl.ActiveSheet.Protect   "123",   DrawingObjects:=True,     _   
      Contents:=True,   Scenarios:=True   
            objExl.Application.IgnoreRemoteRequests   =   False   
            objExl.Visible   =   True                                               '使EXCEL可见   
            objExl.Application.WindowState   =   xlMaximized   'EXCEL的显示方式为最大化   
            objExl.ActiveWindow.WindowState   =   xlMaximized   '工作薄显示方式为最大化   
            objExl.SheetsInNewWorkbook   =   3                       '将默认新工作薄数量改回3个     
            Set   objExl   =   Nothing         '清除对象   
            Me.MousePointer   =   0       '修改鼠标   
      Exit   Sub   
      err1:   
      objExl.SheetsInNewWorkbook   =   3   
      objExl.DisplayAlerts   =   False     '关闭时不提示保存   
      objExl.Quit                                 '关闭EXCEL   
      objExl.DisplayAlerts   =   True       '关闭时提示保存   
      Set   objExl   =   Nothing   
      Me.MousePointer   =   0   
      End   Sub 
      

  2.   

    网上有个模块好用呢,速度也很快。
    Public Sub ExporToExcel(strOpen As String)
    '*********************************************************
    '* 名称:ExporToExcel
    '* 功能:导出数据到EXCEL
    '* 用法:ExporToExcel(sql查询字符串)
    '*********************************************************
    Dim Rs_Data As New ADODB.Recordset
    Dim Irowcount As Integer
    Dim Icolcount As Integer
        
        Dim xlApp As New Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Dim xlQuery As Excel.QueryTable
          
             With Rs_Data
                      If .State = adStateOpen Then
                              .Close
                      End If
                      .ActiveConnection = conn
                      .CursorLocation = adUseClient
                      .CursorType = adOpenStatic
                      .LockType = adLockReadOnly
                      .Source = strOpen
                      .Open
              End With    With Rs_Data
            If .RecordCount < 1 Then
                MsgBox ("没有记录!")
                Exit Sub
            End If
            '记录总数
            Irowcount = .RecordCount
            '字段总数
            Icolcount = .Fields.Count
        End With
        
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = Nothing
        Set xlSheet = Nothing
        Set xlBook = xlApp.Workbooks().Add
        Set xlSheet = xlBook.Worksheets("sheet1")
        xlApp.Visible = True
        
        '添加查询语句,导入EXCEL数据
        Set xlQuery = xlSheet.QueryTables.Add(Rs_Data, xlSheet.Range("a1"))
        
        With xlQuery
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = True
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
        End With
        
        xlQuery.FieldNames = True '显示字段名
        xlQuery.Refresh
        
        With xlSheet
            .Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Name = "黑体"
            '设标题为黑体字
            .Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Bold = True
            '标题字体加粗
            .Range(.Cells(1, 1), .Cells(Irowcount + 1, Icolcount)).Borders.LineStyle = xlContinuous
            '设表格边框样式
        End With
        
       
        xlApp.Application.Visible = True
        Set xlApp = Nothing  '"交还控制给Excel
        Set xlBook = Nothing
        Set xlSheet = NothingEnd Sub
      

  3.   

    chenbin63:使用vivibing 这个模块,可以实现,你试试!!!!!
      

  4.   


    如果熟悉数据库操作,用 Jet Engine 把 Excel 当作数据库来处理是最省事的。
      

  5.   

    靠!!!!我研究了一个礼拜,10分钟前才搞定,一高兴来CSDN逛逛就看到了你们这个帖子!!!!!
      

  6.   

    vivibing这个模块我不太会用啊,运行之后 .ActiveConnection = conn有错误
    要怎么修改啊?