从PHP导出为CSV:将美元符号作为文本的金额

时间:2014-07-11 09:42:16

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

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

是否有办法将这些数量作为数字而没有额外的excel格式来自我的php程序?

编辑:

以下代码是金额的各自金额。

    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。

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

2 个答案:

答案 0 :(得分:1)

将值转换为文本是很好的。这一切都取决于Windows的区域设置。没有办法绕过它。 (据我所知)

例如:当我将Standard和格式设置为英语(美国)时,单元格被格式化为货币(单元格值= 1,其中$为货币),当设置为荷兰语(荷兰)时,单元格格式为通用(单元格值= $ 1作为文本)。

答案 1 :(得分:0)

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

请注意,CSV 不是 Excel格式。通过强制您的CSV符合Excel标准,您甚至可能会导致问题,例如,尝试将CS​​V导入网络,或者沿着这些线路进行操作。对于一个项目(或国家,如dn Fer在他的答案中所示)的格式化可能不会以同样的方式对另一个项目起作用。

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

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

相反,您可以考虑创建XML文件。虽然如果您希望它以多种文件格式工作,它将更加强大,但它将允许您根据想象/文档/实验/测试获得的格式进行格式化。如果您选择这条路线,我会找到一些资源:

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

最后,我强烈建议先使用CSV路线。如果你想做一些更强大的东西,你可以开始开发不同的东西。 XML可能是一种更好的格式,因为现代电子表格支持某些版本的XML标准。权衡是有时间的。但最终,没有什么是不可能的 - 只是昂贵!