导出到Excel正在下降前导零

时间:2012-10-22 09:07:25

标签: php mysql excel

我在网上找到了这个代码,用于从Mysql到Excel的导出表。问题是导出到excel的数据缺少前导零。因此,代替数字090888,我得到90888.除了代码工作正常,所以我想改变这个特定的代码。

如果有人可以帮助我,我会非常感激。

代码:

header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$filename.xls");
header("Pragma: no-cache");
header("Expires: 0");

/*******Start of Formatting for Excel*******/

//define separator (defines columns in excel & tabs in word)

$sep = "\t"; //tabbed character

//start of printing column names as names of MySQL fields

for ($i = 0; $i < mysql_num_fields($result); $i++) {

echo mysql_field_name($result,$i) . "\t";

}

print("\n");

//end of printing column names

//start while loop to get data

    while($row = mysql_fetch_row($result))
    {
        $schema_insert = "";

        for($j=0; $j<mysql_num_fields($result);$j++)

        {

            if(!isset($row[$j]))

                $schema_insert .= "NULL".$sep;

            elseif ($row[$j] != "")

                $schema_insert .= "$row[$j]".$sep;

            else

                $schema_insert .= "".$sep;

        }

        $schema_insert = str_replace($sep."$", "", $schema_insert);

 $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);

        $schema_insert .= "\t";

        print(trim($schema_insert));

        print "\n";
    }
?>

3 个答案:

答案 0 :(得分:0)

当您将其打印到Excel工作表中时,请在数字前加一个引号。 这将强制将它们视为文本,而不是数字数据。

例如,打印'090888而不是090888,这会强制它将其视为字符串(但不会在Excel中显示'

另一种方法是调整格式,但我不认为在上述情况下这是可能的。

答案 1 :(得分:0)

创建XLS时,不能为整数添加“0”。因为列的格式仅在您创建的Excel中是整数。所以我们需要改变列的格式。为此,您可以使用此包PHPEXCEL来创建Excel。

你也可以参考这篇文章:

https://stackoverflow.com/a/3269351/1638375

答案 2 :(得分:0)

使用PHPEXCEL后,使用如下:

$objPHPExcel->getActiveSheet()
    ->setCellValueExplicit("$row[$j]", "value" ,PHPExcel_Cell_DataType::TYPE_STRING);