国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

在VB組件內(nèi)調(diào)用Excel2000實現(xiàn)GIF餅圖

2019-11-18 17:49:30
字體:
供稿:網(wǎng)友
當我第一次使用Excel的時候,就為excel的圖表功能所傾倒,實在強大,并且那些圖也挺漂亮了。后來我嘗試著在vb里面調(diào)用excel所支持的vba功能,發(fā)現(xiàn)功能的確強大,就是十分繁瑣。后來就考慮用vb在excel外面包一層,寫成對象,去掉我們不需要的特性。這樣掉用起來就方便多了,所謂一勞永逸:P。
  在這里,我將像大家介紹一個用vb編寫的餅圖組件,你只需要給它幾個簡單的參數(shù),就可以生成一副GIF格式的圖片給你。調(diào)用例子如下:

Dimobj
Setobj=CreateObject("ChinaaspChart.pie")
obj.AddValue"男",150
obj.AddValue"女",45
obj.AddValue"不知道",15
obj.ChartName="性別比例圖"
obj.FileName="d:/123.gif"
obj.SaveChart
  除了在vb里面可以調(diào)用,這段代碼同樣也可以在asp里面調(diào)用。

  下面請followme編寫我們的組件。
  1.NewPRoject,請選擇activexdll,在projectexplorer面板上選擇project1,然后在屬性面板上修改其name為ChinaASPChart。同樣把里面的classmodules修改為pie

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

  3.菜單project,選擇菜單項References,然后請把MicrosoftActiveServerPagesOjbectLibrary、MicrosoftExcel9.0ObjectLibrary、COM ServicesTypeLibrary選上。
注意:在NT4/win98上沒有COM ServiceTypeLibrary這個東東,應(yīng)該選MicrosoftTransactionServerTypeLibrary

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


注釋:-------------------------------------------------------------------------------
Dimxl
Dimm_chartName
Dimm_chartData()
Dimm_chartType
Dimm_fileName
PublicErrMsg
PublicfoundErr
DimiCount
Typem_Value
labelAsString
valueAsDouble
EndType
DimtValueAsm_Value
PublicPropertyLetChartType(ChartType)
m_chartType=ChartType
EndProperty
PublicPropertyGetChartType()
ChartType=m_chartType
EndProperty

PublicPropertyLetChartName(ChartName)
m_chartName=ChartName
EndProperty
PublicPropertyGetChartName()
ChartName=m_chartName
EndProperty
PublicPropertyLetFileName(fname)
m_fileName=fname
EndProperty
PublicPropertyGetFileName()
FileName=m_fileName
EndProperty

PublicSubAddValue(label,value)
iCount=iCount 1
ReDimPreservem_chartData(iCount)
tValue.label=label
tValue.value=value
m_chartData(iCount)=tValue
EndSub
PublicSubSaveChart()
OnErrorResumeNext
DimiSheet
Dimi
Setxl=NewExcel.application
xl.Application.Workbooks.Add
xl.Workbooks(1).Worksheets("sheet1").Activate
IfErr.Number<>0Then
foundErr=True
ErrMsg=Err.Descrxl.Worksheets("Sheet1").Cells(2,i 1).value=m_chartData(i).value
Next
xl.Charts.Add
xl.ActiveChart.ChartType=m_chartType
xl.ActiveChart.SetSourceDataxl.Sheets("Sheet1").Range("A1:"&Chr((iCountMod26) Asc("A"))&"2"),1
xl.ActiveChart.Location2,"Sheet1"
Withxl.ActiveChart
.HasTitle=True
.ChartTitle.Characters.Text=m_chartName
EndWith
xl.ActiveChart.ApplyDataLabels2,False,_
True,False
Withxl.Selection.Border
.Weight=2
.LineStyle=0
EndWith

xl.ActiveChart.PlotArea.Select
Withxl.Selection.Border
.Weight=xlHairline
.LineStyle=xlNone
EndWith
xl.Selection.Interior.ColorIndex=xlNone

xl.ActiveWindow.Visible=False

xl.DisplayAlerts=False

xl.ActiveChart.Exportm_fileName,FilterName:="GIF"
xl.Workbooks.Close
IfErr.Number<>0Then
foundErr=True
ErrMsg=ErrMsg
Err.Clear
EndIf
EndIf
Setxl=Nothing
EndSub
PrivateSubClass_Initialize()
iCount=0
foundErr=False
ErrMsg=""
m_chartType=-4102注釋:xl3DPie
注釋:54注釋:柱狀圖
EndSub
注釋:-------------------------------------------------------------------------------

  5.如果實現(xiàn)柱狀圖?
實際上前面的代碼已經(jīng)實現(xiàn)了柱狀圖的功能,只是缺省是餅圖功能。調(diào)用代碼改成如下:

Dimobj
Setobj=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里面調(diào)用該組件畫圖并顯示它需要注意的地方。
  (1)圖片必須生成在web目錄下。
  (2)asp程序運行在多用戶環(huán)境下,必須加鎖處理
  可以通過application實現(xiàn)。其邏輯如下:

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


總結(jié):
  COM里面調(diào)用office組件是一個十分有用的技巧,它的優(yōu)點是開發(fā)相對簡單,使用方便,適合企業(yè)級低訪問量,高業(yè)務(wù)要求的應(yīng)用,缺點是占用系統(tǒng)資源高。
  程序在Windows2000Server Office2000 VB6.0上測試通過。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宕昌县| 襄城县| 佳木斯市| 鲁甸县| 廊坊市| 昌吉市| 安岳县| 保德县| 普宁市| 镇沅| 运城市| 高密市| 织金县| 大同市| 宁海县| 托克托县| 双江| 固镇县| 长子县| 灌云县| 华亭县| 怀远县| 大余县| 呼和浩特市| 吴江市| 蒙阴县| 巴南区| 泽普县| 宁乡县| 三亚市| 水城县| 石林| 汉沽区| 循化| 太仓市| 东安县| 禄劝| 和田县| 饶河县| 汝南县| 贵定县|