2012-09-28 66 views
0

我有一個現有的表單,我需要直接從MySQL數據庫填充字段。從MySQL數據庫填充Excel表單字段

我的老闆希望我們的客戶的個人資料稅計算被自動輸入到Excel表格中。

對此有何建議?

在此先感謝...

BTW,使用PHP

回答

1

第二個編輯:

<?php 

    function connect_db($db_name) { 

     $con = mysql_connect('localhost', 'db_user', 'db_pass'); 
     $seldb = mysql_select_db($db_name); 

     if($con && $seldb) { 

      return true; 

     } 
     else { 

      return false; 

     } 

    } 

    function get_data_from_mysql() { 

     $data_query = "SELECT date, new_users, old_users, income FROM stats ORDER BY date DESC LIMIT 30"; 

     $data_mysql = mysql_query($data_query); 

     $data_finished = array(); 
     while($data_fetch = mysql_fetch_assoc($data_mysql)) { 

      $data_finished[] = $data_fetch; 

     } 

     return $data_finished; 

    } 

    function print_to_xls($filename, $data_from_mysql) { 

     $file = "xls_archive/" . $filename . ".xls"; 
     $file_abs_path = "http://www.yoursite.com/xls_archive/" . $file; 
     $content = "date\t new users\t old users\t income\n";; 

     foreach($data_from_mysql as $data) { 

      $content .= $data['date'] . "\t " . $data['new_users'] . "\t " . $data['old_users'] . "\t " . $data['income'] . "\n"; 

     } 

     $saving_file = $file; 
     $fo = fopen($saving_file, 'w') or die("can't open file"); 
     $data_to_write = $content; 
     fwrite($fo, $data_to_write); 
     fclose($fo); 

     header("Content-type: application/ms-excel"); 
     header("Content-Transfer-Encoding: Binary"); 
     header("Content-Disposition: attachment; filename=" . $file); 

     readfile($file_abs_path); 

    } 

    $connect_to_db = connect_db("db_name"); 

    if ($connect_to_db) { 

     $data_to_print = get_data_from_mysql(); 

     $today = date("Y_m_d"); 
     $filename = "dailyreport_" . $today; 

     print_to_xls($filename, $data_to_print); 

    } 
    else { 

     print "ERROR"; 

    } 

?> 

以上代碼會產生從MySQL數據庫生成的文件一個.xls 。
*代碼沒有測試,但我認爲它完美的作品...

先編輯:

你也可以做到這一點的手,通過表格的形式打包數據,並更改標題到Excel的像這樣的:

$file ="dailyreport.xls"; 
$content = "data1 \t data2 \t data3 \t \n"; 

header("Content-type: application/ms-excel"); 
header("Content-Disposition: attachment; filename=" . $file); 

print $content; 

這段代碼(後產生),提示用戶下載文件「dailyreport.xls」

你也可以試試這個PHP庫產生XLS文件:
http://phpexcel.codeplex.com/

+0

很好的回答,你也可以使用'$內容=「

​​數據1 ...'等 – chim

+0

我可以知道哪些文件,我應該補充你這個代碼?它是否在index.php? –

+0

這對你來說更是一個問題:)你如何組織你的代碼......如果你希望我幫助你,請更具體地說明什麼是用PHP生成xls所需的過程。 .. – Develoger

0

那麼你可以使用PHP來從MySQL中獲取數據,但顯示在Excel中了可以以多種方式來完成,讓我們假設你有會跟MySQL和獲取所需的數據和程序的以XML格式。

現在你可以做一個Export to excel,理想情況下你在這裏做的是改變application/vnd.ms-excel的響應類型,並以表格格式格式化數據,這樣excel會將它視爲行和列。

好了以上是一種方式,還有很多其他的方法,你可以在後端生成excel併爲用戶提供一個鏈接,或者你可以將數據公開爲服務並編寫一個excel插件來讀取來自您的服務的數據

+0

這很簡單,你不需要一個excel對象,你需要通過php建立一個表格格式,並將響應內容類型設置爲excel,它會提示用戶下載excel文件 –

+0

請在某處上傳截圖,我是從移動的評論,所以不能看到zip文件 –

+0

和一個投票將有助於 –

0

將整個表單創建爲不含表單字段的html表單,然後將內容作爲Excel電子表單創建。

這個答案提供了更多的細節

HTML table to excel - PHP

你會得到一個安全警告每次打開電子表格的時間,但你是誰創造了它的一個,它是供內部使用,你可以忽略安全警告。

警告會說類似...

"The file you are trying to open, '[filename]', is in a different format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file?"

另見What's XLSHTML?

+0

我被他人建議使用fpdf,將創建一個使用pdf格式的模板,這是我可以添加字段來創建一個php表單的時間。 –

+0

如果要輸出到xls,那麼每個單元格實際上都是輸入字段,因爲您可以使用電子表格中的計算值並在電子表格中更改它們。你想在你的電子表格中使用「表單控件」嗎? – chim