我尝试使用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。
显然欧元和英镑正常运作但美元并不怀疑因为它具有绝对参考功能。
答案 0 :(得分:1)
将值转换为文本是很好的。这一切都取决于Windows的区域设置。没有办法绕过它。 (据我所知)
例如:当我将Standard和格式设置为英语(美国)时,单元格被格式化为货币(单元格值= 1,其中$为货币),当设置为荷兰语(荷兰)时,单元格格式为通用(单元格值= $ 1作为文本)。
答案 1 :(得分:0)
我不建议在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标准。权衡是有时间的。但最终,没有什么是不可能的 - 只是昂贵!