2013-10-24 56 views
0

如何從PHP腳本中將SQLite文件導出爲Excel?將SQLite數據庫導出到PHP的Excel中

我目前出口的表和數據,只是普通的HTML表格,用下面的代碼:

$dbh = new PDO('sqlite:' . $path . "/" . $lang . "/" . $dbname . ".sqlite"); 

$sql = "SELECT tbl_name FROM sqlite_master WHERE type='table';"; 

$stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL)); 
$stmt->execute(); 

while ($row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) { 
    $sql = "SELECT * FROM " . $row['tbl_name']; 
    $sub_stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR, PDO::CURSOR_SCROLL)); 

    $sub_stmt->execute(); 

    echo "<br><br><table border=1><thead>". $row['tbl_name'] ."</thead><tbody>"; 
    while ($sub_row = $sub_stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) { 
    foreach ($sub_row as $key => $value) { 
     $titles .= "<td>" . $key . "</td>"; 
     $sub_row_table[] = "<td>" . $sub_row[$key] . "</td>"; 
    } 

    if(!$titlesPrinted) { 
     echo "<tr>" . $titles . "</tr>"; 
     $titlesPrinted = true; 
    } 

    echo "<tr>"; 
    foreach($sub_row_table as $value) { 
     echo $value; 
    } 

    echo "</tr>"; 
    } 
    echo "</tbody></table>"; 
} 

$dbh = null; 

但是,如果SQLite表有很多數據的不工作的偉大,頁面需要同時加載一切。理想情況下,我更願意創建鏈接來下載Excel工作表(或者可能將所有工作表全部導出到一個Excel工作簿文件中),或者至少鏈接到彈出/顯示錶格而不是使用大量表格的資源迴應用戶的屏幕。

編輯:
忘了提,我的sqlite的數據包含使用一些列的HTML和大量數據的使用口音,如:E,E,E,A,A等

+0

您是否考慮過使用PHPExcel? http://phpexcel.codeplex.com/ – Trace

+1

嗯有趣,將看看PHPExcel,謝謝@KimGysen – dan2k3k4

+0

嘿@KimGysen,我能夠得到它所有的PHPExcel的工作,你可以寫你的評論作爲答案,所以我可以標記這封閉? :) – dan2k3k4

回答

0

我認爲,你真正想要做的是創建一個CSV文件。有在PHP編寫這類文件的特定功能,這裏是鏈接: fputscsv function

,你可以在函數的文檔中看到,該函數處理一個包含不同區域和分離器的陣列,我貼你,我認爲例子的代碼是很清楚的:

<?php 

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'), 
    array('123', '456', '789'), 
    array('"aaa"', '"bbb"') 
); 

$fp = fopen('file.csv', 'w'); 

foreach ($list as $fields) { 
    fputcsv($fp, $fields); 
} 

fclose($fp); 
?> 

的例子(在這種情況下上FILE.CSV)輸出:

aaa,bbb,ccc,dddd 
123,456,789 
"""aaa""","""bbb""" 

Excel會自動打開CSV文件闡釋一個規範(我認爲這取決於區域配置,這可能是不同的,例如);你應該檢查這個以便使用適當的分隔符。

我希望這會有所幫助。

+0

我忘了提及我的sqlite數據包含一些使用HTML的列,並且大量數據使用如下重音符號:è,é,ê,à,ä等 – dan2k3k4