使用使用逗号作为小数点的数字从 C# 导出到 Excel
本文关键字:Excel 小数点 数字 | 更新日期: 2023-09-27 18:31:16
我想将数字数据从 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 数字类型以使用点而不是逗号。转换后,将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>");