2012-04-17 97 views
0

我想將C#中的數值數據導出到Excel,其中浮點數使用逗號(',')作爲小數而不是點('。')。我通過在C#中編寫XML代碼導出Excel文件。從C#導出到使用逗號作爲小數點的數字的Excel?

從代碼端正確導出數據,但如果數據類型爲「數字」,則Excel文件省略(',')。當我爲英語生成相同的數據時,它會完美生成。

示例:號碼= 65,4然後在Excel文件它顯示654

示例代碼: --xml代碼

<?xml version="1.0" encoding="UTF-8" ?> 
<?mso-application progid="Excel.Sheet"?> 
<ss:Workbook xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:o="urn:schemas-microsoft-com:office:office" 
xmlns:x="urn:schemas-microsoft-com:office:excel" 
xmlns:html="http://www.w3.org/tr/rec-html40"> 
<ss:Worksheet ss:Name="test"> 
<ss:Table> 
<ss:Row> 
<ss:Cell ss:StyleID="s65"><ss:Data ss:Type="String">123</ss:Data></ss:Cell> 
<ss:Cell ss:StyleID="s65"><ss:Data ss:Type="Number">64,3</ss:Data></ss:Cell> 
<ss:Cell ss:StyleID="s65"><ss:Data ss:Type="Number">72,0</ss:Data></ss:Cell> 
<ss:Cell ss:StyleID="s65"><ss:Data ss:Type="Number">26,0</ss:Data></ss:Cell> 
<ss:Cell ss:StyleID="s65"><ss:Data ss:Type="Number">72,0</ss:Data></ss:Cell></ss:Row> 
</ss:Table> 
</ss:Worksheet></ss:Workbook> 

C#代碼 -

Dim excelXml As String = GetExcelXml(dsInput, filename) 
    Response.Clear() 
    Response.AppendHeader("Cache-Control", "cache, must-revalidate") 
    Response.AppendHeader("Pragma", "public") 
    Response.AppendHeader("Content-Type", "application/vnd.ms-excel") 
    ' Response.ContentEncoding = System.Text.Encoding.GetEncoding(1252) 
    Response.Charset = "iso-8859-1" 
    Response.Cache.SetCacheability(HttpCacheability.NoCache) 
    Response.AppendHeader("Content-disposition", "attachment; filename=" & 
     System.IO.Path.GetFileName(filename)) 
    Response.Write(excelXml) 
    Response.Flush() 
    Response.[End]() 

回答

0

在在您撥打GetExcelXml之後,您的代碼會將您的XML文件讀入字符串,然後檢查字符串並轉換所有數字,以使逗號爲句點。您應該可以使用正則表達式使用一行代碼執行此操作。

例如,下面是一行代碼,它將轉換所有XML數字類型以使用點而不是逗號。轉換後,將excelXMLCorrected寫入Excel文件。不管用什麼語言你在你生成XML,此功能將工作:

excelXMLCorrected = Regex.Replace(excelXml, 
    @"<ss:Data ss:Type=""Number"">([\d]+),([\d]{1})</ss:Data>", 
    "<ss:Data ss:Type=\"Number\">$1.$2</ss:Data>"); 
+0

感謝您的答覆... 它工作正常。我用你的建議代碼得到了解決方案。 – Finisher001 2012-04-19 05:26:25