在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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- echarts間隔餅圖實現方法Echarts
- 微信小程式(JAVAScript)實現餅圖微信小程式JavaScript
- 影片怎麼轉換成gif動圖?分享影片轉gif的教程
- 【matplotlib 實戰】--餅圖
- echarts 餅圖巢狀 二級餅圖 子餅圖 複合餅圖Echarts巢狀
- 鬥圖神器–純前端實現視訊轉GIF製作表情包(已開源)前端
- C#/VB.NET 實現Word和ODT文件相互轉換C#
- 餅圖
- 餅圖元件的基本使用和自定義調整元件
- Android 折線圖之hellocharts (餅狀圖)餅圖Android
- html最簡單的Gif圖動畫製作方法gif轉base64HTML動畫
- 餅圖0625
- canvas簡單封裝一個echarts實現不了的餅圖Canvas封裝Echarts
- React講解 - 父元件呼叫子元件內容【更新中】React元件
- Java 在Excel中新增分離型餅圖、環形圖JavaExcel
- vue輪播元件實現,$children和$parent,附帶好用的gif錄製工具Vue元件
- GIF動圖怎麼製作?GIF圖片製作
- openlayers3實現動態圖示gif其他css支援的格式S3CSS
- Video GIF converter for Mac(gif視訊轉換器)IDEMac
- Linux QoS實現框架:函式呼叫流程圖Linux框架函式流程圖
- php實現pdf轉圖片PHP
- php實現圖片旋轉PHP
- VB.net chart 控制元件使用控制元件
- 求助:EXCEL,VB,實現 CRC16 校驗Excel
- matplotlib視覺化番外篇pie()--內嵌環形餅圖視覺化
- vue元件之輪播圖的實現Vue元件
- 探一探,非常實用的GIF圖圓角控制元件(3行程式碼)控制元件行程
- 怎麼把Excel 表格轉成PNG、JPEG、GIF圖片格式 ?Excel
- Flutter 自定義 Widget 之餅形圖實戰Flutter
- 優秀的影片轉gif軟體:Video to Gif Pro MacIDEMac
- 關聯圖譜在轉轉風控的實踐
- echarts繪製餅圖Echarts
- Highcharts繪製餅圖
- Vue實現內部元件輪播切換效果Vue元件
- Java實現emf轉jpg png 圖片轉換Java
- 大象跳轉-使用JS實現在微信中呼叫外部瀏覽器開啟指定連結JS瀏覽器
- vue元件之路之輪播圖的實現Vue元件
- 實在智慧RPA如何玩轉內容電商?
- C# / VB.NET 在PPT中建立、編輯PPT SmartArt圖形C#