Формат HTML ячейки таблицы так, что Excel форматы в виде текста?
6 ответов
вы можете применить форматирование к ячейкам для чисел, текста, дат и т. д.
смотрите мой предыдущий ответ на это: HTML в Excel: Как сказать Excel для обработки столбцов как чисел?
(скорректированный фрагмент)
Если вы добавляете класс CSS на свою страницу:
.num {
mso-number-format:General;
}
.text{
mso-number-format:"\@";/*force text*/
}
и похлопайте эти классы по своим TD, это работает?
<td class="num">34</td>
<td class="num">17.0</td>
<td class="text">067</td>
есть одна проблема, использующая это решение (стиль css с числовым форматом). Excel дает ошибку "номер, хранящийся как текст", которая может быть неудобной в некоторых случаях. Чтобы избежать этой проблемы, можно использовать символ пробела нулевой ширины () в начале поля.
у меня недостаточно репутации, чтобы комментировать или голосовать, но ответ Рапосо работал очень хорошо для меня. Наша система импортирует отчеты SSRS и запускает их в локальном режиме. Он хранит запрос(ы) набора данных в базе данных и извлекает их во время выполнения. Однако для экспорта Excel он просто запускает результирующие данные запроса в объект DataGrid и записывает это непосредственно в поток как HTML, устанавливая расширение.формате xls. Включение решения Raposo в запрос набора данных отчета:
SELECT someColumn = '​' + someColumn
FROM, etc.
и удаление его в выражении поля SSRS:
=Replace(Fields!someColumn.Value, "​", "")
это единственное, что я нашел, что работает. Спасибо!
Я нашел пять решений для этой проблемы:
отформатируйте поле как текст, как описано scunliffe. Это имеет проблему зеленого треугольника, как заявил Рапозо.
Используйте, как описано Raposo. Это имеет проблему, что значение на самом деле не является числом. Это может быть проблемой, если данные втягиваются в некоторую систему для обработки.
-
добавить TD как
= " 067 " . Это имеет ту же проблему, что и #2. -
добавить TD как
=text (067,"000") . Это также имеет ту же проблему, что и #2. используйте класс CSS .text3 {mso-number-format: "000";} и добавьте этот класс в TD. Это мое предпочтительное решение, но у него есть проблема, требующая нескольких классов, если у вас есть номера разной длины. Если вы пишете заголовок, а затем перебираете данные, вам нужно добавить все возможные классы, прежде чем знать, какой из них вам понадобится. Но у этого есть преимущества, что текст действительно является числом, и нет зеленого треугольника.
превосходное решение! Я сделал это, как ниже
HttpContext.Current.Response.Write("<style> .txt " + "\r\n" + " {mso-style-parent:style0;mso-number-format:\"" + @"\@" + "\"" + ";} " + "\r\n" + "</style>");
HttpContext.Current.Response.Write("<Td class='txt'>​");
HttpContext.Current.Response.Write(Coltext);
HttpContext.Current.Response.Write("</Td>");
и она отлично работает для меня
вы также можете решить эту проблему, добавив неразрывный пробел:
перед значением <td>
элемент.
Образец:
<td> 0:12:12.185</td>
вместо:
<td>0:12:12.185</td>