我正在创建一个HTML表格,该表格将在Excel中作为电子表格打开。我可以用什么HTML标签或CSS样式“告诉”Excel将单元格的内容显示为文本?
答案 0 :(得分:99)
您可以将格式应用于单元格中的数字,文本,日期等。
请参阅我之前的回答:HTML to Excel: How can tell Excel to treat columns as numbers?
(已调整的代码段)
如果您在页面中添加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>
答案 1 :(得分:13)
使用该解决方案存在一个问题(带数字格式的css样式)。 Excel给出错误“存储为文本的数字”,这在某些情况下可能不方便。 为了避免这个问题,可以在字段的开头使用ZERO WIDTH SPACE字符(&amp;#8203;)。
答案 2 :(得分:6)
您也可以通过在
元素的值之前添加不间断空格:<td>
来解决问题。
例:
<td> 0:12:12.185</td>
而不是:
<td>0:12:12.185</td>
答案 3 :(得分:3)
我没有足够的代表评论或投票,但Raposo的答案对我来说非常有效。我们的系统导入SSRS报告并以本地模式运行它们。它将DataSet查询存储在数据库中,并在运行时将其拉出。但是对于Excel导出,它只是将查询的结果数据运行到DataGrid对象中,并将其作为HTML直接写入流,将扩展名设置为.xls。将Raposo的解决方案放在报告的DataSet查询中:
SELECT someColumn = '​' + someColumn
FROM, etc.
并在SSRS字段的表达式中删除它:
=Replace(Fields!someColumn.Value, "​", "")
是我发现的唯一有效的东西。谢谢!
答案 4 :(得分:2)
精湛的解决方案!我就像下面那样做了
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>");
它适用于我
答案 5 :(得分:2)
我找到了五个解决这个问题的方法:
将字段格式化为文本,如scunliffe所述。这有Raposo所述的绿色三角形的问题。
使用&amp;#8203;正如Raposo所描述的那样。这有一个问题,价值不是真正的数字。如果将数据拉入某个系统进行处理,这可能是一个问题。
将TD添加为&lt; td&gt; =&#34; 067&#34;&lt; / td&gt;。这与#2具有相同的问题。
将TD添加为&lt; td&gt; = text(067,&#34; 000&#34;)&lt; / td&gt;。这也与#2有相同的问题。
使用CSS类.text3 {mso-number-format:&#34; 000&#34 ;;}并将此类添加到TD。这是我的首选解决方案,但如果您有不同长度的数量,则存在需要多个类的问题。如果您编写标题然后遍历数据,则必须先添加所有可能的类,然后才能知道您需要哪些类。但这样做的好处是文本实际上是一个数字而且没有绿色三角形。
答案 6 :(得分:0)
尝试在您的值前添加单引号:
'
所以您的手机会变成
<td>'007</td>
这是唯一对我有用的解决方案。我的解决方案在“ Open Office”和“ Libre Office”工作过。最好的部分是,如果您复制值,则不会复制单引号。