导出Excel中的System.Web.Ui.WebControls.Table
本文关键字:Ui WebControls Table Web System Excel 中的 导出 | 更新日期: 2023-09-27 18:07:17
当我们使用HTML表格单元格逻辑在excel中导出表格时,如何在excel中显示前导零?如果数字格式是'00001',那么excel会自动将其转换为'1'。但我希望它是'00001'而不是1。
string引号,以便excel将其视为字符串而不是数字
00001不是数字,1是…因为数字不能以0开头,除非值本身为0。
如果您希望它显示00001,请使用引号"。所以它变成了"00001"。
当您将列或单元格转换为通用文本时,excel也会这样做。
我想没有别的办法了。
你可以随时给微软发邮件投诉,并要求他们更新来修复它:)
有一个更好的方法来实现相同的结果,只需添加一行,它将工作。而不是创建样式表(.text
)并使用循环为所有标签添加属性,直接在所有TD
标签上应用样式。
string style = @"<style> .text { mso-number-format:'@; } </style> ";
string style = @"<style> TD { mso-number-format:'@; } </style> ";
和删除循环
在你的表格中使用style
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");
}
}