Foxtable(狐表)用户栏目专家坐堂 → 在foxtable中直接生成Excel图表


  共有14914人关注过本帖树形打印复制链接

主题:在foxtable中直接生成Excel图表

帅哥哟,离线,有人找我吗?
reachtone
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
在foxtable中直接生成Excel图表  发帖心情 Post By:2010/7/7 14:49:00 [显示全部帖子]

    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


[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2010/7/9 10:02:00 [显示全部帖子]

以下是引用czy在2010-7-8 23:12:00的发言:
想学好这个看来不容易的,比如双图表,图表的标示、各种标题等等。

是的,属性和方法都看了好几天了,感觉蛮复杂的。

其实,只要找到以下几项的设置方法就好办了:

1、Chart的大小(高宽属性)

2、在指定位置显示Chart

3、如何指定几个数据列来生成图表?

4、类似于foxtable中的图系怎么表示?包括标注、颜色、是否显示等等。

5、标题是否显示属性已经有了,但怎么定义ChartTitle呢?


 回到顶部