如何导出到excel格式没有指数


How to export into excel formate without exponents

我使用Ajax Web Table来显示数据库/表中显示的数据。当我把我的文件导出到excel电子表格字段后,一定长度显示为xxE+XX。因此,例如,如果我有一个字段的值为123456789导出时,我将得到12.34E+9。

有办法绕过这个吗?

我的代码如下

else if(isset($_GET['export']))
    {
session_start();
        ob_start();
        $this->mysqlConnect();
        header("Content-type: application/vnd.ms-excel"); 
        header("Content-Disposition: attachment; filename=report.xls"); 
        header("Pragma: no-cache"); 
        header("Expires: 0"); 
        $select = "SELECT * FROM customers"; 
        $export = mysql_query($select); 
        $count = mysql_num_fields($export); 
        for ($i = 0; $i < $count; $i++) { 
        $header .= mysql_field_name($export, $i)."'t"; 
        } 
        while($row = mysql_fetch_row($export)) { 
        $line = ''; 
        foreach($row as $value) { 
        if ((!isset($value)) OR ($value == "")) { 
        $value = "'t"; 
        } else { 
        $value = str_replace('"', '""', $value); 
        $value = '"' . $value . '"' . "'t"; 
        } 
        $line .= $value; 
        } 
        $data .= trim($line)."'n"; 
        } 
        $data = str_replace("'r", "", $data); 
        if ($data == "") { 
        $data = "'n(0) Records Found!'n"; 
        } 
        print "$header'n$data";        
            exit();

非常感谢所有的帮助和反馈!

编辑phpMyAdmin在选择"csv"或"excel"格式时有同样的问题。但是当导出为MS-Excel 2000时,它解决了这个问题。有人知道输出的区别吗?

我还没有测试过,但我认为可以通过将数字指定为字符串值来防止这种情况。=符号应该让excel知道该值是一个"公式",它是一个字符串,如下所示:

$value = '="12345678901234567890"';

使用字符串值是我所知道的绕过指数表示法的唯一方法,因为Excel出于显示原因更喜欢缩短大数字。您可以看到,实际值保持不变,并且可以在选择单元格时在公式栏中查看,即使显示的是指数。

是否将其保存为字符串将打破数值公式/功能是我无法解决的问题。对我来说,仅仅为了避免指数显示而使用字符串似乎是不明智的,因为它只是一个显示。该数值在您的数据中仍然是正确的