将数字转换为文本时导出为Excel

我在网格视图中显示我的数据(以逗号分隔的数字),并根据需要发生。 但是,当我将其导出为ex​​cel时,则会根据显示来更改值

例如我的数值是901155465,978785496,987458986那么看来是901,155,465,978,785,496,987,458,986

这就是我将数据集传递给excel的方式。 我知道我们也可以呈现HTML,但我只需要传输数据。

GridView GridView1 = new GridView(); GridView1.DataSource = myDataSet; GridView1.DataBind(); string style = @" .text { mso-number-format:\@; } "; Response.Clear(); Response.AddHeader("content-disposition", "attachment;filename=Report.xls"); Response.Charset = ""; Response.Cache.SetCacheability(HttpCacheability.NoCache); esponse.ContentType = "application/vnd.ms-excel"; System.IO.StringWriter s_Write = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter h_write = new HtmlTextWriter(s_Write); GridView1.ShowHeader = true; GridView1.RenderControl(h_write); Response.Write(style); Response.Write(s_Write.ToString()); Response.End(); 

看起来excel是将数字视为一个数字,并在适当的地方添加逗号。

是否有任何解决scheme来显示gridview中显示的数据。

提前致谢

尝试这个:

 _worksheet.Cells[1, 1] = "=\"" + YOUR_VALUE + "\""; 

这就是我如何使用Interop.Excel

Excel会忽略(=),因为它开始一个公式,双引号将告诉Excel使用该值作为一个string。

你也可以尝试导出excel样式表:

 mso-number-format:"0" NO Decimals 

http://cosicimiento.blogspot.fr/2008/11/styling-excel-cells-with-mso-number.html

因此,您需要将其写入Response

 // ... string style = @"<style> td { mso-number-format:"0"; } </style> "; // Style is added dynamically Response.Write(style); Response.Write(s_Write.ToString()); // ... 

试试这个工作正常

for(int i = 0; i <gvExportExcel.Rows.Count; i ++)gvExportExcel.Rows [i] .Cells [0] .Attributes.Add(“style”,“mso-number-format:\ @”);

这个问题困扰了我一年,这帮助了我。 我尝试了很多解决schemestackoverflow.com,但它没有帮助。 希望这有助于某人

 Dim formatRange As Excel.Range formatRange = xlWorkSheet.Range("a1", "b1") formatRange.NumberFormat = "@" 

将数据放在单元格A1中

 xlWorkSheet.Cells(1, 1) = "098" 

或者如果你是从datagridview复制

 xlWorkSheet.PasteSpecial("Text", False, False, Type.Missing, Type.Missing, Type.Missing, True) 

http://vb.net-informations.com/excel-2007/vb.net_excel_page_format.htm祝你好运&#x3002;