You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# MVC5中如何将Excel所有单元格转为文本格式并导出打印?

解决Excel无法打印超过10位数字的问题:将单元格转为文本格式

你这情况我太熟了——Excel对长数字的默认处理确实坑人,超过10位容易变成科学计数法,再长点还会丢精度,转成文本格式绝对是正确的解决思路。看你用的是ASP.NET的GridView准备导出数据,我给你调整下代码,直接在绑定数据后给所有单元格加上强制文本格式的设置:

public ActionResult Index() 
{ 
    var data = new List<SIM_lista>(); 
    var grid = new GridView(); 
    USR_User user = Session[Costants.Costants.UserSession] as USR_User; 
    CoreEntities core = new CoreEntities(); 
    List<SIM_lista> lista = core.SIM_lista
        .Where(x => x.SIM_Friendlyname == user.USR_Friendly_Name)
        .OrderByDescending(x => x.SIM_Date_Insert)
        .ToList<SIM_lista>(); 
    
    // 绑定数据源
    grid.DataSource = lista;
    grid.DataBind();

    // 关键步骤:遍历所有单元格,给Excel标记文本格式
    foreach (GridViewRow row in grid.Rows)
    {
        foreach (TableCell cell in row.Cells)
        {
            // 添加mso专属样式,让Excel把单元格识别为纯文本
            cell.Attributes.Add("style", "mso-number-format:\\@;");
        }
    }

    // 后续的导出逻辑(比如写入Response输出Excel)
    // ...
}

额外说明:

  • 这个mso-number-format:\@是Excel能识别的特殊样式,不管单元格内容是数字还是字符串,都会强制以纯文本形式显示和打印,完美解决长数字变形的问题。
  • 如果后续你换成EPPlus、NPOI这类专业导出库,逻辑也是类似的——直接给单元格设置NumberFormat = "@"就行,原理完全一致。
  • 如果表头里也有长数字需要处理,把表头行也加入遍历范围就好。

内容的提问来源于stack exchange,提问作者Mr. Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:25:17