导出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。

导出Excel中的System.Web.Ui.WebControls.Table

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");
  }
}