在Excel单元格中强制字符串格式

时间:2013-06-27 19:25:47

标签: c# asp.net telerik-grid

我目前正在向Excel中导出一个RadGrid,我有一些单词格式为“1/10”,这意味着它们有1小时用于10个单位。当它进入Excel时,它认为单元格是一个日期,因此它将单元格更改为1月10日,这不是我想要的。

我之前已经走了另一个方向(将字符串更改为数字/日期)但我从来没有遇到过需要让Excel将单元格保持为字符串而不是尝试更改格式的问题。 / p>

我该怎么做?我尝试在单元格文本的开头添加撇号:

e.Cell.Text = String.Format("'{0}", e.Cell.Text);

但这似乎只是让Excel在单元格的开头显示两个撇号:

Excel example


更新

我正在使用Telerik RadGrid(v2012.2.929.40),它所做的就是生成一些用于打开Excel的HTML(当你试图打开它时,你总是从Excel中得到那个可怕的提示)。所以之前,如果我想要将某些内容格式化为类似我在网格中具体的数字,我可以使用以下事件来设置 mso-number-format 。但是,当我希望Excel将单元格值显示为严格文本时,这不太有效。

    protected void RadGridQuote_ExcelExportCellFormatting(object sender, ExcelExportCellFormattingEventArgs e)
    {
        if (e.Cell.Style["mso-number-format"] != null)
        {
            e.Cell.Style["mso-number-format"] = "/@";
            e.Cell.HorizontalAlign = HorizontalAlign.Left;
        }
    }

1 个答案:

答案 0 :(得分:1)

如果你在C#中使用Excel Automation,我发现最好的结果是首先设置NumberFormat,你应该设置为“@”。然后在.Text属性中设置值。 (如果你反向进行,它会将日期转换为你不想要的数字。)

另请参阅有关NumberFormat的MSDN