Excel的xml表现格式

随着即将发布  微软的下一个版本 ®  Office(目前代号为“Office 12的”),将有微软的Word,PowerPoint新的默认文件格式 ® 和Excel  ® 这些称为Microsoft Office Open XML格式的新格式将为Office开发人员打开一个全新的世界。默认情况下,Office文档将是开放和可访问的,因为它们将使用标准的ZIP和XML技术,并提供完整的文档,并且可以免费使用许可证。这些技术是对Microsoft Office 2003 Editions附带的现有XML格式的改进,但现在可以使用现有的Office 2003 XML参考模式来实现与文档数据配合使用的解决方案,并提供了一种理解用新的默认格式进行开发将需要什么。
Microsoft Excel中的SpreadsheetML格式非常易于使用,因为它专为人类可读和可编辑而设计。但是很多人可能没有机会看看Excel中的XML支持。一旦你掌握了它的工作方式,你就会意识到你有很多XML特性的用途,从数据库和网页之间的数据转换到在不同的应用程序之间共享文件。
为了让你开始,我将建立一个XML示例,说明它是如何工作的。随着您的继续,您可以在此示例中使用Office XP或Office 2003,因为它们都支持Excel版本中的SpreadsheetML。使用文本编辑器,我将创建一个 如图1所示 的非常简单的表格  ,概述了创建代表Excel工作表的XML文件的七个步骤。


First Name Last Name Phone Number
Nancy Davolio (206) 555-9857
Andrew Fuller (206) 555-9482
Janet Leverling (206) 555-3412
Margaret Peacock (206) 555-8122
Steven Buchanan (71) 555-4848

1.创建XML文件
首先,在记事本中创建一个新文件,并将其称为test.xml。然后按照这里列出的步骤。首先键入以下内容:
 
<?xml version="1.0"?>


这声明该文件是遵循XML规范的1.0版本的XML文档。它应该始终位于所有XML文件的顶部。接下来添加文档的根元素。XML文件始终只有一个根元素,其中包含文档的其余部分。对于SpreadsheetML,根元素是<Workbook>。XML声明之后,添加该元素,使您的文件现在看起来像这样:
 
<?xml version="1.0"?>
<Workbook>
</Workbook>



2.声明名字空间
现在您将声明这个名称空间并为根元素添加一个前缀。大多数XML文档都有一个与其关联的名称空间。声明XML文件的命名空间使得用户解析XML时能够更容易地知道他们正在处理的是什么类型的XML。即使在Office中,XML也有许多不同的用途。知道何时分析Word XML文件而不是Excel XML文件的一种方法是查看名称空间。对于Office XP,当产品组创建SpreadsheetML模式时,我们仍然以“urn:schemas-microsoft-com:office”的形式使用命名空间。展望未来,我们将使用URL命名空间,就像我们在Office 2003中使用WordML(例如//schemas.microsoft.com/office)一样。通过向电子表格添加名称空间声明,您的文件应该如下所示:
 
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet">
</Workbook>


您将要为命名空间执行的最后一件事是使用前缀,而不是默认值。由于属性符合SpreadsheetML模式的限定,所以如果要使用任何属性,则需要执行此操作。我们使用“ss”(电子表格)作为前缀。您将在所有元素之前添加“ss:”,然后您将更新您的名称空间声明,以表明该名称空间适用于前面带有“ss:”的所有内容,而不仅仅应用于默认XML元素,如下所示:
 
<?xml version="1.0"?>
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
</ss:Workbook>


请注意,名称空间声明表示xmlns:ss =而不仅仅是xmlns =。这意味着任何前面有“ss:”的东西都适用于电子表格命名空间。

3.添加一个工作表
接下来,您将添加一个工作表。由于您有一个空的工作簿,您需要在工作簿中声明电子表格网格。你可能知道,工作簿可以有多个工作表,但是在这里你只需要声明一个。另外,我们在工作表中声明一个表。表格是所有网格数据将要去的地方,文件现在看起来像这样:
 
<?xml version="1.0"?>
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
    <ss:Worksheet ss:
     Name="Sheet1">
        <ss:Table>
        </ss:Table>
    </ss:Worksheet>
</ss:Workbook>



4.添加标题行
您要生成的表中的第一行有三个列中的“名字”,“姓氏”和“电话号码”。我们添加一个<Row>标签以及三个<Cell>标签。单元格的实际内容包含在一个<Data>标签中,所以我们再添加一下。该文件现在看起来像   图2
 
<?xml version="1.0"?>
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
    <ss:Worksheet ss:Name="Sheet1">
        <ss:Table>
            <ss:Row>
                <ss:Cell>
                    <ss:Data ss:Type="String">First Name</ss:Data>
                </ss:Cell>
                <ss:Cell>
                    <ss:Data ss:Type="String">Last Name</ss:Data>
                </ss:Cell>
                <ss:Cell>
		    <ss:Data ss:Type="String">Phone Number</ss:Data>
                </ss:Cell>
            </ss:Row>
        </ss:Table>
    </ss:Worksheet>
</ss:Workbook>


您现在有一个可以直接在Excel中打开的表格模板。它将   如图3所示 不太令人兴奋,但这是一个开始。
图3   基本工作表 

5.调整列宽
请注意,列的宽度对于内容来说太窄。让我们在文件中添加一些XML以指定您想要的列的宽度。结果代码 如图4 所示  
 
<?xml version="1.0"?>
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
    <ss:Worksheet ss:Name="Sheet1">
        <ss:Table>
            <ss:Row>
                <ss:Cell>
                    <ss:Data ss:Type="String">First Name</ss:Data>
                </ss:Cell>
                <ss:Cell>
                    <ss:Data ss:Type="String">Last Name</ss:Data>
                </ss:Cell>
                <ss:Cell><ss:Data ss:Type="String">Phone Number</ss:Data>
                </ss:Cell>
            </ss:Row>
        </ss:Table>
    </ss:Worksheet>
</ss:Workbook>


现在在Excel中再次打开该文件。请注意,列更宽,文本现在适合(   见图5 )。还有一个属性可以在列元素上设置,告诉它使用自动适应的宽度。这只适用于数字和日期。由于你的单元格是字符串,你需要明确地设置宽度。
图5   调整大小的单元格 

6.添加剩余数据
现在添加这些额外的数据行。这应该很容易。只需选择第一个“行”元素并复制它。然后粘贴五次,所以你总共有六个行。现在通过并更新行的值。如果您熟悉可扩展样式表语言转换(Extensible Stylesheet Language Transform,XSLT),您将看到如何轻松生成可应用于DataSet的XSLT,以将其转换为SpreadsheetML。只需重复DataSet中每一行的行标记,并在每个单元格的数据标记中添加值。在应用完所有的数据之后,你的XML应该   如图6所示 ,它已经被缩写为空格。  图7   显示了Excel中的完整表格。
 
<?xml version="1.0"?>
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
    <ss:Worksheet ss:Name="Sheet1">
        <ss:Table>
            <ss:Column ss:Width="80"/>
            <ss:Column ss:Width="80"/>
            <ss:Column ss:Width="80"/>
            <ss:Row>
                <ss:Cell>
                   <ss:Data ss:Type="String">First Name</ss:Data>
                </ss:Cell>
                <ss:Cell>
                   <ss:Data ss:Type="String">Last Name</ss:Data>
                </ss:Cell>
                <ss:Cell>
                   <ss:Data ss:Type="String">Phone Number</ss:Data>
                </ss:Cell>
            </ss:Row>
            <ss:Row>
                <ss:Cell>
                   <ss:Data ss:Type="String">Nancy</ss:Data>
                </ss:Cell>
                <ss:Cell>
                   <ss:Data ss:Type="String">Davolio</ss:Data>
                </ss:Cell>
                <ss:Cell>
                   <ss:Data ss:Type="String">(206)555 9857</ss:Data>
                </ss:Cell>
            </ss:Row>
            <ss:Row>
            ...
            </ss:Row>
        </ss:Table>
    </ss:Worksheet>
</ss:Workbook>



图7   带有数据的工作表 

7.添加标题格式
正如你所看到的,第一行看起来不像列标题,所以让我们用粗体文本格式化,以便它清楚地显示标题。所有你需要做的是生成一个粗体文本的样式,然后引用该样式与第一行。首先,在Worksheet标签前添加以下XML:
 
<ss:Styles>
    <ss:Style ss:ID="1">
        <ss:Font ss:Bold="1"/>
    </ss:Style>
</ss:Styles>


这将创建一个ID为“1”的样式,并将其应用于粗体。接下来,更新第一行元素以引用StyleID 1.行代码现在应该如下所示:
 
<ss:Row ss:SyleID="1">


现在,您的XML应该   如图8所示 ,   图9   显示了它在Excel中的外观。
 
<?xml version="1.0"?>
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
    <ss:Styles>
        <ss:Style ss:ID="1">
            <ss:Font ss:Bold="1"/>
        </ss:Style>
    </ss:Styles>
    <ss:Worksheet ss:Name="Sheet1">
        <ss:Table>
            <ss:Column ss:Width="80"/>
            <ss:Column ss:Width="80"/>
            <ss:Column ss:Width="80"/>
            <ss:Row ss:StyleID="1">
                <ss:Cell>
                   <ss:Data ss:Type="String">First Name</ss:Data>
                </ss:Cell>
                <ss:Cell>
                   <ss:Data ss:Type="String">Last Name</ss:Data>
                </ss:Cell>
                <ss:Cell>
                   <ss:Data ss:Type="String">Phone Number</ss:Data>
                </ss:Cell>
            </ss:Row>
            <ss:Row>
                <ss:Cell>
                   <ss:Data ss:Type="String">Nancy</ss:Data>
                </ss:Cell>
                <ss:Cell>
                   <ss:Data ss:Type="String">Davolio</ss:Data>
                </ss:Cell>
                <ss:Cell>
                   <ss:Data ss:Type="String">(206)555-9857</ss:Data>
                </ss:Cell>
            </ss:Row>
            ...
            </ss:Row>
        </ss:Table>
    </ss:Worksheet>
</ss:Workbook>



图9   完成的工作表 

包起来
这是一个非常简单的例子,但是如果你不熟悉Office XML(甚至是通用的XML),这是一个很好的介绍。未来版本的Excel的新XML格式看起来与我在SpreadsheetML中展示的不同,但也会有一些相似之处。熟悉现有的模式是很好的,我将开始在 blogs.msdn.com/brian_jones 上发布更多关于我的博客上的新模式  
First Name Last Name Phone Number
Nancy Davolio (206) 555-9857
Andrew Fuller (206) 555-9482
Janet Leverling (206) 555-3412
Margaret Peacock (206) 555-8122
Steven Buchanan (71) 555-4848
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值