【问题标题】:Export From PHP to CSV: Amounts with dollar sign being taken as text从 PHP 导出到 CSV:将带有美元符号的金额作为文本
【发布时间】:2014-07-11 09:42:15
【问题描述】:

我正在尝试使用 php/mysql 导出 CSV,当金额以美元为单位时,金额被视为文本。

是否有一种解决方法可以将这些金额作为数字而不需要从我的 php 程序中进行额外的 excel 格式设置?

编辑:

下面的代码是给定金额的地方。

    switch($currency)
    {
                            case 'Eur':
                                $symbol=iconv("UTF-8", "cp1252", "€");
                                break;
                            case 'USD':
                                //$symbol=chr(36);//"$";                            
                                $symbol=iconv("UTF-8", "cp1252", "$");
                                break;
                            case 'GBP':
                                //$symbol="£";//chr(163)//;
                                $symbol=iconv("UTF-8", "cp1252", "£");
                                break;
                            case 'EUR':
                                $symbol=iconv("UTF-8", "cp1252", "€");
                                break;
  }        
  return  $symbol."".$number;

返回值被馈送到 csv。

显然欧元和英镑工作正常,但我怀疑美元不是因为它具有绝对参考功能。

【问题讨论】:

  • 您当前的代码看起来如何?请将其添加到问题中。此外,还要添加示例数据。金额是“5 美元”还是“5 美元”或其他?
  • $5 代码:$symbol=iconv("UTF-8", "cp1252", "$"); .... return $symbol."".$number;
  • 为什么要转换“$”?看不出有什么需要。
  • 尝试使用单引号,例如:$symbol=iconv("UTF-8", "cp1252", '$');
  • 无效仍显示为文本

标签: php csv export-to-excel export-to-csv


【解决方案1】:

将值转换为文本的是excel。这一切都取决于窗口的区域设置。没有办法解决它。 (据我所知)

例如:当我将标准和格式设置为英语(美国)时,单元格被格式化为货币(单元格值 = 1,以 $ 作为货币),当设置为荷兰语(荷兰)时,单元格被格式化为一般(单元格值 = $1 作为文本)。

【讨论】:

  • 这就是我的想法和恐惧。谢谢!
【解决方案2】:

我真的不建议将格式存储在 CSV 文件中。虽然它可能会导致更多的工作,但如果您存储原始数据,它也会带来更大的灵活性。您始终可以发送原始数据并在之后进行转换。

请记住,CSV 不是 Excel 格式。通过强制您的 CSV 与 Excel 兼容,您甚至可能会给试图将 CSV 导入网络或类似的东西的人造成问题。适用于一个项目(或国家,正如 dn Fer 在他的回答中所示)的格式可能不适用于另一个项目。

我认为一个比“我该怎么做?”更重要的问题。是,“我为什么要这样做?”如果您要提供“对 Excel 友好”的预格式化程序,那么除了未格式化的原始 CSV 文件之外,您还应该提供它。如果您只打算选择一个,让最终用户自己处理格式。替代方案将不可避免地给您带来比其价值更多的问题。

我的建议是让列标题为您解释。如果需要,可以将货币名称甚至符号放在每个列标题的顶部,然后以原始数字形式将总计放在下面。您的最终用户应该可以在他们选择使用任何程序打开它时自行格式化它,并且它不会正确转换的可能性要小得多。

相反,您可以考虑创建一个 XML 文件。如果您希望它以多种文件格式工作,它的功能会更加强大,但它可以让您根据您的想象力/文档/实验/测试进行格式化。如果你选择走这条路,这里有一些我发现的资源:

xml - Foreign currency to Excel xslt (SO) Features and limitations of Excel spreadsheet format

最后,我强烈建议先走 CSV 路线。如果你想让一些东西更健壮,你可以开始开发一些不同的东西。 XML 可能是更好的格式,因为现代电子表格支持某些版本的 XML 标准。权衡是有时间。但归根结底,没有什么是不可能的——就是贵!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多