C# 导出到excel时将数字转换为文本

C# 导出到excel时将数字转换为文本,c#,excel,C#,Excel,我在网格视图中显示我的数据(逗号分隔的数字),并根据需要进行显示。但是,当我将其导出到excel时,该值在显示方面会发生更改 e、 g我的值是9011554659787854969877458986 然后显示为901155465978785496987458986 这就是我将数据集传递到excel的方式。我知道我们也可以呈现HTML,但我只需要传输数据 GridView GridView1=新的GridView(); GridView1.DataSource=myDataSet; GridVi

我在网格视图中显示我的数据(逗号分隔的数字),并根据需要进行显示。但是,当我将其导出到excel时,该值在显示方面会发生更改

e、 g我的值是9011554659787854969877458986 然后显示为901155465978785496987458986

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


GridView GridView1=新的GridView();
GridView1.DataSource=myDataSet;
GridView1.DataBind();
字符串样式=@“。文本{mso编号格式:\@;}”;
Response.Clear();
AddHeader(“内容处置”、“附件;文件名=Report.xls”);
响应。Charset=“”;
Response.Cache.SetCacheability(HttpCacheability.NoCache);
esponse.ContentType=“应用程序/vnd.ms excel”;
System.IO.StringWriter s_Write=新的System.IO.StringWriter();
System.Web.UI.HtmlTextWriter h_write=新的HtmlTextWriter(s_write);
GridView1.ShowHeader=true;
GridView1.RenderControl(h_写入);
回应。写作(风格);
Response.Write(s_Write.ToString());
Response.End();

excel似乎将数字视为一个数字,并在适当的位置添加逗号

是否有任何解决方案可以显示gridview中显示的数据

提前感谢

试试这个:

_worksheet.Cells[1, 1] = "=\"" + YOUR_VALUE + "\"";
这就是我使用Interop.Excel的方法


Excel将忽略(=),因为它启动一个公式,双引号将告诉Excel将该值用作字符串。

您也可以尝试导出Excel样式表:

mso-number-format:"0"   NO Decimals

因此,您需要将其写入
响应

// ...
string style = @"<style> td { mso-number-format:"0"; } </style> ";
// Style is added dynamically
Response.Write(style);
Response.Write(s_Write.ToString());
// ...
/。。。
字符串样式=@“td{mso数字格式:“0”;}”;
//样式是动态添加的
回应。写作(风格);
Response.Write(s_Write.ToString());
// ...
试试这个,效果很好

对于(int i=0;igvExportExcel.Rows[i]。单元格[0]。属性。添加(“样式”,“mso编号格式:\@”)

这个问题困扰了我大约一年,这对我很有帮助。我在stackoverflow.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)
祝你好运

"\"\t" + value?.ToString() + "\"";
任何人都可以使用这行代码,如果您需要转换和导出数字或任何值

就我而言, value=“13291440533000102”;
当我尝试使用StreamWriter导出时,该值以CSV格式正确导出。但在打开.csv文件时,excel将该值视为数字。由于该数字超过16个字符,因此转换为13291440533000100。最后一个字符已更改。我已通过此was解决了此问题。

您如何导出到excel?我正在使用此页面。添加excel的响应编辑您的问题以显示您如何将其导出到excel。您可以编写二进制文件(例如使用EPPlus)或html表(RenderControl the GridView)。这是一个很大的区别。旁注:如果这是一个ASP.NET问题,请相应地标记它。我已经添加了如何将数据传递给Excel的部分。您是否建议我在值(、和引号)中添加额外字符。我无法连接数据中的值。Excel将忽略(=),引号将告诉Excel将该值用作字符串。谢谢Rissa。我尝试了这种解决方案,但对所需的电池没有影响。我使用了下面链接中提到的解决方案
"\"\t" + value?.ToString() + "\"";