HTML в Excel: как можно сказать Excel рассматривать столбцы как числа?
Мне нужно сделать следующее при открытии HTML в Excel (Response.contentType="application/vnd.ms-excel")
:
- заставить Excel рассматривать содержимое ячеек td как числа
- сделайте выше, чтобы любые последующие введенные пользователем формулы работали над этими ячейками (когда электронная таблица открыта)
До сих пор мне удавалось добавить style="vnd.ms-excel.numberformat:0.00"
в соответствующие ячейки td. Содержимое ячеек правильно отображается как цифры, когда я нажимаю на них в Excel, но формулы не работают.
В случае успеха этот метод будет весьма полезен, потому что любой отчет в Excel Excel может быть расширен пользователем с помощью соответствующих формул в соответствии с пользовательскими требованиями. Спасибо заранее.
Ответы
Ответ 1
Если вы добавите класс CSS на свою страницу:
.num {
mso-number-format:General;
}
.date {
mso-number-format:"Short Date";
}
И шлепните эти классы на своих ТД, он работает?
<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.
Ответ 2
Вот список форматов Excel: Стилирование ячеек Excel с mso-number-format
Ответ 3
Лучший трюк состоит в том, чтобы макет электронной таблицы Excel со всеми цветами/(условными) форматами/формулами, которые вам нужны.
Держите его как можно проще, просто минимальные строки и т.д.
Затем сохраните таблицу Excel "Как Xml Spreadsheet"
Затем у вас есть шаблон для создания электронной таблицы через Xml.
Обычно я очищаю стили в исходном Xml, сохраненном из книги Excel. Удаление дубликатов и их переименование.
Тогда это просто вопрос заполнения любым источником данных, который у вас есть.
Я не знаю, какую среду вы кодируете, но в VB.NET с LINQ и Xml Literals это очень простая задача.
Ответ 4
Иногда это не работает, если вы добавляете его с помощью css class
, в этом случае попробуйте использовать его в Style
для своего TD
. Я сделал это для форматирования столбца для текста. как это
style="mso-number-format:\@;"
Для вас это будет как
mso-number-format:General
Ответ 5
Я не мог получить ответы на эту страницу для работы в Excel 2010. Я закончил использовать это.
<td x:num>123</td>
Ответ 6
UPDATE: вам также нужно удалить неразрывные пробелы (nbsp) из ячеек td, содержащих числовую или денежную информацию, чтобы заставить формулы работать с этими ячейками в Excel. Поэтому проблема решена.