【问题标题】:ASP.NET CSV Response, Excel Exponential Format IssueASP.NET CSV 响应,Excel 指数格式问题
【发布时间】:2011-01-01 22:09:18
【问题描述】:

在我的 ASP.NET 应用程序中,我需要将 DataTable 编写为对客户的 CSV 响应。除了有数字的列之外,一切正常。

例如:7002136138603600000

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

类似这样的:7E+18

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

谢谢, 马赫什

【问题讨论】:

    标签: asp.net excel csv exponentiation


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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


      我确实多次导出到 Excel。只需使用 HtmlTextWriter 将 Gridview 的输出写入字符串生成器即可发送响应。

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

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

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

      【讨论】:

        【解决方案3】:

        你不能用 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。

        【讨论】:

          【解决方案4】:

          必须是 CSV 吗?如果是这样,那么您几乎会被 Excel 的默认行为所困扰。

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

            • 因为,这会在客户屏幕中打开,默认情况下 CSV 将在 Excel 中打开。因此,要求客户在记事本中打开它有点困难。有没有其他解决方法??
            • 尝试将其导出为字符串 - 在 Excel 中看起来仍然可以
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-01-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多