在我的 ASP.NET 应用程序中,我需要将 DataTable 编写为对客户的 CSV 响应。除了有数字的列外,一切正常。
例如:7002136138603600000
但是当我在 Excel 中打开 CSV 时,它以指数格式显示。
像这样的东西:7E+18
您能否让我知道需要做什么才能将这些值显示为测试而不是指数格式?
谢谢, 马赫什
在我的 ASP.NET 应用程序中,我需要将 DataTable 编写为对客户的 CSV 响应。除了有数字的列外,一切正常。
例如:7002136138603600000
但是当我在 Excel 中打开 CSV 时,它以指数格式显示。
像这样的东西:7E+18
您能否让我知道需要做什么才能将这些值显示为测试而不是指数格式?
谢谢, 马赫什
你不能用 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。
关于 CSV 数字格式,请在此处查看:http: //support.microsoft.com/kb/214233
我确实多次导出到 Excel。只需使用 HtmlTextWriter 将 Gridview 的输出写入字符串生成器即可发送响应。
你可以找到两个这样做的例子:
更多搜索结果:http ://www.google.com/search?q=export+gridview+to+excel
所以,我认为最简单的方法是绑定到 GridView 并将其编写为 HTML,就像在其他示例中一样,除非您也出于其他原因需要 CSV。
它必须是 CSV 吗?如果是这样,那么您几乎会被 Excel 的默认行为所困扰。
如果它不必是 CSV,那么查看 Excel XML 格式,它可以让您更好地控制显示格式(可以在 Excel 中完成的任何操作都可以在 XML 文件字符串中完成)。当然,这仅在 Office 2003 及更高版本中受支持。
在文本编辑器中打开文件,您可能会发现数字导出正确。对于一些长数字,Excel 只是默认为指数格式。
当数字都是数字时,它很容易添加 asc char 32,使用函数来确定数字是否都是数字,如果为真,然后简单地将 asi 32 添加到数字(如果需要,转换为字符串)。在 microsoft excel 2007 和 windows 7 上测试了 csv 文件,它工作正常,不确定早期版本。