• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    在vb組件內調用excel2000實現GIF餅圖

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 12次 | 進入軟件測試論壇討論

    領測軟件測試網   當我第一次使用excel的時候,就為excel的圖表功能所傾倒,實在強大,并且那些圖也挺漂亮了。后來我嘗試著在vb里面調用excel所支持的vba功能,發現功能的確強大,就是十分繁瑣。后來就考慮用vb在excel外面包一層,寫成對象,去掉我們不需要的特性。這樣掉用起來就方便多了,所謂一勞永逸 :P。
      在這里,我將像大家介紹一個用vb編寫的餅圖組件,你只需要給它幾個簡單的參數,就可以生成一副GIF格式的圖片給你。調用例子如下:
       
         Dim obj
         Set obj = CreateObject("ChinaaspChart.pie")
         obj.AddValue "男", 150
         obj.AddValue "女", 45
         obj.AddValue "不知道", 15
         obj.ChartName = "性別比例圖"
         obj.FileName = "d:\123.gif"
         obj.SaveChart
      除了在vb里面可以調用,這段代碼同樣也可以在asp里面調用。
       
      下面請follow me 編寫我們的組件。
       1.New project , 請選擇activex dll,在project explorer面板上選擇project1,然后在屬性面板上修改其name為ChinaASPChart。同樣把里面的class modules修改為pie

       2.保存該project,將project存為chinaaspchart.vbp,將class1.cls存為pie.cls。

       3.菜單project,選擇菜單項References,然后請把Microsoft Active Server Pages Ojbect Library、Microsoft Excel 9.0 Object Library、COM+ Services Type Library選上。
    注意:在NT4/win98上沒有COM+ Service Type Library這個東東,應該選Microsoft Transaction Server Type Library

       4.編輯pie.cls,代碼如下:


      '-------------------------------------------------------------------------------
      Dim xl
      Dim m_chartName
      Dim m_chartData()
      Dim m_chartType
      Dim m_fileName
      Public ErrMsg
      Public foundErr
      Dim iCount
      Type m_Value
          label As String
          value As Double
      End Type
      Dim tValue As m_Value
      Public Property Let ChartType(ChartType)
          m_chartType = ChartType
      End Property
      Public Property Get ChartType()
          ChartType = m_chartType
      End Property

      Public Property Let ChartName(ChartName)
          m_chartName = ChartName
      End Property
      Public Property Get ChartName()
          ChartName = m_chartName
      End Property
      Public Property Let FileName(fname)
          m_fileName = fname
      End Property
      Public Property Get FileName()
          FileName = m_fileName
      End Property
        
      Public Sub AddValue(label, value)
          iCount = iCount + 1
          ReDim Preserve m_chartData(iCount)
          tValue.label = label
          tValue.value = value
          m_chartData(iCount) = tValue
      End Sub
      Public Sub SaveChart()
          On Error Resume Next
          Dim iSheet
          Dim i
          Set xl = New Excel.Application
          xl.Application.Workbooks.Add
          xl.Workbooks(1).Worksheets("sheet1").Activate
          If Err.Number <> 0 Then
              foundErr = True
              ErrMsg = Err.Description
              Err.Clear
          Else
              xl.Workbooks(1).Worksheets("sheet1").Cells("2,1").value = m_chartName
              For i = 1 To iCount
                  xl.Worksheets("Sheet1").Cells(1, i + 1).value = m_chartData(i).label
                  xl.Worksheets("Sheet1").Cells(2, i + 1).value = m_chartData(i).value
              Next
              xl.Charts.Add
              xl.ActiveChart.ChartType = m_chartType
              xl.ActiveChart.SetSourceData xl.Sheets("Sheet1").Range("A1:" & Chr((iCount Mod 26) + Asc("A")) & "2"), 1
              xl.ActiveChart.Location 2, "Sheet1"
              With xl.ActiveChart
                  .HasTitle = True
                  .ChartTitle.Characters.Text = m_chartName
              End With
              xl.ActiveChart.ApplyDataLabels 2, False, _
                  True, False
              With xl.Selection.Border
                  .Weight = 2
                  .LineStyle = 0
              End With
                  
              xl.ActiveChart.PlotArea.Select
              With xl.Selection.Border
                  .Weight = xlHairline
                  .LineStyle = xlNone
              End With
              xl.Selection.Interior.ColorIndex = xlNone
              
              xl.ActiveWindow.Visible = False
              
              xl.DisplayAlerts = False
          
              xl.ActiveChart.Export m_fileName, FilterName:="GIF"
              xl.Workbooks.Close
              If Err.Number <> 0 Then
                  foundErr = True
                  ErrMsg = ErrMsg
                  Err.Clear
              End If
          End If
          Set xl = Nothing
      End Sub
      Private Sub Class_Initialize()
          iCount = 0
          foundErr = False
          ErrMsg = ""
          m_chartType = -4102 'xl3DPie
                        '54 '柱狀圖
      End Sub
      '-------------------------------------------------------------------------------

      5. 如果實現柱狀圖?
        實際上前面的代碼已經實現了柱狀圖的功能,只是缺省是餅圖功能。調用代碼改成如下:

      Dim obj
      Set obj = CreateObject("ChinaaspChart.pie")
      obj.AddValue "男", 150
      obj.AddValue "女", 45
      obj.AddValue "不知道", 15
      obj.ChartName = "性別比例圖"
      obj.FileName = "d:\123.gif"
      obj.ChartType=54
      obj.SaveChart

       6. 在asp里面調用該組件畫圖并顯示它需要注意的地方。
        (1)圖片必須生成在web目錄下。
        (2)asp程序運行在多用戶環境下,必須加鎖處理
         可以通過application實現。其邏輯如下:

     if application("標志")=0 then
        顯示圖片
       else
            application.lock
        生成圖片
        顯示圖片
            application("標志")=0
           application.unlock
       end if
      當然何時需要生成圖片置標志位,就需要您自己根據程序的要求來確定了。
      

    總結:
      COM里面調用office組件是一個十分有用的技巧,它的優點是開發相對簡單,使用方便,適合企業級低訪問量,高業務要求的應用,缺點是占用系統資源高。
      程序在Windows 2000 Server + Office 2000 + VB6.0 上測試通過。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>