HTML to Excel:如何告诉Excel将列视为数字?

HTML to Excel: How can tell Excel to treat columns as numbers?

在Excel (Response.contentType="application/vnd.ms-excel")中打开HTML时,我需要实现以下内容:

  • 强制Excel将td单元格的内容视为数字
  • 进行上述操作,以便任何后续用户输入的公式都可以在这些单元格上工作(打开电子表格时)

到目前为止,我已经成功地将style="vnd.ms-excel.numberformat:0.00"添加到有问题的td单元中。当我在Excel中右键单击它们时,单元格的内容正确显示为数字,但是公式不起作用。

如果成功,该技术将非常有用,因为用户可以根据自定义要求使用适当的公式来增强任何Web Excel报告。预先感谢。


如果将CSS类添加到页面:

1
2
3
4
5
6
.num {
  mso-number-format:General;
}
.date {
  mso-number-format:"Short Date";
}

然后将这些类拍到TD上,行得通吗?

1
2
3
<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中的其他格式选项。


这是Excel格式的列表:使用mso-number-format

设置Excel单元格的样式


最好的技巧是使用所需的所有颜色/(条件)格式/公式来模拟Excel电子表格。

使它尽可能简单,仅保留最小的行等。

然后将Excel电子表格"另存为Xml电子表格"

然后您有一个模板,可以通过Xml构建电子表格。

我通常会清理从Excel工作簿保存的原始Xml中的样式。删除重复项并重命名。

然后只需填充您拥有的任何数据源即可。

我不知道您要编码到什么环境,但是在带有LINQ和Xml Literals的VB.NET中,这是一个非常简单的任务。


如果您使用css class将其添加,则有时不起作用,在这种情况下,请尝试在Style中将其使用到TD中。我这样做是为了将列格式化为文本。像这样

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

对您而言,应为

1
  mso-number-format:General

此页面上的任何答案都无法在Excel 2010中使用。我最终使用了此答案。

1
<td x:num>123</td>


更新:您还需要从td包含数字或货币信息的单元格中删除不间断空格(nbsp),以使公式在Excel中的这些单元格上起作用。这样就解决了问题。


1
2
3
4
5
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

文本列

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

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