ASP.NET CSV响应,Excel指数格式问题

时间:2010-01-06 03:53:57

标签: asp.net excel csv exponentiation

在我的ASP.NET应用程序中,我需要将DataTable写为CSV响应给客户。一切都工作得很好,除了一个有数字的列。

例如:7002136138603600000

但是当我在Excel中打开CSV时,它以指数格式显示。

像这样:7E + 18

请您告诉我需要做些什么才能将这些值显示为测试而不是指数格式?

谢谢, 马赫什

5 个答案:

答案 0 :(得分:1)

您无法使用CSV执行此操作。尝试使用Excel。在单元格中创建一个值为“7002136138603600000”的电子表格,前面加上单引号(')表示它是文本。 Excel将正确显示完整的数字。将其另存为CSV。刷新。该数字将以指数格式显示。

或者您可以使用HTML。将命名空间xmlns:x =“urn:schemas-microsoft-com:office:excel”添加到您的html根目录,并将此属性添加到您的td元素。

x:str="'7002136138603600000"

Excel会将其显示为文本。有关更完整的示例,请像我提到的那样创建Excel文档并另存为html。

如果您知道客户使用的是Excel 2003或更新版本,也可以使用XML。

答案 1 :(得分:1)

关于CSV数字格式,请点击此处: http://support.microsoft.com/kb/214233


我确实多次导出到Excel。只需使用HtmlTextWriter将Gridview的输出写入String Builder即可发送响应。

你可以找到两个这样做的例子:

更多搜索结果:http://www.google.com/search?q=export+gridview+to+excel

所以,我认为最简单的方法是绑定到GridView并像其他示例一样将其写为HTML,除非您出于其他原因需要CSV。

答案 2 :(得分:0)

在文本编辑器中打开文件,您可能会发现这些数字正确导出。对于某些长数字,Excel只是默认为指数格式。

答案 3 :(得分:0)

它必须是CSV吗?如果是这样,那么你几乎要坚持使用Excel中的默认行为。

如果它不必是CSV,那么请查看Excel XML格式,这样可以更好地控制显示格式(可以在XML文件字符串中完成Excel中可以完成的任何操作)。当然,这仅在Office 2003及更高版本中受支持。

答案 4 :(得分:-1)

当数字全部为数字时,轻松添加asc char 32,使用函数查明数字是否全部为数字,如果为真,则简单地将asi 32添加到数字中(如果需要,转换为字符串)。 在microsoft excel 2007和Windows 7上测试过的csv文件,它工作正常,不确定早期版本。