65.9K
CodeProject 正在变化。 阅读更多。
Home

Excel 插件,用于将数据导出到 XML

starIconstarIconstarIconstarIconstarIcon

5.00/5 (14投票s)

2011 年 12 月 7 日

CPOL

3分钟阅读

viewsIcon

148277

downloadIcon

12711

ExcelXMLExport 是一个 Microsoft Excel 2010 / 2013 插件,用于从 Excel 工作表生成 XML 数据。

引言

ExcelExportXML 是一个 Microsoft Excel 2010/2015 插件,用于从 Excel 工作表生成 XML 数据。 它使用 C# 在 Visual Studio 中开发。

它是一个非常简单的插件。 要了解它的工作原理,请考虑一个包含以下数据的 Excel 工作表。

国家 首都
法国 巴黎 欧洲
德国 柏林 欧洲
印度 新德里 亚洲
印度尼西亚 雅加达 亚洲

使用该插件,可以将以上内容导出到以下 XML。

<sheet1>
    <row>
        <country>France</country>
        <capital>Paris</capital>
        <continent>Europe</continent>
    </row>
    <row>
        <country>Germany</country>
        <capital>Berlin</capital>
        <continent>Europe</continent>
    </row>
    <row>
        <country>India</country>
        <capital>New Delhi</capital>
        <continent>Asia</continent>
    </row>
    <row>
        <country>Indonesia</country>
        <capital>Jakarta</capital>
        <continent>Asia</continent>
    </row>
</sheet1> 

安装插件后,您将在 Excel 功能区的“插件”选项卡上看到一个“生成 XML”按钮,如下所示。 单击“生成 XML”将弹出保存文件对话框,您可以在其中保存生成的 XML 文件。

ExcelExportXML/ScreenShot.png

用例 & 假设

当您在 Excel 中有表格数据并且第一行包含列标题时,ExcelExportXml 非常有用。 它的工作基于以下假设

  1. 第一行被视为列标题,并将转换为 XML 标签。
  2. 在标题行中遇到第一个空单元格后,将忽略右侧的其余列。
  3. 仅支持最多 'Z' 列,即最多 26 列。
  4. 所有值都为空的第一行将被视为工作表的结尾。
  5. 工作表名称和列名不应包含任何空格。

为什么不使用标准的“另存为 XML”功能

Excel 提供了多种导出 XML 数据的方法。 其中一种是“另存为”对话框中的“另存为 XML 数据”。 这需要定义 XML 映射,我认为这需要安装 Microsoft 的开发人员插件。

另一种选择是“另存为 XML 电子表格 2003”,它会生成以下 XML

 <Worksheet ss:Name="Sheet1">
  <Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="5" x:FullColumns="1"
   x:FullRows="1" ss:DefaultRowHeight="15">
   <Column ss:Width="51"/>
   <Column ss:Width="54"/>
   <Column ss:Width="51.75"/>
   <Row ss:StyleID="s64">
    <Cell><Data ss:Type="String">Country</Data></Cell>
    <Cell><Data ss:Type="String">Capital</Data></Cell>
    <Cell><Data ss:Type="String">Continent</Data></Cell>
   </Row>
   <Row>
    <Cell><Data ss:Type="String">France</Data></Cell>
    <Cell><Data ss:Type="String">Paris</Data></Cell>
    <Cell><Data ss:Type="String">Europe</Data></Cell>
   </Row>
   <Row>
    <Cell><Data ss:Type="String">Germany</Data></Cell>
    <Cell><Data ss:Type="String">Berlin</Data></Cell>
    <Cell><Data ss:Type="String">Europe</Data></Cell>
   </Row>
   <Row>
    <Cell><Data ss:Type="String">India</Data></Cell>
    <Cell><Data ss:Type="String">New Delhi</Data></Cell>
    <Cell><Data ss:Type="String">Asia</Data></Cell>
   </Row>
   <Row>
    <Cell><Data ss:Type="String">Indonesia</Data></Cell>
    <Cell><Data ss:Type="String">Jakarta</Data></Cell>
    <Cell><Data ss:Type="String">Asia</Data></Cell>
   </Row>
  </Table>
  </Worksheet>

如您所见,以上可能不是您想要的。 它更多的是 Excel 工作表的表示,而不是数据的语义。 ExcelExportXML 虽然非常有限,但在您拥有表格数据并且第一行包含列标题的常见情况下非常有效。

为 Microsoft Excel 2010 编写插件

使用 Visual Studio 2010 Professional,创建 Excel 插件非常简单。 以下是我为 ExcelExportXml 遵循的步骤

步骤 # 1

创建一个类型为“Excel 2010 插件”的新项目。 该项目将有一个名为ThisAddin.cs的类文件。

步骤 # 2

要在 Excel 功能区上创建一个按钮,请右键单击该项目,然后选择“添加” - > “新建项”。

步骤 # 3

从新的项目列表中选择“功能区 (XML)”,并将功能区类命名为 Ribbon1。 这将向项目添加两个文件,分别是Ribbon1.csRibbon1.xml

步骤 # 4

ThisAddin 类中添加以下代码

protected override Microsoft.Office.Core.IRibbonExtensibility
    CreateRibbonExtensibilityObject()
{
     return new Ribbon1();
}

步骤 # 5

Ribbon1.xml 中,定义将在 Excel 功能区上显示的按钮的属性。 onAction 属性指定单击按钮时将从 Ribbon1.cs 调用的方法 (onAction="OnTextButton")。

    <?xml version="1.0" encoding="UTF-8"?>
    <customUI xmlns=http://schemas.microsoft.com/office/2009/07/customui
    onLoad="Ribbon_Load">
      <ribbon>
        <tabs>
          <tab idMso="TabAddIns">
            <group id="MyGroup"
                   label="Export XML">
              <button id="textButton" label="Generate XML"
                 screentip="Export to XML" onAction="OnTextButton"
                 supertip="Export excel sheet to XML file."/>
            </group>
          </tab>
        </tabs>
      </ribbon>
    </customUI>

步骤 # 6

将以下方法声明添加到 Ribbon1.cs 并在其中实现您的功能。

public void OnTextButton(Office.IRibbonControl control)
{
    //TODO:Add your implementation here
}

历史

  • 2015 年 1 月 21 日:删除了列数的限制。 现在可以导出无限数量的列。
  • 2011 年 12 月 7 日:首次发布
© . All rights reserved.