C# 数据格式问题。将GridView导出到Excel

C# 数据格式问题。将GridView导出到Excel,c#,asp.net,excel,gridview,C#,Asp.net,Excel,Gridview,当我将GridView导出到Excel时,GridView中有一个字符串(1008901023816550000000),不知何故在Excel中保存为一个科学编号(1.0089E+21) 我正在使用.NET4.0 以下是我尝试过的,但他们没有解决问题: 在BoundColumn标记中添加了DataFormatString=“{0:g}” 在调用RenderControl后设置样式 string style=@“。文本{mso数字格式:\@;}”; 有人能解释一下这个问题吗?假设您正在使用CSV

当我将GridView导出到Excel时,GridView中有一个字符串
(1008901023816550000000)
,不知何故在Excel中保存为一个科学编号
(1.0089E+21)

我正在使用.NET4.0

以下是我尝试过的,但他们没有解决问题:

  • BoundColumn
    标记中添加了
    DataFormatString=“{0:g}”
  • 在调用
    RenderControl
    后设置
    样式
  • string style=@“。文本{mso数字格式:\@;}”;
    

    有人能解释一下这个问题吗?

    假设您正在使用CSV文件执行导出:

    这是一个难以撼动的卓越怪癖。我知道的唯一想法是尝试在CSV文件中使用如下格式:

    ="1008901023816550000000"
    

    这将迫使它成为一个返回所需文本的公式。

    试试这个,它会起作用

    string style = @"<style> TD { mso-number-format:\@; } </style> ";
    
    string style=@“TD{mso数字格式:\@;}”;
    
    在值之前插入一个引号(
    ),以强制Excel将其视为字符串而不是数字?我不知道这是否可以通过编程实现,但直接手动输入Excel就可以了。@Marc B:谢谢。我刚才试过了,但是带单引号的“1008901023816550000000”也将被存储。@sza:是的,你被一个等号和双引号卡住了。很抱歉但考虑到Excel会做什么和不会做什么,这可能是唯一可能的方法。从好的方面来说,就电子表格的计算和格式而言,它是一个真正的文本值,而不是一个数字。sza-我知道这已经太晚了,但只是为了更新,你试过上面的代码吗?只需添加一行。您不必更改数据。
    string style = @"<style> TD { mso-number-format:\@; } </style> ";