HTML в Excel: как настроить Excel для обработки столбцов как чисел? - PullRequest
19 голосов
/ 10 декабря 2008

Мне нужно добиться следующего при открытии HTML в Excel (Response.contentType="application/vnd.ms-excel"):

  • заставляет Excel рассматривать содержимое ячеек td как числа
  • сделать так, чтобы любые последующие введенные пользователем формулы работали с этими ячейками (при открытии электронной таблицы)

Пока что мне удалось добавить style="vnd.ms-excel.numberformat:0.00" к рассматриваемым тд-клеткам. Содержимое ячеек правильно отображается в виде чисел, когда я щелкаю их правой кнопкой мыши в Excel, однако формулы не работают.

В случае успеха этот метод был бы весьма полезен, поскольку любой веб-отчет Excel может быть дополнен пользователем соответствующими формулами в соответствии с пользовательскими требованиями. Заранее спасибо.

Ответы [ 6 ]

29 голосов
/ 10 декабря 2008

Если вы добавляете класс CSS на свою страницу:

.num {
  mso-number-format:General;
}
.date {
  mso-number-format:"Short Date";
}

И пощечина тех классов на вашем TD, это работает?

<td class="num">34</td>
<td class="num">17.0</td>
<td class="date">12/17/2008</td> <!-- if you are playing with dates too -->

Обновление: Дополнительные параметры форматирования от @ Aaron.

16 голосов
/ 22 июля 2009
4 голосов
/ 10 декабря 2008

Лучший трюк - это макет электронной таблицы Excel со всеми необходимыми цветами / (условными) форматами / формулами.

Сохраняйте это как можно более простым, только минимальные минимальные строки и т. Д.

Затем сохраните электронную таблицу Excel «Как электронную таблицу Xml»

Тогда у вас есть шаблон для создания электронной таблицы через Xml.

Обычно я очищаю стили в исходном XML-файле, сохраненном из книги Excel. Удаление дубликатов и переименование их.

Тогда это просто вопрос заполнения любым источником данных, который у вас есть.

Я не знаю, в какую среду вы кодируете, но в VB.NET с LINQ и Xml Literals это очень простая задача.

2 голосов
/ 03 октября 2012

Иногда это не работает, если вы добавляете его с помощью css class, в этом случае попробуйте использовать его в Style к вашему TD. Я сделал это для форматирования столбца в текст. как это

 style="mso-number-format:\@;"

Для вас это будет как

  mso-number-format:General
1 голос
/ 22 июля 2015

Я не смог заставить ни один из ответов на этой странице работать в Excel 2010. В итоге я использовал это.

<td x:num>123</td>
0 голосов
/ 10 декабря 2008

ОБНОВЛЕНИЕ: Вам также необходимо удалить неразрывные пробелы (nbsp's) из ячеек td, содержащих числовую или денежную информацию, чтобы формулы работали над этими ячейками в Excel. Так что проблема решена.

...