ASP.NET的Excel单元格格式

时间:2008-12-07 14:36:58

标签: asp.net excel

我有问题。其中一个数据表colums值是一个字符串值'001200'。当Excel文档创建时,该值变为'1200'。如何保持数据格式?我正在使用ASP.NET 1.1。

代码的一部分是:

private void lnkExport_Click( object sender, System.EventArgs e ) 
{

Response.Clear();

Response.Buffer= true;

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

Response.AddHeader( "Content-Disposition", "attachment; filename=" + "CartsList.xls" );

Response.Charset = "iso-8859-8";

Response.Cache.SetCacheability( HttpCacheability.Public );

Response.ContentEncoding = System.Text.Encoding.UTF7;

this.EnableViewState = false;

System.IO.StringWriter oStringWriter = new System.IO.StringWriter();

System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter( oStringWriter );

this.ClearControls( dtgCarts );

dtgCarts.RenderControl( oHtmlTextWriter );

Response.Write( oStringWriter.ToString() );

Response.End();

}

谢谢

8 个答案:

答案 0 :(得分:4)

在开头添加撇号(单引号) - 应该修复它。它强制Excel将单元格视为文本而不是数字。

编辑:只是为了清楚 - 撇号是Excel的内置功能,而不仅仅是我选择的随机字符。似乎无法找到它的链接。

答案 1 :(得分:1)

您是否尝试过在Excel中重新格式化单元格?可能只是Excel选择了不同的格式(整数而不是字符串)。

Here is an article来自.Net的Excel格式。

答案 2 :(得分:1)

This link对您的问题有完整的答案。本文使用与您使用完全相同的技术将html渲染为excel。

诀窍是使用excel css属性

<style> .text { mso-number-format:\@; } </style> 

[编辑]
One more link有类似问题。 (它在冷融合中但可以使用CSS应用部分)

答案 3 :(得分:0)

在导出到excel时,您是否可以在任何需要保留为带有单引号的数字之前,例如

'001200

这应该保留为文本

答案 4 :(得分:0)

我碰到了与你的问题类似的东西,但在另一个方向。

这是Excel 2007文件的扩展属性设置 “扩展属性='Excel 12.0 Xml; HDR = YES; IMEX = 1;'”;

您可能还希望使用要使用的数据格式编写虚拟记录。在Excel中将某些内容声明为文本并不一定按照您希望的方式转换数据。

幕后有些东西会自动设置传输过程中使用的数据类型。系统使用前8个记录来确定这一点。如果你想要字符串值,用任何文本缓冲列,如果你需要更长的时间,我认为你需要用512+字符的文本缓冲它。

顺便说一句 - 我在找到系统秘密覆盖你以编程方式设置的内容之前尝试了上述大部分建议。

答案 5 :(得分:0)

如果您可以更改单元格值并且它不是公式的一部分,请尝试将数字更改为字母,例如: 001200 - &gt; OO12OO:)

答案 6 :(得分:0)

几个月前我遇到过类似的问题,我放弃了Excel ...我建议你使用 Excel Jet Cell .NET component

它有一个有一些大小限制的免费版本。看看Excel C# sample

// Open template
string xlfile = @"d:\prj\HrePro.xlsx";
ExcelWorkbook Wbook = ExcelWorkbook.ReadXLSX(xlfile);
ExcelCellCollection Cells = Wbook.Worksheets.Add("Sheet1").Cells;

// Save values and excel file
Cells["b2"].Value = "001";
Cells["b2"].Style.StringFormat = DefinedFormats.Textual;

Wbook.WriteXLSX(@"d:\prj\HReport.xlsx");

答案 7 :(得分:0)

之前再添加一行
  

回复于( “

 td { mso-number-format:\@; } 
”);

这么简单