PHP fputcsv在excel中显示长整数作为科学记数法

时间:2015-04-20 21:48:03

标签: php csv fputcsv

我有一个简单的脚本,可以将数据从我的数据库输出到CSV文件。

我的问题是,当我导出手机号码时,excel会将它们视为长整数并以科学记数法显示它们。

如果我去格式化单元格并将其更改为数字,它们都可以正常显示。

有没有办法将列设置为整数而不在excel中更改它。

这是我的代码:

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');


$output = fopen('php://output', 'w');


fputcsv($output, array('Book Reference','Company','Type','Site Name', 'Date', 'Time', 'Name', 'Email', 'Mobile', 'Team ID'));

下面是我的while循环中的代码

// THIS IS WHERE I SET VARIABLES

fputcsv($output, array($booking_reference,$company,$type,$site_name,$date,$time,$name,$email,$mobile,$team_id));

4 个答案:

答案 0 :(得分:1)

CSV使用分隔符分隔列数据。特定数据类型没有格式化选项。问题在于Excel自动默认数据类型。手动导入CSV时需要覆盖它。

要执行此操作:对于所有CSV,您可以转到Data -> Get External Data from Text,然后选择Delimited项目符号点,选中My data has headers,点击{{1然后选中Next列下的Comma字段,点击Delimiters,然后 - 这是关键 - 突出显示数据预览中的所有列,然后选择在点击Next之前Text下的Column data format

这将允许所有CSV文件作为文本导入,并解决所有前导和尾随0问题,所有科学记数问题,并确保每个VLOOKUP在与另一个文本字段进行直接比较时匹配。

答案 1 :(得分:1)

我曾经不得不处理这类事情。 虽然它不是很优雅而且不是纯粹的CSV。 我知道强制Excel从csv-source转换值的唯一方法是使用'formula'作为csv-data中的值。

所以......强制excel将这些数字解释为你可以使用的文本:

....,'=“5551212”',...

答案 2 :(得分:0)

为避免科学计数法,必须将单引号添加到要转换为csv的数组的每个值。

此示例在我的情况下有效。

         function insertquote($value) {
            return "'$value'";
        }



        foreach ($list as $ferow) {
            fputcsv($fp, array_map(insertquote, $ferrow), ';');
        }

答案 3 :(得分:0)

我使用“ Ale DC”答案成功,但是更改了“ insertquote”功能。

try:
    element = WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.CLASS_NAME, "btn add"))

except (NoSuchElementException, StaleElementReferenceException):
    driver.refresh()
    element = WebDriverWait(driver, 30).until(EC.element_to_be_clickable((By.CLASS_NAME, "btn add"))