2012-08-26 48 views
0

我正在輸出tenant將數據從My MySql數據庫導入到Excel電子表格,使用下面的代碼。PHP從MySql轉換爲Excel Spreadsheet Autosize Columns

<?php 
    require_once('../../../includes/config.inc.php'); 

    require_once(MYSQL); 

    $query = "SELECT * FROM tenant";  //Define the SQL query 

    if ($result = $dbc->query($query)) 
    { 
     $file_type = "vnd.ms-excel"; 
     $file_ending = "xls"; 

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

     $seperator = "\t"; //define separator (defines columns in excel) 

     $field_count = $result->field_count; 

     for ($for_count = 1; $for_count < $field_count; $for_count++) //start of printing column names as names of MySQL fields 
     { 
      $result->field_seek($for_count); 

      $field_info = $result->fetch_field(); 

      $field_name = $field_info->name; 

      $field_name_title = str_replace("_", " ", "$field_name"); 

      $field_array[] = $field_name; 

      echo $field_name_title . $seperator; 
     } 

     $result->field_seek(0); 

     print("\n");  //end of printing column names 

     while($row = $result->fetch_assoc()) //start while loop to get data 
     { 
      $schema_insert = ""; 

      for ($col_count = 0; $col_count < $field_count - 1; $col_count++) 
      { 
       $current_field = $field_array[$col_count]; 

       if ($row[$current_field] != "") 
       { 
        $schema_insert .= "$row[$current_field]" . $seperator; 
       } 
       else 
       { 
        $schema_insert .= "" . $seperator; 
       } 
      } 

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

      $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);   //Replaces \n or \r with a space 

      $schema_insert .= "\t"; 

      print(trim($schema_insert)); 

      print "\n"; 
     } 
    } 
?> 

的代碼目前的工作,但我有兩個問題:

1)我想在電子表格中的列自動調整爲創建時的內容的大小。

2)在數據中,有一個Phone字段,其中數字傾向於從0開始。因此,0往往會在數據庫中錯過,我認爲該列需要指定爲String。

有誰知道如何做這些事情?我不想使用PHPExcel,因爲這似乎是一個巨大的過度複雜,只要這是我想要做的。

+0

對於手機中的前導零,您可以用一個'(單引號)來強制您的數據強制excel將其視爲文本文本。 – AllInOne

+0

謝謝,這似乎工作,只有現在我所有的文本都有一個「面前」。 –

+0

抱歉Pippa,try =' – AllInOne

回答

0

在沒有任何答案的情況下,我最終決定只使用PHPExcel類。