Excel协调共生:基于网页的交互式图表

SAP公司的水晶易表Xcelsius软件也是基于Flash格式的图表制作工具,其具有非常灵活的交互功能,和Excel无缝结合。同时其有很强大的仪表板整合功能,但在处理大数据及图表样式的自定义方面受其模版影响,并不出彩。Swiff Chart也包括一个基于网页的开发版本,该版本数据和图表分离,可以利用网页编程实现交互。这类基于编程的Flash图表,在互联网中有种类繁多的应用,这和Excel已经没有太多的关联,有兴趣的读者请使用搜索引擎去检索。

基于Microsoft skydrive云存储的Excel Web App在交互方面几乎没有实用价值,目前不支持任何交互控件,包括数据有效性的使用。但笔者发现,这个应用的函数功能异常强大,配合函数和数据表格的筛选可以实现图表简单交互。

知识扩展


笔者在本书的主页提供了图16.2-2案例文档的Web交互版本,详见以下网址:

http://www.visualvivid.com/web-based-excel-dynamic-chart.html


Microsoft Windows SharePoint的PerformancePoint仪表板部件可以在企业的SharePoint站点提供丰富的交互式图表,该应用的初衷即是针对BI仪表板而设计,相比Excel不但强大,而且专业。Microsoft提供了一个独立的仪表板设计器来配合该部件的使用,如图16.3-4所示:

基于PerformancePoint仪表板设计器

图16.3-4 基于PerformancePoint仪表板设计器

借助微软的PowerPivot Excel插件,通过获取外部数据库数据,使用数据透视表或图来展示和分析数据,并发布到SharePoint站点,来实现BI仪表板的Web应用。图16.3-5是一个基于SharePoint的仪表板案例。

基于SharePoint站点的BI仪表板

图16.3-5 基于SharePoint站点的BI仪表板

知识扩展


PowerPivot Excel插件的下载地址为:

http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyId=e081c894-e4ab-42df-8c87-4b99c1f3c49b&displaylang=zh-cn


示例文档


本书所附16.3的两个文件夹中包含了本节所涉及的案例。

1)16.3-1文件夹是基于微软skydrive云存储的Excel Web App应用,.xlsx文档为skydrive上存储的原始文档,.html为嵌入Excel Web App应用的网页文档。

2)16.3-2文件夹是基于Swiff Chart软件的应用,其中:.csv为Swiff Chart原始数据档;.sfc为Swiff Chart的原始文档;.swf为Flash图表导出;.html为Flash嵌入文档;.xls为嵌入Flash的Excel文档;.ppt为嵌入Flash的PowerPoint文档。

Excel协调共生:图片导出

虽然在其他Microsoft Office系列软件中,可以将Excel中复制的图表,使用选择性粘贴,转换为图片形式来使用。但在非Microsoft Office系列软件中,可能需要使用图片格式的图表,问题是Excel并不支持将图表直接导出为图片格式,这就需要我们使用一些变通的方法来实现图片导出。

以网页保存形式导出

Excel支持将文档保存为普通网页(htm、html)和单文件(mht、mhtml)格式,如图16.2-1所示,其中当保存为普通网页格式时,我们可在保存目录的同文档名文件夹中获得图表图片。在Excel 2003及其以前版本中,可获得的图片是gif格式;在Excel 2007/2010中,可获得的图片是png格式。

Excel 2003另存为网页对话框

图16.2-1 Excel 2003另存为网页对话框

借助其他软件导出

1.借助PowerPoint导出

PowerPoint软件支持将图片另存为多种图片格式,借助PowerPoint软件可实现将图表转换为本地图片。在Excel中选中图表复制,在PowerPoint软件中选择性粘贴为图片(增强性图元文件),然后单击鼠标右键>另存为图片。在另存对话框中,可选的类型有jpg、gif、bmp等种类繁多的格式,如果使用PowerPoint 2010,则保存格式更是多样。

2.借助Microsoft Office Picture Manager导出

Microsoft Office Picture Manager软件是在Office正常安装下,即被默认安装的图片管理软件,可完成图片的简单管理和编辑。该软件可直接提取剪切板的图片,将其保存为本地图片。在Excel中,按住键盘Ctrl键,选中图表复制,并选择性粘贴为图片(增强性图元文件),将这个粘贴图片剪切,然后在Microsoft Office Picture Manager中粘贴即可获得png格式图表。

3.借助其他软件导出

可借助pdf打印机或另存为pdf格式的文档,当然根据版本的不同,可能需要安装相应的软件,然后将pdf文件另存为图片格式来实现。Microsoft Office 2003中包含了一个Microsoft Office Document Imaging软件,可将Excel文档保存为tif或tiff的图片格式。除此之外,也可使用屏幕截图软件来获得图片,这类软件有很多,感兴趣的读者请搜索互联网。

借助VBA导出

其实不论Excel版本,均支持将图表或矢量图形导出为位图格式的图片形式,但遗憾的是Excel并未提供相应的菜单按钮,这就需要我们使用VBA来处理这样的需求。使用VBA来导出位图格式的图片相当简单,只需使用图表的Export方法即可。但该方法并不支持emf格式的矢量图片,所以在图16.2-2案例中,emf格式的图片借助PowerPoint来完成导出,如果没有安装PowerPoint软件,则该方法无效。

Excel 2003另存为网页对话框[资料来源:纽约时报网站]

图16.2-2 Excel 2003另存为网页对话框[资料来源:纽约时报网站]


以下是图片导出的VBA代码,和图16.2-2案例中的“图表输出”按钮关联,输出图表必须要在选中前提下。如果读者对此感兴趣,可以在此基础上进行修改和扩充。


程序代码:16.2-1 模块1的公有变量申明

Excel协调共生:嵌入式应用

除Excel外,在Microsoft Office系列软件中,均可插入Excel图表对象,这其实是采用了将Excel工作簿嵌入到其他软件中显示的OLE技术,可调用Excel直接编辑,这为我们将Excel图表跨软件显示和编辑带来了极大的方便。

插入Excel图表对象

无论Microsoft Office系列软件的版本及软件,在“插入>对象”中,我们可以在“新建”选项卡中选择“Microsoft Excel图表”对象,确定后即可调用Excel来创建一个Excel图表(Excel除外)。亦可在“由文件创建”选项卡中选择一个已经包含Excel图表的工作簿,嵌入到相应的程序文档中。如图16.1-1所示(:不同版本,对话框界面会有少许差异,但操作及内容完全相同)。

图16.1-1 Microsoft Office软件的对象插入对话框

如果要将Excel图表通过该方式嵌入到其他软件,建议将图表置于Excel的图表工作表中,这样可以非常方便地控制图表的显示窗口。当对象插入后,我们即可使用“单击鼠标右键>图表对象>[编辑]”来进行图表的直接编辑,只要熟悉Excel图表制作,在其他Microsoft Office系列软件中操作和在Excel中没有两样,图16.1-2的案例演示了在PowerPoint 2010中嵌入Excel图表。如果使用图表对象的[打开]按钮,则可在Excel中打开进行编辑,该方法可以将嵌入的工作簿另存到磁盘,图表对象的[转换]按钮对于Excel图表则无实质意义。

PowerPoint 2010中嵌入Excel图表的演示

图16.1-2 PowerPoint 2010中嵌入Excel图表的演示

一般直接复制Excel图表并粘贴到同版本的PowerPoint软件中时,Office也采用对象嵌入方式进行粘贴,且此时,展示图表复制到了嵌入工作簿对象的图表工作表中。同样的操作,在其他Microsoft Office系列软件中,视版本会有不同的处理机制,在Microsoft Office 2007和2010系列软件中,Excel图表已经变为一个公共组件,可以被其他大多数的Microsoft Office程序所支持。

VBA操作Excel图表对象

一般不建议将动态交互式Excel图表嵌入到其他软件中,因为Excel的所有交互将不再起作用,这种嵌入技术仅是一个Excel图表的展示窗口而已。要实现交互就必须使用VBA来操作这些OLE对象,这种操作通过后台对Excel的调用来完成。此方法的交互触发控件需要放在嵌入图表的宿主文档中,而不应该放在嵌入的Excel工作簿中。

这类应用仅在幻灯演示中有一定使用价值,图16.1-3的案例是一个在PowerPoint中嵌入Excel图表,配合窗体控件实现的交互式幻灯演示图表。实现过程主要借助VBA完成,涉及幻灯片的事件操作和OLE对象编辑。其中VBA处理幻灯片事件借助了类模块来实现,目的是关闭Excel软件,并释放Excel对象的后台调用,在幻灯演示结束和关闭演示文稿时触发事件。以下是制作步骤:

PowerPoint中嵌入Excel图表制作的交互式幻灯演示

图16.1-3 PowerPoint中嵌入Excel图表制作的交互式幻灯演示

1.在幻灯片中插入已经制作完成的Excel交互式图表工作簿对象,调整好显示界面窗口的大小。

2.在幻灯片中插入以下窗体控件:1个下拉列表框、两组选项按钮。每组选项按钮各两个,并使用置于底层的矩形自选图形区隔。在选项按钮属性对话框中,分别修改Caption属性为“2009”、“2010”、“昆山”、“东莞”。

3.按下键盘Alt+F11组合键打开VBE编辑器,插入一个模块,并键入以下代码:


程序代码:16.1-1 模块1的公有变量申明


4.选中下拉列表框控件,单击鼠标右键>查看代码,激活VBE编辑器,在Slide1中键入以下代码:


程序代码:16.1-2 Slide1的InitializeSlidel初始化过程


:此处使用循环遍历OLE对象名称的方法是因为,不同的电脑所显示的默认对象名称会出现差异,如果是使用PowerPoint 2007及其以上版本,建议在“开始>选择>选择窗格”中将对象名称改为固定名称。


程序代码:16.1-3 Slide1的ComboBox1_Change下拉列表更改


程序代码:16.1-4 Slide1的ComboBox1_GotFocus下拉列表获得焦点


程序代码:16.1-5 Slide1的OptionButton1_Click选项按钮1被选中


程序代码:16.1-6 Slide1的OptionButton1_GotFocus选项按钮1获得焦点


程序代码:16.1-7 Slide1的OptionButton2_Click选项按钮2被选中


程序代码:16.1-8 Slide1的OptionButton2_GotFocus选项按钮2获得焦点


程序代码:16.1-9 Slide1的OptionButton3_Click选项按钮3被选中


程序代码:16.1-10 Slide1的OptionButton3_GotFocus选项按钮3获得焦点


程序代码:16.1-11 Slide1的OptionButton4_Click选项按钮4被选中


程序代码:16.1-12 Slide1的OptionButton4_GotFocus选项按钮4获得焦点


5.在VBE编辑器中插入一个类模块“EventClassModule”,并键入以下代码:


程序代码:16.1-13 EventClassModule的App_PresentationClose幻灯文档关闭事件


程序代码:16.1-14 幻灯片结束放映事件


程序代码:16.1-15 彻底释放Excel对象


:若不及时释放Excel对象,在演示结束,再次演示时,交互效果将无法实现。

Microsoft Graph图表对象

当安装Office系列软件时在“Office工具”中勾选了“Microsoft Graph”(正常而言,该选项默认选中),则可在Office软件的安装目录下找到程序,该对象完全是一个OLE程序,无法直接执行,必须在其宿主程序中执行。在Microsoft Office系列软件2007版本以前,单击PowerPoint菜单的按钮,所插入图表为Microsoft Graph图表对象。

在Microsoft Office系列软件2007和2010中,若没有安装Excel,将会插入Microsoft Graph图表,这和通过“插入>对象”命令插入一个“Microsoft Graph图表”没有两样,该程序的图表制作及设置和Excel 2003几乎完全一致,唯一不同的是其使用自带的数据表来存储数据。虽然这个程序相较Excel图表要简单和便于操作,但使用该程序来制作图表,相较Excel还是有一定局限,同时该程序制作的图表也无法转换为Excel图表。该程序的界面如图16.1-4所示:

在PowerPoint 2010中嵌入Microsoft Graph图表

图16.1-4 在PowerPoint 2010中嵌入Microsoft Graph图表

在默认状态下,插入Microsoft Graph图表会创建一个显示示例数据的示例图表,需要双击嵌入的图表对象,向Graph数据工作表中逐个单元格手动输入实际数据,包括行标题和列标题。也可以在Graph对象为激活状态下,在“编辑”菜单上单击“导入文件”,在“导入数据”对话框中选择文件,把Excel工作簿或者其他文件的数据导入到Microsoft Graph图表数据表中。

知识扩展


推荐在PowerPoint中使用的一个图表插件:

Think-cell是一个基于Microsoft Graph的图表插件,可生成专业的咨询图表,配色和图表操作都很优秀。该软件可在PowerPoint和Excel中使用,以下是链接地址:

http://www.think-cell.com/