2012-03-20 57 views
1

我有一个关于将数据保存到要由Microsoft Excel打开的XML文件的问题。我已经使用Visual C++中的MFC构建了一个报表控件,并且使用简单的CSV(逗号分隔值)文件将数据导出到Excel。 CSV方法运行良好,因为它显示了Excel上报表中的所有行和列。将数据导出到XML中以在Excel中打开

但是,当必须保存每列的数据类型时,由于CSV方法在导出数据时忽略数据类型,因为它将显示一次在Excel中打开的字符串中的所有单元格。报表中单元格的数据类型非常重要,因为我的客户端在Excel中导出(或打开)后,将在报表数据上运行宏。

我希望使用XML来克服这个问题。是否可以使用XML保存数据类型,因为它提供了格式和模式?您能否给我任何链接或指针,以允许自定义应用程序使用XML保存要在Excel中打开的数据,同时保留数据类型?

在此先感谢。

+0

对不起,没有我的回答对你的工作或我偏离轨道? – MiMo 2012-03-24 01:26:58

回答

0

如果创建并在Excel中打开这样的一个XML文件:

<rows> 
    <row> 
    <name>Name 1</name> 
    <number>123.45</number> 
    <date>2012-03-21</date> 
    </row> 
    <row> 
    <name>Name 2</name> 
    <number>678.01</number> 
    <date>2012-03-22</date> 
    </row> 
</rows> 

Excel完全相同的自动识别数据类型的一个不错的工作 - 它会抱怨尽管该XML没有关联架构。

一个模式相关联,以创建XML架构文件(rows.xsd)的XML:

,然后你引用它在你的XML:

<rows xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="rows.xsd"> 
    <row> 
    <name>Name 1</name> 
    <number>123.45</number> 
    <date>2012-03-21</date> 
    </row> 
    <row> 
    <name>Name 2</name> 
    <number>678.01</number> 
    <date>2012-03-22</date> 
    </row> 
</rows> 

在架构文件就可以了指定数据的类型并描述你的结构 - 但你必须知道非常量的XSD语法。

另见本:http://support.microsoft.com/kb/827294(不过,请注意它说“XSL”,它应该说“XSD”代替)