繁体   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