格式化HTML表格单元格,使Excel格式为文本?
我正在创build一个将在Excel中作为电子表格打开的HTML表格。 什么HTML标签或CSS样式可以用来“告诉”Excel以单元格的内容显示文本?
您可以将格式应用于数字,文字,date等单元格
看到我以前的答案: HTML到Excel:如何告诉Excel将列作为数字处理?
(调整后的片段)
如果你添加一个CSS类到你的页面:
.num { mso-number-format:General; } .text{ mso-number-format:"\@";/*force text*/ }
在你的运输署上打这些class,是否有效?
<td class="num">34</td> <td class="num">17.0</td> <td class="text">067</td>
有一个问题使用该解决scheme(数字格式的CSS样式)。 Excel会给出错误“Number Stored as Text”,这在某些情况下可能不方便。 为了避免这个问题,可以在字段的开头使用零宽度字符(&#8203;)。
我没有足够的代表评论或投票,但Raposo的答案对我来说效果很好。 我们的系统导入SSRS报告并以本地模式运行。 它将DataSet查询存储在数据库中,并在运行时将其提取出来。 但是,对于Excel导出,它只是将查询的结果数据运行到DataGrid对象中,并将其直接写入HTML,并将扩展名设置为.xls。 在报告的DataSet查询中放入Raposo的解决scheme:
SELECT someColumn = '​' + someColumn FROM, etc.
并在SSRS字段的expression式中将其删除:
=Replace(Fields!someColumn.Value, "​", "")
是我发现的唯一的作品。 谢谢!
我发现了这个问题的五个解决scheme:
-
按照scunliffe所述将文本格式设置为文本格式。 这有Raposo所说的绿色三angular形的问题。
-
使用&#8203; 如Raposo所述。 这有一个问题,价值不是一个真正的数字。 这可能是一个问题,如果数据被拉入某些系统进行处理。
-
将TD添加为<td> =“067”</ td>。 这与#2有同样的问题。
-
将TD添加为<td> = text(067,“000”)</ td>。 这也有#2相同的问题。
-
使用.text3 {mso-number-format:“000”;}的CSS类并将此类添加到TD。 这是我的首选解决scheme,但它有问题,如果您有不同长度的数字需要多个类。 如果你编写你的头文件,然后迭代你的数据,你必须添加所有可能的类,然后才知道你将需要哪些类。 但是这样做的优点是文本确实是一个数字,没有绿色的三angular形。
精湛的解决scheme! 我做了如下
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>");
对我来说工作正常
您也可以通过添加不间断的空间来解决问题:
在<td>
元素的值之前。
例如: <td> 0:12:12.185</td>
而不是: <td>0:12:12.185</td>