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

neekobn8  于 2023-03-04  发布在  .NET
关注(0)|答案(5)|浏览(130)

在我的ASP.NET应用程序中,我需要编写DataTable作为对客户的CSV响应。除了一列包含数字之外,一切都正常。
例如:7002136138603600000
但是当我在Excel中打开CSV时,它是以指数格式显示的。
大概是这样的7E +18
你能让我知道需要做些什么,以显示这些值作为测试,而不是在指数格式?
谢谢马赫什

q1qsirdb

q1qsirdb1#

关于CSV数字格式,请检查此处:http://support.microsoft.com/kb/214233
我确实导出到Excel很多次了。只需使用HtmlTextWriter将网格视图的输出写到字符串构建器中,发送响应即可。
您可以找到两个这样做的示例:

更多搜索结果:http://www.google.com/search?q=export+gridview+to+excel
因此,我认为最简单的方法是绑定到GridView并将其编写为HTML,如其他示例所示,除非您也出于其他原因需要CSV。

uoifb46i

uoifb46i2#

您无法使用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。

mbyulnm0

mbyulnm03#

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

k3bvogb1

k3bvogb14#

它必须是CSV吗?如果是这样,那么你几乎被Excel的默认行为卡住了。
如果不一定是CSV,那么请查看Excel XML格式,这将给予您能够更好地控制显示格式(在Excel中可以执行的任何操作都可以在XML文件字符串中执行)。当然,只有Office 2003及更高版本支持此功能。

cunj1qz1

cunj1qz15#

当数字都是数字时,它很容易添加asc char 32,使用一个函数来找出数字是否都是数字,如果是真的,然后简单地将asi 32添加到数字中(如果需要,转换为字符串)。在microsoft excel 2007和windows 7上测试csv文件,它工作正常,不确定早期版本。

相关问题