在 Excel 2003 中导入 XML 映射、XML 列表和动态图表源(FROM MSDN)

在 Excel 2003 中导入 XML 映射、XML 列表和动态图表源

发布日期 : 11/12/2004 | 更新日期 : 11/12/2004

John R. Durant
Microsoft Corporation

适用于:
Microsoft ® Office Excel 2003

摘要: Web 文章 Web Queries and Dynamic Chart Data in Microsoft®Excel 2002 演示了如何使用 Web 查询将数据导入到 Microsoft®Excel 2002 中,然后创建一个可以动态响应源数据更改的图表。本文介绍 Microsoft® Office Excel 2003 如何取得相同的结果,而只使用少量的代码、较少的繁琐以及具有更大的潜力。与此同时,您将更深入地了解 Excel 2003 的 XML 功能,最重要的是 XML 映射、XML 列表、用于导入 XML 的新增例程,以及如何使用动态填充的 XML 列表作为图表的数据源。

本页内容

业务方案 业务方案
Excel 2003 中的 XML 映射 Excel 2003 中的 XML 映射
Excel 列表 Excel 列表
将 XML 数据导入 Excel 将 XML 数据导入 Excel
动态图表源 动态图表源
小结 小结

业务方案

假设某个销售经理会定期查看销售数据。她要指定一个日期范围,然后合计销售数据。特别是,她希望查看指定范围内按天总结的销售数字。她希望在看到原始数据的同时也可以看到显示指定日期范围内的总计销售趋势的图表。

针 对她的每个要求创建显式报表似乎不切实际。为此,必须有人详细审查输入数据,然后为组织内可能存在的大量方案创建独立的电子表格报表。这样的话,开发人员 和 IT 员工的负担就非常大,尤其是考虑到组织内并不只有一个部门的销售经理具有这种要求。更好的方法是使 Excel 电子表格可以自适应提供销售经理所需的各种报表,同时这些报表可以被其他部门的销售经理重复使用,并根据他们的相似需要进行调整。

本文说明如何使用 Microsoft® Office Excel 2003 中的功能来导入数据,以及将图表动态绑定到数据。我们还将对用户界面进行一些调整,以便用户可以配置报表的设置,然后导入报表的数据。图 1 显示了整体解决方案。

odc_xmllists01

图 1. 业务图形视图

Excel 2003 中的 XML 映射

Excel 2003 已经改进了其对操作原生 XML 的支持。Microsoft Excel 2002 添加了以 XML 词汇的格式打开和保存 Excel 电子表格的功能,这是专门为 Excel 设计的,称为“XML 电子表格”格式。该词汇遵循特定的架构,因此任何系统都能够以 XML 格式生成适用于 Excel 的电子表格,只要它符合该架构。如果 Excel 能够以相同的智能方式处理其他架构,就更好了。通过让用户和开发人员将他们自己的 XML 架构添加到工作簿中,Excel 2003 使这个想法成为可能。这将创建一个 XML 映射,您可以使用它来让数据在导入或导出时更加有意义。这样,您可以根据特定业务的自定义 XML 词汇(或架构)来导入数据,然后使用相同的 XML 词汇写回数据。

总而言之,利用新增的 XML 映射功能,您可以将 XML 架构与工作簿相关联。这使您能够更为简单和可靠地在 Excel 中导入和导出数据。这意味着,无论是电子表格内部还是外部的数据都对 Excel 和用户的特定任务具有更重大的意义。因为 Excel 2003 中的电子表格可以利用基本的 XML 结构进行设计,所以可以在用户桌面和存储在服务器上的数据之间创建更适合的连接。在我们的解决方案中,我们将为一个报表导入数据,但是由于使用 XML 映射,数据还要符合架构。

XML 映射

图 2 显示了工作簿中这些 XML 映射或架构中的一个。当您将 XML 架构添加到工作簿时,Excel 会创建一个称为 XML 映射的对象。这些 XML 映射可让您将单元格或范围映射到 XML 架构中的元素。在导入或导出 XML 数据时,Excel 还使用这些映射将映射范围的内容与架构中的元素联系在一起。工作簿可以包含许多 XML 映射,并且每个映射都独立于所有其他映射。但是,多个映射可以引用同一基础架构。

正如您在图 2 中看到的那样,Excel 显示的内容是数据应该在电子表格中结构化的方式的层次表示。然后,您可以将表示中的不同元素映射到电子表格的实际单元格中。架构可以仅在层次结构上限制数 据,也可以进一步限制数据类型以及您可以在电子表格中提取或导入的数据的其他方面。

odc_xmllists02

图 2. 工作簿的 XML 映射

要查看在实际工作簿中这种方式的映射是如何发生的,请参见图 3。XML 映射中有两个关键元素,一个用于 OrderDay ,另一个用于 Sales 。当您从 XML Structure 窗格的映射中选择元素时,Excel 会在工作表本身中选择各自的单元格范围。类似地,选择该范围中的单元格会导致 Excel 从 Task Pane 的映射中选择相应的元素。

odc_xmllists03

图 3. 元素和单元格之间的映射
添加 XML 映射

在使用 XML 映射之前,您必须将其添加到工作簿中。

使用用户界面将 XML 映射添加到工作簿中
  1. Data 菜单上,指向 XML ,然后单击 XML Source

  2. XML Source 窗格上,单击 XML Maps... ,然后单击 Add

  3. 选择有效的 XML、XSD 或 UDC 文件,然后单击 Open

  4. 单击 OK 以添加该 XML 映射。

将单元格映射到 XML 映射中的元素非常简单,方法是突出显示单元格或单元格范围,然后将映射中的元素拖动到选定的单元格中。但是,您还可以通过编程方式执行这些映射,即使在从外部源导入数据(在业务解决方案中阐述)时也是如此。

在执行导入例程时,您可以指定现有的 XML 映射。这可让您重复使用现有的 XML 映射。相反,如果在导入 XML 数据时没有指定 XML 映射,则 Excel 将为您生成一个映射,以有效地将导入的数据元素映射到 XML 映射中的元素。

我 们的业务解决方案可以从同一源中重复地导入数据,每次使用不同的参数。例如,第一次用户可能想要得到从 2000 年 7 月 1 日到 2000 年 7 月 15 日的报表数据,用户在第二次请求报表时,可能希望查看该月后 16 天的情况。因为 Excel 可重复导入数据,所以强制 Excel 每次都重新映射单元格没有任何意义。因此,您可以应用现有的映射,并且只会改写所映射单元格中的数据。

令该解决方案更易于开发的一个原因在于 Excel 列表功能的优势。该功能与 XML 映射技术结合在一起,使得 Excel 可以将映射的 XML 组织到组中,并且更加智能地对其进行处理。

Excel 列表

您 可以使用列表(图 4)在 Excel 电子表格内将数据组织到组中,以使它们更加有意义。如果仔细查看这些单元格,您就会发现它们周围有一个蓝色的边框。这不是格式样式,而是 Excel 放在单元格周围的自动边框,它标识为列表。(如果您感到迷惑,可以告诉 Excel 不要在处于非活动状态的列表周围放置边框。)因为列表只是电子表格中的一组数据,所以在单个电子表格中可以有很多列表,并且您可以将每个列表看作一个整体 单元。在 Excel 2003 中,还有一种称为 XML 列表的列表。XML 列表与较常见的列表类型的不同之处在于,除了作为电子表格内的数据列表或数据组以外,该列表还包含附加信息或者与其关联的元数据,所有这些都以 XML 的形式清楚地表示出来。

odc_xmllists04

图 4. Excel 工作表中的列表

列表包括独特的列、列标题以及一个用于添加更多数据的插入行。如果看一下图 4 中靠近底部的部分,您就会发现一个表示插入行位置的大星号。您还可以看到列标题。在 XML 列表中,列与 XML 架构元素相关联。为此,请隐式或显式地设置列的 XPath 属性。该业务解决方案使用已经准备就绪的 XML 映射隐式地设置了该属性。

我们的业务解决方案可以在用户单击某个按钮时,将数据动态地加载到 XML 列表中。但是,该列表必须已经准备就绪,以便操作可以成功运行。要使其运行,请先添加列表。

将列表添加到工作表中

  1. 选择一个位于 XML 列表左上角的单元格。

  2. XML Structure 窗格中选择根元素,以在 XML 映射中突出显示它。

  3. 将突出显示的根元素从 XML Structure 窗格拖动到选定的单元格中。

您应该看到类似于图 5 中所示的列表。

odc_xmllists05

图 5. 新 XML 列表的示例

您 可以通过以这种方式有意地映射单元格来创建 XML 列表,或者让 Excel 为您创建基于用户活动的列表 。例如,当拖动到工作表上的一个或多个元素是重复元素时,Excel 会自动创建 XML 列表。在我们的业务解决方案中,XML 列表已提前创建,以便在导入它时可以用数据填充。

将 XML 数据导入 Excel

有许多方法可以将 XML 导入到 Excel 电子表格中。您可以使用 Workbook 类的三个主要方法将 XML 导入 Excel:

  • OpenXML 方法

  • XMLImport 方法

  • XMLImportXML 方法

在将文件中的数据加载到工作簿时,您可以使用 OpenXML 方法。这是与使用 File 菜单中的 Open 在 Excel 中打开 XML 文件等价的编程方式。下面的表格列出了在 Excel 中打开 XML 文件的不同选项以及它们的用途。

选项

用途

xlXmlLoadImportToList

将源文件中的数据加载到 XML 列表中

xlXmlLoadMapXml

创建基于源文件数据的 XML 映射

xlXmlLoadOpenXml

将源文件中的数据加载为新的工作簿

xlXmlLoadPromptUser

用对话框提示用户选择其他三个选项中的一个

导入 XML 的不同之处在于,Excel 不是将 XML 文件作为单独的工作簿打开,而是将数据放在现有的工作簿中,它会创建一个工作表或在现有的工作表中创建一个 XML 列表。XMLImport 方法可让您将 URL 目标作为 XML 的源,这与 Excel 2002 和更早版本中 Web 查询使用 QueryTable 对象的方式类似。该方法接受四个参数:

参数

说明

URL

引用宿主 XML 数据的 URL 目标的字符串(必需)。

XMLMap

XMLMap 类的一个实例。换言之,如果工作簿已经包含了一个 XML 映射,则您可以使用该映射。如果您希望 Excel 在导入发生时自动创建一个映射,那么将 Nothing 作为参数传递(必需)。

Overwrite

指示新导入的数据是否应该覆盖现有数据的布尔值(可选)。

Destination

对工作表中导入数据所在的单元格范围的引用(可选)。

要使用现有的 XML 映射,请不要传递 Destination 参数。

最后一个方法 XMLImportXML 类似于 XMLImport ,不同之处在于,该方法不是基于 URL 导入数据,而是将实际的数据字符串作为其第一个参数。所有其他参数都是相同的。

导入数据

我们的业务解决方案收集用户输入来编译数据的目标 URL。当用户单击按钮时(在此例中,工作表中嵌入了一个按钮),该事件过程就会运行。数据导入就是在该过程中发生的。因为 ImportXML 方法包含一个要求对 XMLMap 对象的引用的参数,所以我们按以下方式来获取一个引用:

  Dim xmpCustomMap as XmlMap
  Set xmpCustomMap = ActiveWorkbook.XmlMaps("ROOT_Map")
Then, we call the ImportXML method this way:
  ActiveWorkbook.XmlImport URL:= _
  & "http://localhost/NorthWindWeb/" _  
  & "sales.xml?BeginDate=07/01/2000&EndDate=07/14/2000, _
  ImportMap:=xmpCustomMap, Overwrite:=True

在此例中,URL 是硬编码的,因此该方法非常容易理解。但是,该业务解决方案在独立的过程中构建 URL,以便它可以基于用户输入和工作簿中的设置来构造。然后,Excel 将生成的 URL 作为一个字符串传回,以便它可以用作 ImportXML 方法中的参数。实际的业务解决方案应该使用错误处理以及其他编程最佳操作。

从目标 URL 导入数据后,Excel 将其放在映射到 XML 映射的 XML 列表中。因为在调用 ImportXML 方法时,您指定了现有的 XML 映射,所以不需要担心将生成的数据放在何处,也不需要担心在 Excel 将这些设置配置为 XML 映射过程的组成部分时,数据在电子表格的上下文中代表什么意思。

动态图表源

仅 查看某些基本数据只是 Excel 总体乐趣的一部分。提供数据视觉表示的精美图表是一个附加的优势。我们的业务解决方案提供了其源为与 XML 映射相关联的 XML 列表的图表,该映射包含动态加载到 XML 列表中的数据。用户的利益在于,作为报表更改的条件,XML 列表中的数据在导入过程后进行更改,图表也是如此。

将图表添加到工作簿中

  1. Insert 菜单上,单击 Chart

  2. 使用“图表向导”,按照提示操作并选择 Line 图表。

  3. 单击 Next 以指定数据的源,或单击 Finish 在工作表上放置一个空白图表。

在添加图表后,您必须将 XML 列表配置为数据源,这不必使用“图表向导”对话框来完成。您可以用简单的方法来实现它。通过立即单击 Finish ,可以生成一个空白图表,因为它尚未包含任何数据。

将图表的源链接到 XML 列表

  1. 将光标悬停在 XML 列表上以选择该 XML 列表。

  2. 单击 XML 列表的边框,以将其拖放到图表上。屏幕上将出现一个 Paste Special 对话框。

  3. 单击 OK 以接受默认设置,然后将 XML 列表中的数据添加到图表中。

完成这些步骤之后,所生成的图表应该类似于图 6 中所示的图表。

odc_xmllists06

图 6. 带有 XML 列表的最终图表的视图

您 可以将图表类型更改为折线图以外的其他类型,例如,条形图、饼图、圆环图(这些也很常用)。您还可以将图表的格式更改为默认格式以外的其他格式。但是,图 表的源数据可以保持相同。在 Excel 用新数据重新填充 XML 列表时,图表会相应地调整其显示,因为它的源是动态加载的 XML 列表。

作 为附加的优势,用户可以将他们自己的数据直接添加到电子表格中,然后观察图表如何反映他们的更改。因为 XML 列表包含一个插入点,所以用户可以在列表中单击并根据需要添加新的数据行。在用户添加新行时,图表会自动更新。这不仅使用户能够从不变的源数据中创建报 表,还可以灵活地添加他们自己的数据。通过编程方式,您可以从完全独立的源中添加数据,然后将其追加到 XML 列表数据中。这是与直接在单元格中键入来添加更多数据等价的编程方式。结果就是一个系统,它可让您从潜在的多个源中聚集数据,并将数据置于电子表格中以便 进行更仔细的分析。

小结

Microsoft Office Excel 2003 中的改进功能使得使用原生 XML 源数据变得更加简单。您可以将原始 XML 导入到电子表格中、将其放在特定的位置以及动态更新图表的数据。XML 映射的功能在于,它们可让您将带有元素和属性的分层 XML 架构映射到电子表格的特定范围。然后,这些范围可基于以 XML 映射为基础的架构变得更有意义。通过使 Excel 能够按工作表本身的组来组织单元格范围,XML 列表还使数据变得更有意义。您可以独立地操作这些组(称为列表更为恰当),然后以编程方式引用它们。

此外,Excel 2003 还包括用于导入 XML 的新例程,这可让您利用其他功能的优势。您可以使用 XML 映射技术将新导入的数据发送到现有的 XML 列表中。导入的数据可以覆盖现有数据或追加到现有数据。

最 后,您可以将 XML 列表指定为图表的数据源。通过这种方式,一旦 XML 列表中的数据更改,就会在图表中显示出来。这些主要功能(XML 映射、XML 列表、XML 导入以及作为图表源的 XML 列表)可以利用现有数据完成更多工作,并可让您利用 Excel 在企业中有更深、更远的发展。

转到原英文页面

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值