在vb元件內呼叫excel2000實現GIF餅圖 (轉)
點選:405
在vb元件內呼叫excel2000實現GIF餅圖
當我第一次使用excel的時候,就為excel的圖表功能所傾倒,實在強大,並且那些圖也挺漂亮了。後來我嘗試著在vb裡面呼叫excel所支援的vba功能,發現功能的確強大,就是十分繁瑣。後來就考慮用vb在excel外面包一層,寫成,去掉我們不需要的特性。這樣掉用起來就方便多了,所謂一勞永逸 :P。
在這裡,我將像大家介紹一個用vb編寫的餅圖元件,你只需要給它幾個簡單的引數,就可以生成一副GIF格式的圖片給你。呼叫例子如下:
Dim obj
Set obj = Create("ChinaChart.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 , 請選擇 dll,在project explorer皮膚上選擇project1,然後在屬性皮膚上修改其name為ChinaASPChart。同樣把裡面的class modules修改為pie
2.儲存該project,將project存為chinaaspchart.vbp,將class1.cls存為pie.cls。
3.選單project,選擇選單項References,然後請把 Active Server Pages Ojbect Library、Microsoft Excel 9.0 Object Library、COM+ Services Type Library選上。
注意:在NT4/上沒有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.SetData 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.ion.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)圖片必須生成在目錄下。
(2)asp執行在多環境下,必須加鎖處理
可以透過application實現。其邏輯如下:
if application("標誌")=0 then
顯示圖片
else
application.lock
生成圖片
顯示圖片
application("標誌")=0
application.unlock
end if
當然何時需要生成圖片置標誌位,就需要您自己根據程式的要求來確定了。
總結:
COM裡面呼叫元件是一個十分有用的技巧,它的優點是開發相對簡單,使用方便,適合企業級低訪問量,高業務要求的應用,缺點是佔用資源高。
程式在 2000 Server + Office 2000 + .0 上測試透過。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989630/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 利用VB實現對IE的呼叫與控制 (轉)
- MX記錄獲取元件(vb實現) (轉)元件
- 在Vb下實現多執行緒 (轉)執行緒
- 在VB中用API實現多媒體 (轉)API
- echarts間隔餅圖實現方法Echarts
- 微信小程式(JAVAScript)實現餅圖微信小程式JavaScript
- PHP物件程式設計實現3D餅圖 (轉)PHP物件程式設計3D
- Android開發自定義控制元件實現一個餅狀圖Android控制元件
- VB實現抽象類 (轉)抽象
- 在VB中實現窗體的動態效果 (轉)
- 用VB實現“百葉窗”的圖形特效 (轉)特效
- 在Java中實現遠端方法呼叫(轉)Java
- 用kotlin來實現一個餅圖Kotlin
- Vb下呼叫Help檔案 (轉)
- 再談在VB中呼叫VC++開發的DLL (轉)C++
- VB6.0中透過MSChart控制元件呼叫資料庫 (轉)控制元件資料庫
- Android之自定義控制元件實現天氣溫度折線圖和餅狀圖Android控制元件
- 在VB6.0中實現動態統計報表 (轉)
- 瀏覽資料夾中的圖片(用VB實現) (轉)
- Excel2000/XP和PowerPoint2000/XP下內部COM外掛的實現 (轉)Excel
- VB呼叫API函式使視窗保持在最上層 (轉)API函式
- 【matplotlib 實戰】--餅圖
- 在VB.Net中建立使用控制元件陣列 (轉)控制元件陣列
- 利用動態建立自動化介面實現VB的函式指標呼叫 (轉)函式指標
- 在開發中實現點選 WebView 中的圖片,呼叫原生控制元件放大展示WebView控制元件
- 影片怎麼轉換成gif動圖?分享影片轉gif的教程
- java實現各種資料統計圖(柱形圖,餅圖,折線圖)Java
- 在VB中用Paintpicture方法進行圖形處理 (轉)AI
- [開源]基於WPF實現的Gif圖片分割器,提取GIf圖片中的每一幀
- 在VB中實現任意檔案的16進位制方式察看 (轉)
- 餅圖元件的基本使用和自定義調整元件
- 鬥圖神器–純前端實現視訊轉GIF製作表情包(已開源)前端
- highcharts實現的餅狀圖程式碼例項
- canvas實現的簡單餅狀圖程式碼例項Canvas
- VB實現SQL Enterprise Manager功能 (轉)SQL
- 用VB實現螢幕陰暗操作 (轉)
- Android 折線圖之hellocharts (餅狀圖)餅圖Android
- VB動態呼叫外部函式的方法 (轉)函式