HTML в Excel: как заставить Excel обрабатывать столбцы как числа?

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

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

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

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


person Community    schedule 09.12.2008    source источник


Ответы (7)


Если вы добавите класс 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.

person scunliffe    schedule 09.12.2008
comment
дополнительные параметры форматирования: netdominus.co.uk/knowledgebase/ mod/resource/view.php?id=182 \@ для текста пригодился - person roman m; 01.04.2009
comment
Ссылка мертва. Попробуйте cosicimiento.blogspot.com/2008/11. / вместо этого - person Aaron Digulla; 22.07.2009

Вот список форматов Excel: Стили ячеек Excel с числовым форматом mso

person Aaron Digulla    schedule 22.07.2009

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

Держите его как можно проще, только минимум строк и т. д.

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

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

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

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

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

person BlackMael    schedule 09.12.2008

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

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

Для вас это было бы так

  mso-number-format:General
person Mayank Pathak    schedule 03.10.2012

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

<td x:num>123</td>

person Andy Castles    schedule 22.07.2015

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

person Community    schedule 10.12.2008
comment
какой ответ был решением для вас? (кроме удаления неразрывных пробелов) или это была единственная проблема? - person scunliffe; 10.12.2008

mso-number-format:0         NO Decimals
mso-number-format:"\#\,\#\#0\.000" 3 Decimals 
mso-number-format:"mm\/dd\/yy" Thousand comma with 3 decimals  
mso-number-format:"mmmm\\ d\\\,\\ yyyy" Date7 
mso-number-format:"m\/d\/yy\\ h\:mm\\ AM\/PM" Date9 

Текстовая колонка

"<td style=\"mso-number-format:'\@'\">"

or

<td style="mso-number-format:'\@'">
person ElayaRaja Sambasivam    schedule 09.08.2020