以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  在foxtable中直接生成Excel图表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=7542)

--  作者:reachtone
--  发布时间:2010/7/7 14:49:00
--  在foxtable中直接生成Excel图表

    FoxTable目前的图表控件,生成的图表都是以图片格式嵌入Excel的,这就给后期的再处理带来一些不便,比如:标注不能拖拽,手工修改表中的数据后无法自动更新,等等。加上有些用户的习惯问题,可能也不太喜欢这种类型的图表。为满足客户需求,前期我是通过Excel的VBA来生成excel类型的图表的,很繁琐。后来在lxl版主的热心帮助下,现通过引用第三方dll的方式,更好的解决了此问题。

    实现方法如下:

    1、将Microsoft.Office.Interop.Excel.dll拷贝到foxtable所在目录
    2、添加对这个文件的引用
    3、添加命名空间和别名:
         Microsoft.Office.Interop.Excel(MSExcel)
    4、在命令窗口执行以下代码:
   Dim app As New MSExcel.Application()
   app.Visible = True
   Dim book As MSExcel.Workbook = app.Workbooks.Open("D:\\Report.xls")      \'指定excel文件
   Dim sht As MSExcel.Worksheet = book.Sheets("同期对比")                  \'指定工作表
   Dim cht As MSExcel.Chart = app.Charts.Add()                             \'添加一个Chart
   cht.ChartType = MSExcel.XlChartType.xlLineMarkers                       \'指定Chart类型
   cht.SetSourceData(sht.Range("A3", "D28"), MSExcel.XlRowCol.xlColumns)   \'指定数据区
   cht.Location(MSExcel.XlChartLocation.xlLocationAsObject, "同期对比")    \'将Chart移动到工作表

 

    本示例用到的dll和excel示例文件在这里:

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:调用excel.rar


--  作者:菜鸟foxtable
--  发布时间:2010/7/7 14:52:00
--  

好东西,收藏。顶。


--  作者:reachtone
--  发布时间:2010/7/7 14:54:00
--  

附件中的dll包含了excel中的全部功能,其ChartType属性包含了多种类型的图表,太丰富了:

xl3DArea
xl3DAreaStacked
xl3DAreaStacked100
xl3DBarClustered
xl3DBarStacked
xl3DBarStacked100
xl3DColumn
xl3DColumnClustered
xl3DColumnStacked
xl3DColumnStacked100
xl3DLine
xl3DPie
xl3DPieExploded
xlArea
xlAreaStacked
xlAreaStacked100
xlBarClustered
xlBarOfPie
xlBarStacked
xlBarStacked100
xlBubble
xlBubble3DEffect
xlColumnClustered
xlColumnStacked
xlColumnStacked100
xlConeBarClustered
xlConeBarStacked
xlConeBarStacked100
xlConeCol
xlConeColClustered
xlConeColStacked
xlConeColStacked100
xlCylinderBarClustered
xlCylinderBarStacked
xlCylinderBarStacked100
xlCylinderCol
xlCylinderColClustered
xlCylinderColStacked
xlCylinderColStacked100
xlDoughnut
xlDoughnutExploded
xlLine
xlLineMarkers
xlLineMarkersStacked
xlLineMarkersStacked100
xlLineStacked
xlLineStacked100
xlPie
xlPieExploded
xlPieOfPie
xlPyramidBarClustered
xlPyramidBarStacked
xlPyramidBarStacked100
xlPyramidCol
xlPyramidColClustered
xlPyramidColStacked
xlPyramidColStacked100
xlRadar
xlRadarFilled
xlRadarMarkers
xlStockHLC
xlStockOHLC
xlStockVHLC
xlStockVOHLC
xlSurface
xlSurfaceTopView
xlSurfaceTopViewWireframe
xlSurfaceWireframe
xlXYScatter
xlXYScatterLines
xlXYScatterLinesNoMarkers
xlXYScatterSmooth
xlXYScatterSmoothNoMarkers


 

关于Chart的所有属性和方法,这里有详细介绍:
http://msdn.microsoft.com/zh-cn/library/microsoft.office.tools.excel.chart_members(VS.89).aspx

建议老六把这个dll集成到foxtable中,它本身就是微软的东西,正本清源。最好能给我们提供一些函数以便直接调用,也能在excel报表的指定位置直接生成这些图表。

还有,lxl版主之前介绍过直接预览excel的方法,它应该也是调用的这个dll,建议把这个功能也内嵌到foxtable中,很实用。

[此贴子已经被作者于2010-7-7 14:56:57编辑过]

--  作者:mr725
--  发布时间:2010/7/7 15:46:00
--  
真好啊···
--  作者:blackzhu
--  发布时间:2010/7/7 16:30:00
--  
真正的高手
--  作者:czy
--  发布时间:2010/7/7 20:18:00
--  

好东西!不顶就对不起两位怎么主了图片点击可在新窗口打开查看


--  作者:pyh6918
--  发布时间:2010/7/7 21:55:00
--  
狂顶,如能整合到Foxtable中那太好了!
--  作者:ylm
--  发布时间:2010/7/7 21:58:00
--  
 好东东,顶!
--  作者:狐狸爸爸
--  发布时间:2010/7/7 22:04:00
--  
呵呵,大家自学吧,这个不好集成的。
--  作者:擎天柱
--  发布时间:2010/7/7 22:44:00
--  
先进就是先进,崇敬中!