Экспорт System.Web.Ui.WebControls.Table в Excel - PullRequest
1 голос
/ 01 сентября 2011

Как отобразить ведущие нули в Excel, когда мы экспортируем таблицу в EXCEL, используя логику ячейки таблицы HTML?Если числовой формат - «00001», то в Excel автоматически преобразует его в «1», но я хочу, чтобы он был «00001», а не 1.

Ответы [ 4 ]

0 голосов
/ 11 марта 2012

Есть лучший способ достичь того же результата, просто добавьте одну строку, и она будет работать.Вместо создания таблицы стилей (.text) и добавления атрибутов для всех тегов с помощью цикла, примените прямой стиль к тегам All TD.

Замените

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

на

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

и удалите петлю

0 голосов
/ 01 сентября 2011

00001 - это не число, 1 - это ... Потому что никакое число не может начинаться с 0, если само значение не равно 0.
Если вы хотите, чтобы оно отображало 00001, используйте qoutes "".Таким образом, он становится «00001».
Это также делает Excel, когда вы преобразуете столбец или ячейку в общий текст.

Я думаю, что другого способа сделать это не существует.

Вы всегда можете отправить Майкрософт электронное письмо со своей жалобой и попросить обновить ее, чтобы исправить ее:).

0 голосов
/ 01 сентября 2011

просто используйте стиль в вашем столе

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 голосов
/ 01 сентября 2011

строка заключает это в кавычки так, чтобы Excel воспринимал это как строку, а не число

...