2

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

例如我的值是 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 将数字视为一个数字并在适当的位置添加逗号。

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

提前致谢

4

5 回答 5

11

尝试这个:

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

这就是我使用 Interop.Excel 的方式

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

于 2012-05-22T08:36:59.850 回答
8

您也可以尝试导出 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());
// ...
于 2012-05-22T09:37:51.650 回答
2

试试这个它工作正常

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

于 2013-12-11T08:28:30.960 回答
0
"\"\t" + value?.ToString() + "\"";

如果您需要转换和导出数字或任何值,任何人都可以使用这行代码。

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

于 2018-04-18T12:35:31.067 回答
0

这个问题困扰了我一年,这对我有帮助。我尝试了许多解决方案 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)

http://vb.net-informations.com/excel-2007/vb.net_excel_page_format.htm 祝你好运。

于 2017-10-02T10:59:35.290 回答