2011-09-01 94 views

回答

0

只需使用样式表格

protected void Btn_ExportClick(object sender, EventArgs e) 
{ 

    string style = @"<style> .text { mso-number-format:\@; } </style> "; 
    Response.ClearContent(); 
    Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls"); 
    Response.ContentType = "application/excel"; 
    StringWriter sw = new StringWriter(); 
    HtmlTextWriter htw = new HtmlTextWriter(sw); 
    gvUsers.RenderControl(htw); 

    // Style is added dynamically 
    Response.Write(style); 
    Response.Write(sw.ToString()); 
    Response.End(); 
} 

protected void gvUsers_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) { 
     e.Row.Cells[1].Attributes.Add("class", "text"); 
    } 
} 
0

字符串引号,使Excel将其作为一个字符串,而不是数字

+0

我不希望看到的 “”我只想回答为0001不是“0001” –

0

00001不是数字,1是...因为没有数字可以从0开始,除非数值本身是0.
如果您想让它显示00001,请使用qoutes“”。所以它变成了“00001”。
这也是excel在将列或单元转换为一般文本时的功能。

我觉得没有其他办法可以做到。

您可以随时向Microsoft发送包含您投诉的电子邮件,并要求提供更新以解决此问题:)。

0

有一种更好的方法来达到同样的效果,只需添加一条线,它会工作。使用循环创建样式表(.text)并添加所有标签的属性,而不是使用循环在所有TD标签上直接应用样式。

更换

string style = @"<style> .text { mso-number-format:\@; } </style> "; 

随着

string style = @"<style> TD { mso-number-format:\@; } </style> "; 

和消除环路

+0

amitvyas100688 - 你有没有试过上面的代码?这个有帮助吗? –