2012-03-20 49 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」代替)