2015-06-22 49 views
1

如果这是一个重复的,请让我知道,我还没有发现任何东西。时间戳SQL到Excel

我写了一个PHP文件,可以从数据库中读取表的内容,并将其写入到一个excel文件.xls。 除了那个时间戳以外,一切正常。在我生成的.xls文件中,每个时间戳都被替换为#######以及一些电话号码。以上是截图enter image description here

我可能猜想它与冒号:或连字符-有关,但我无法弄清楚。

这里是我的代码:

<?php 
/*******EDIT LINES 3-8*******/ 
$DB_Server = "localhost"; //MySQL Server  
$DB_Username = "xxxxxx"; //MySQL Username  
$DB_Password = "xxxxxx";    //MySQL Password  
$DB_DBName = "xxxxxx";   //MySQL Database Name 
$DB_TBLName = "xxxxxx"; //MySQL Table Name 
$filename = "downloaded_table";   //File Name 
//create MySQL connection 

$sql = "Select * from $DB_TBLName"; //Modify query here 

/*******YOU DO NOT NEED TO EDIT ANYTHING BELOW THIS LINE*******/  
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno()); 
//select database 
$Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno()); 
//execute query 
$result = @mysql_query($sql,$Connect) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());  
$file_ending = "xls"; 
//header info for browser 
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"; 
    } 
?> 

请帮

+0

请停止使用旧的,不赞成使用的MySQL接口,并开始使用MySQLi或PDO –

+0

这个脚本是前一段时间,在我使用MySQLi的所有现代项目中做的@MarkBaker –

回答

1

###### MS Excel中所示,当在单元格中的数据是列宽度过长....里面的数据电池仍然是正确的,因为你可以看到,如果你选择这些小区中的一个,并期待在单元格内容栏中显示的值

当你只创建一个CSV文件,你无法控制的宽度细胞,所以你必须忍受它...除非你想创建一个真正的Excel文件,当你可以明确地设置列宽

+0

谢谢!我觉得自己像个白痴,现在我没有注意到自己大声笑。你会推荐我学习如何创建一个真正的Excel文件的任何文档? –

+1

作为首席开发人员和协调员,我在[PHPExcel](https://github.com/PHPOffice/PHPExcel)中拥有既得利益 –