簡體   English   中英

從C#導出到使用逗號作為小數點的數字的Excel?

[英]Exporting from C# to Excel with numbers that use a comma as a decimal point?

我想將數字數據從C#導出到Excel,其中浮點數使用逗號(',')表示小數而不是點('。')。 我通過在C#中編寫XML代碼來導出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]()

調用GetExcelXml將XML文件讀入字符串后,在代碼中,遍歷該字符串並轉換所有數字,以使逗號成為句點。 您應該能夠使用正則表達式使用一行代碼來做到這一點。

例如,下面是一行代碼,它將所有XML Number類型轉換為使用點而不是逗號。 轉換后,將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>");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM