2009-07-30 80 views
4

我正在通过更改内容类型来创建Excel报告。如何在导出为ex​​cel时显示前导零?

Response.ContentType = "application/vnd.ms-excel" 

我有值包含前导零。问题在于导出为ex​​cel时,前导零缺失。

例如

00- > 123

我知道这可以通过excel手动更改。问题是我如何以编程方式完成此任务?

回答

5

导出application/vnd.ms-excel为一个HTML表格,它使您可以访问各种工作表格式化选项:

用途:

Response.ContentType = "application/vnd.ms-excel"; 
Response.AddHeader("content-disposition", "attachment; filename=" + fileName); 

并发送如下内容:

<table border="1"> 
<caption>This is a caption, it appears centered across all columns</caption> 
<colgroup> 
<col width="100"> 
<col width="200"> 
</colgroup> 
<tr valign="bottom"> 
<td><b>Header 1</b></td> 
<td filter="all"><b>Header 2 (filterable)</b></td> 
</tr> 
<tr valign="top"> 
<td style="vnd.ms-excel.numberformat:$#,##0.00_)[semicolon]($#,##0.00)">1</td> 
<td style="vnd.ms-excel.numberformat:00000000">2</td> 
</tr> 
<tr valign="top"> 
<td style="vnd.ms-excel.numberformat:$#,##0_)[semicolon]($#,##0)">3</td> 
<td style="vnd.ms-excel.numberformat:00000000">4</td> 
</tr> 
<tr valign="top"> 
<td style="vnd.ms-excel.numberformat:$#,##0.00_)[semicolon]($#,##0.00)">-5</td> 
<td style="vnd.ms-excel.numberformat:00000000">2</td> 
</tr> 
<tr valign="top"> 
<td style="vnd.ms-excel.numberformat:$#,##0.00_)[semicolon][red]$#,##0.00">-7</td> 
<td style="vnd.ms-excel.numberformat:00000000">8</td> 
</tr> 
<tr valign="bottom"> 
<td formula="=sum(a2:a5)" style="vnd.ms-excel.numberformat:$#,##0.00_)[semicolon][red]$#,##0.00"></td> 
<td formula="=average(b2:b5)" style="vnd.ms-excel.numberformat:00000000"></td> 
</tr> 
</table> 

。注意,通过使用HTML表格的语法可以添加column AutoFilter,指定纵行对准,控制列的宽度,与<colspan>(未示出)中,添加formulas和指定列的数据的格式与结合柱vnd.ms-excel.numberformat。你甚至可以做Crosstab (PivotTables)(未显示)。

我有一个链接到更全面的文档有关什么HTML标签和属性支持,他们做什么,但我似乎错了。如果其他人有与此有关的Microsoft文档的良好链接,请随时致电edit my answer或发表评论。

编辑:看来你可以做a lot more with HTML/XML构建复杂的Excel工作表。我从来没有去过这么长的时间,但知道什么是可能的,这很有趣。

+0

谢谢你。虽然我的回答服务于我的目的,但这绝对是正确的方式。 – Tesseract 2009-07-31 14:03:15

0

以领先的'(撇号)导出该列。

+0

这不是最好的解决方案,因为列中包含撇号。 – Tesseract 2009-07-30 19:50:28