Applies ToMicrosoft 365 专属 Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016

要在 Excel 中导入导出 XML 数据,可使用 XML 映射,它会将 XML 元素与单元格中的数据进行关联来获取你需要的结果。 要创建该映射,需要具有 XML 架构文件 (.xsd) 和 XML 数据文件 (.xml)。 创建 XML 映射后,可按所需的方式映射 XML 元素。

提示: 要详细了解如何结合使用 XML 和 Excel,请查看这篇 Excel 中的 XML 概述

查找或创建 XML 架构和 XML 数据文件

如果其他数据库或应用程序已创建 XML 架构或 XML 数据文件,则表示它们可能已可供你使用。 例如,你可能有一个将数据导出到这些 XML 文件格式的业务线应用程序,有一个应用这些 XML 文件的商业网站或 Web 服务,或者有一个由 IT 部门开发的、可自动创建这些 XML 文件的自定义应用程序。

如果你没有必需的 XML 文件,可通过将要使用的数据保存为文本文件来进行创建。 然后,可使用 Access 和 Excel 将文本文件转换为所需的 XML 文件。 操作方式如下:

Access

  1. 导入要转换的文本文件,再将它链接到新表中。

    1. 单击“文件”>“打开”。

    2. 在“打开”对话框中,选择要在其中创建新表的数据库并将其打开。

    3. 依次单击“外部数据”和“文本文件”,再按照每个步骤的说明操作,确保将表链接到文本文件中。

      Access 将创建新表并在导航窗格中显示该表。

  2. 将链接表中的数据导出到 XML 数据文件和 XML 架构文件中。

    1. 单击“外部数据”>“XML 文件”(位于“导出”组中)。

    2. 在“导出 - XML 文件”对话框中,指定文件名和格式,然后单击“确定”。

  3. 退出 Access。

Excel

  1. 根据从 Access 导出的 XML 架构文件创建 XML 映射

    如果出现“多个根目录”对话框,请确保选择 dataroot,以便可创建 XML 表格。

  2. 通过映射 dataroot 元素来创建 XML 表格。 有关详细信息,请查看映射 XML 元素

  3. 导入从 Access 导出的 XML 文件。

注意: 

  • 很多类型的 XML 架构元素构造都不受 Excel 支持。 下列 XML 架构元素构造不可导入到 Excel 中:

  • <any>    此元素允许包括架构未声明的元素。

  • <anyAttribute>    此元素允许包括架构未声明的属性。

  • 递归结构    递归结构的一个常见示例是由员工和经理构成的层次结构,其中多个层嵌套了相同的 XML 元素。 Excel 仅支持只有一个级别的递归结构。

  • 抽象元素    这些元素应在架构中声明,但从不用作元素。 抽象元素依赖于要替代抽象元素的其他元素。

  • 置换组    这些组允许在引用了其他元素的任何情况下交换元素。 元素通过 <substitutionGroup> 属性指示它是另一个元素的替换组的成员。

  • 混合内容    此内容通过在复杂类型定义中使用 mixed="true" 进行声明。 Excel 不支持复杂类型的简单内容,但支持该复杂类型中定义的子标记和属性。

使用示例 XML 架构和 XML 数据文件

以下示例数据具有基本 XML 元素和结构;如果你没有 XML 文件或者用来创建 XML 文件的文本文件,则可使用这些元素和结构来测试 XML 映射情况。 下面介绍可如何将此示例数据保存到计算机上的文件中:

  1. 选择要复制的文件的示例文本,然后按 Ctrl+C。

  2. 启动记事本,再按 Ctrl+V 粘贴示例文本。

  3. 按 Ctrl+S,使用所复制的示例数据的文件名和扩展名来保存文件。

  4. 在记事本中按 Ctrl+N,然后重复步骤 1-3,为第二个示例文本创建一个文件。

  5. 退出记事本。

示例 XML 数据 (Expenses.xml)

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Root>
  <EmployeeInfo>
    <Name>Jane Winston</Name>
    <Date>2001-01-01</Date>
    <Code>0001</Code>
  </EmployeeInfo>
  <ExpenseItem>
    <Date>2001-01-01</Date>
    <Description>Airfare</Description>
    <Amount>500.34</Amount>
  </ExpenseItem>
  <ExpenseItem>
    <Date>2001-01-01</Date>
    <Description>Hotel</Description>
    <Amount>200</Amount>
  </ExpenseItem>
  <ExpenseItem>
    <Date>2001-01-01</Date>
    <Description>Taxi Fare</Description>
    <Amount>100.00</Amount>
  </ExpenseItem>
  <ExpenseItem>
    <Date>2001-01-01</Date>
    <Description>Long Distance Phone Charges</Description>
    <Amount>57.89</Amount>
  </ExpenseItem>
  <ExpenseItem>
    <Date>2001-01-01</Date>
    <Description>Food</Description>
    <Amount>82.19</Amount>
  </ExpenseItem>
  <ExpenseItem>
    <Date>2001-01-02</Date>
    <Description>Food</Description>
    <Amount>17.89</Amount>
  </ExpenseItem>
  <ExpenseItem>
    <Date>2001-01-02</Date>
    <Description>Personal Items</Description>
    <Amount>32.54</Amount>
  </ExpenseItem>
  <ExpenseItem>
    <Date>2001-01-03</Date>
    <Description>Taxi Fare</Description>
    <Amount>75.00</Amount>
  </ExpenseItem>
  <ExpenseItem>
    <Date>2001-01-03</Date>
    <Description>Food</Description>
    <Amount>36.45</Amount>
  </ExpenseItem>
  <ExpenseItem>
    <Date>2001-01-03</Date>
    <Description>New Suit</Description>
    <Amount>750.00</Amount>
  </ExpenseItem>
</Root>

示例 XML 架构 (Expenses.xsd)

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Root">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element minOccurs="0" maxOccurs="1" name="EmployeeInfo">
          <xsd:complexType>
            <xsd:all>
              <xsd:element minOccurs="0" maxOccurs="1" name="Name" />
              <xsd:element minOccurs="0" maxOccurs="1" name="Date" />
              <xsd:element minOccurs="0" maxOccurs="1" name="Code" />
            </xsd:all>
          </xsd:complexType>
        </xsd:element>
        <xsd:element minOccurs="0" maxOccurs="unbounded" name="ExpenseItem">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="Date" type="xsd:date"/>
              <xsd:element name="Description" type="xsd:string"/>
              <xsd:element name="Amount" type="xsd:decimal" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

创建 XML 映射

通过将 XML 架构添加到工作簿,创建一个 XML 映射。 可从 XML 架构文件 (.xsd) 复制此架构,Excel 也可尝试根据 XML 数据文件 (.xml) 推导出此架构。

  1. 单击“开发工具”>“”。

    “开发工具”选项卡上的“XML”命令

    如果看不到“开发工具”选项卡上,请参阅显示“开发工具”选项卡

  2. 在“XML 源”任务窗格中,单击“XML 映射”,然后单击“添加”。

  3. 在“查找范围”列表中,单击要打开的文件所在的驱动器、文件夹或 Internet 位置。

  4. 单击该文件,然后单击“打开”。

    • 对于 XML 架构文件,XML 将根据 XML 架构创建一个 XML 映射。 如果出现“多个根目录”对话框,请选择在 XML 架构文件中定义的某个根节点。

    • 对于 XML 数据文件,Excel 将试着根据 XML 数据推导出 XML 架构,然后创建 XML 映射。

  5. 单击“确定”。

    XML 映射将在“XML 源”任务窗格中显示。

映射 XML 元素

应将 XML 元素映射到 XML 表中单一映射的单元格和重复单元格,以便可以在单元格和 XML 架构中的 XML 数据元素之间创建关系。

  1. 单击“开发工具”>“”。

    “开发工具”选项卡上的“XML”命令

    如果看不到“开发工具”选项卡上,请参阅显示“开发工具”选项卡

  2. 在“XML 源”任务窗格中,选择要映射的元素。

    要选择不相邻的元素,请单击一个元素,然后按住 Ctrl 并单击要映射的每个元素。

  3. 要映射元素,请执行下列操作:

    1. 右键单击所选的元素,然后单击“映射元素”。

    2. 在“映射 XML 元素”对话框中,选择一个单元格,再单击“确定”。

      提示: 您也可以将选定的元素拖动到您希望显示它们的工作表位置。

      在“XML 源”任务窗格中,每个元素都以粗体显示,用于指示该元素已被映射。

  4. 决定如何处理标签和列标题:

    • 在将非重复 XML 元素拖动到工作表上以创建单一映射的单元格时,将显示一个带有三个命令的智能标记,您可以使用它来控制标题或标签的位置:

      我的数据已经有标题    单击此选项会忽略 XML 元素标题,原因是单元格已有标题(位于数据左侧或数据上方)。

      将 XML 标题放在左边    单击此选项可将 XML 元素标题用作单元格标签(位于数据左侧)。

      将 XML 标题放在上边    单击此选项可将 XML 元素标题用作单元格标题(位于数据上方)。

    • 在将重复 XML 元素拖动到工作表上以创建 XML 表中的重复单元格时,XML 元素名称将被自动用作该表的列标题。 但是,您可以编辑列标题单元格,以便将列标题更改为所需的任何标题。

      在“XML 源”任务窗格中,可以单击“选项”进一步控制 XML 表的行为:

      映射时自动合并元素    如果选中此复选框,则当您将元素拖动到与 XML 表相邻的单元格中时,XML 表将自动扩展。

      我的数据带有标题    如果选中此复选框,则当您向工作表映射重复元素时,可以使用现有数据作为列标题。

      注意: 

      • 如果所有 XML 元素都灰显,并且你没法将 XML 元素映射到任何单元格,这表示工作簿可能已共享。 请依次单击“审阅”和“共享工作簿”,验证其是否已共享,并在必要时取消共享。

        如果要映射的 XML 元素位于想要共享的工作簿中,则请将 XML 元素映射到所需的单元格,再导入 XML 数据,删除所有 XML 映射,然后共享工作簿。

      • 如果无法将包含数据的某 XML 表格映射到其他工作簿,则表示该 XML 表格可能与定义了数据结构的 XML 映射相关联。 该 XML 映射存储在工作簿中,但在你将 XML 表格映射到新的工作簿时,不自动包含该映射。 Excel 会创建一个包含相同数据的 Excel 表格,而不是复制 XML 表格。 如果希望新表是一个 XML 表格,请执行以下操作:

        1. 使用创建原始 XML 映射时所用的 .xml 或 .xsd 文件将 XML 映射添加到新的工作簿中。 如果想要将 XML 映射添加到其他工作簿,则应保存这些文件。

        2. 将 XML 元素映射到该表以使其成为 XML 表。

      • 将重复的 XML 元素映射到合并的单元格时,Excel 会解除单元格的合并。 这是预期行为,因为重复的元素旨在仅用于未合并的单元格。

        可将单个不重复的 XML 元素映射到合并的单元格,但不可将重复的 XML 元素(或者包含重复元素的元素)映射到合并的单元格。 该单元格将取消合并,且该元素将映射到指针所在的单元格。

提示: 

  • 可以取消映射不想使用的 XML 元素,或防止在导入 XML 数据时覆盖单元格的内容。 例如,在导入 XML 文件时,可暂时取消映射来自单个单元格或来自包含不想覆盖的公式的重复单元格的 XML 元素。 导入完成后,可以再次将 XML 元素映射到公式单元格,以便可以将公式的结果导出到 XML 数据文件。

  • 要取消映射 XML 元素,请在“XML 源”任务窗格中右键单击其名称,然后单击“ 删除元素”。

显示“开发工具”选项卡

如果看不到“开发工具”选项卡,请通过执行下列操作来显示该选项卡:

  1. 单击“文件”>“选项”。

  2. 单击“自定义功能区”类别。

  3. 在“主选项卡”下,勾选“开发工具”框,然后单击“确定”。

另请参阅

从工作簿中删除 XML 映射信息

追加或覆盖映射的 XML 数据

Excel 中的 XML 概述

导入 XML 数据

导出 XML 数据

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。