|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
当我第一次使用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里面调用。 下面编写我们的组件。 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 注释:------------------------------------------------------------------------------- 假如实现柱状图? 实际上前面的代码已经实现了柱状图的功能,只是缺省是饼图功能。调用代码改成如下: 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 在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 上测试通过。 返回类别: 教程 上一教程: 用ASP统计用户在站点的停留时间(1) 下一教程: 数组数据排序的程序例子 您可以阅读与"在VB组件内调用EXCEL2000实现GIF饼图"相关的教程: · 调用DIRECTX的组件实现的时钟 · 利用HTTP组件来实现页面打印的一种方式 · 用VBSCRIPT实现对WINDOWS注册表的修改 · 使用XML+VBS技术在ASP中实现报表的打印 · 手把手教你使用VB来创建ASP组件(6) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |